18

It was my freelancer job at oDesk. I have done several jobs earlier in given time, but is was the first time I missed the deadline. It was a very lengthy job and I tried my best but I still missed the deadline. Now, I am very scared. Because it's my fault that I missed the deadline.

My question is: Is this is a big concern or are missed deadlines common among programming jobs, so I shouldn't worry too much about this?

5 Answers5

44

Yes. Missed deadlines are common in software development.

Many freelancers meet deadlines by incurring in technical debt or hiding the dirt under the rug.

Paraphrasing Frederick Brooks' The Mythical Man Month:

Frederick Brooks, author of The Mythical Man Month

  • Deadlines are often missed because project leaders continue to estimate software tasks the same way they do civil engineering tasks, which is a flawed approach because software is a novel, handicraft industry with no clear body of norms. This is so true that you cannot revoke a programmer's "permit" to code for malpractice, nor you can sue someone for programming without a title.

  • Software development has inherent complexity that other disciplines lack. A big program can have more components than a car, and these components can interact in more, different ways.

  • Software is hard to visualize, so different kinds of diagrams are used to see different aspects of a project, and these aspects may not be orthogonal. Civil engineering, on the other hand, has blueprints allowing you to see plumbing, wiring etc. all in the same chart (or layers) in an orthogonal way.

  • It's not common, after a bridge or building is half built, for the client to completely change the scope of the project. This is often the case in software projects.

  • The state of the art in software development hasn't reached the point where software projects are repeatable and almost risk free. Even the largest software companies like Microsoft can miss deadlines by months or years.

  • Most vaporware is nothing but software projects that were cut because of these kinds of problems.

In conclusion:

Bad estimates and underestimation of complexity, due to the handicraft nature of the software development process, mean it remains an immature discipline.

  • 11
  • Good answer, but having had some exposure to mechanical and civil engineering, it's amusing how programmers make facile comparisons to building bridges and other things, when they haven't the faintest idea how those are built.
  • – Mike Dunlavey Jul 30 '13 at 12:18
  • 3
    I would subscribe to the idea that the software is plan (in terms of plan in engineering - describing every detail of project). In case of engineering the time of physical construction dominates so large variance in planning doesn't play a role. However as software consist of only plan... "The state of the art in software development hasn't reached the point when software projects are repeatable and almost risk free" - in those cases why do the project at all? If something is repetitive and can be automated then it does not need to be done at all multiple times but can be done once and copied. – Maja Piechotka Jul 30 '13 at 12:38
  • @MaciejPiechotka By repetitive I didn't mean identical, just as no bridge is identical to another, but since bridges have been built for thousands of years some solid base exist. I don't agree with you in that software is only plan. You have to code, test, integrate, etc. – Tulains Córdova Jul 30 '13 at 12:47
  • 2
    @user61852: You misunderstood me. The 'plan' to engineering is as 'source' to computer science - i.e. detailed description of every component - but once we have it we can build it (enter make or whatever).What is 'plan' in computer science would be a 'plan of plan' in engeneering. The difference is that make in computer science takes at most few hours while writing source code (including tests and integration) takes months while in engineering the planning can takes months (including structural calculation) while building takes years.So the variance of planning have lower impact on latter. – Maja Piechotka Jul 30 '13 at 13:04
  • 1
    @user61852: Regarding the repetitiveness - one thing computers are great at is automation. Say you need to build a simple blog - at the point when you would have accurate 'estimates' you will get a wordpress (or any other blogging system) in place so you don't need to do any of it (in case of bridge you still have different environment so you need to adapt more carefully as the rock might be different or there might be a bird habitat or it might destroy the view) - the programmers might be more responsible for creating the tools (the standard bridge model). – Maja Piechotka Jul 30 '13 at 15:04
  • 1
    For example in game industry the programmers don't do the tasks considered standard 10 years ago (say - models, materials) but create a tools for artists to do those tasks. So once we reach a 'solid base' programmers are not needed any more (or at least not in a sense we are using them today). – Maja Piechotka Jul 30 '13 at 15:07
  • 1
  • If your bullet points are direct quotes from the book, formatting them as block-quotes would be better. If not, it might be more clear to replace "According to" with "To paraphrase", and I can help with some grammar mistakes in the bullet point text. – Mike Partridge Jul 30 '13 at 19:33
  • 1
    @MikePartridge They are not direct quotes. I will add the "paraphrase" thing. – Tulains Córdova Jul 30 '13 at 19:56
  • 2
    Bonus for quoting the Mythical Man Month; Frederick Brooks holds up after all these years because he focuses on people not technology. – Michael Shopsin Aug 05 '13 at 21:44