Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

Let's say that my company was to develop a replica of MS Word (just as an example). What would be the bottleneck to the development process, assuming that one has infinite cash available and an organization like Microsoft? In other words, what are the most usual hindrances from developing such software fast? Let's assume that all specifications are in place and the organization is working perfectly, so we just focus on the software development until the product is ready to be shipped. Some alternatives might be: - Writing the code - Writing tests - Manually testing the end product - Rewriting the code due to poor design in the first place - Designing the code - Code review done by experienced developers - Designing GUI - Redesigning GUI based on alpha/beta-user feedback - Processing feedback from users - Waiting for alpha/beta-user feedback

Please use references in your answer or state your experience on the subject.

share|improve this question

closed as too broad by gnat, GlenH7, MichaelT, Kilian Foth, jwenting Sep 22 at 9:20

There are either too many possible answers, or good answers would be too long for this format. Please add details to narrow the answer set or to isolate an issue that can be answered in a few paragraphs.If this question can be reworded to fit the rules in the help center, please edit the question.

3  
Got good developers? –  user1249 Jul 16 '11 at 23:01
    
@Thorbjørn Ravn Andersen Let's say the same mix of good and bad as Microsoft. –  David Jul 17 '11 at 9:43
1  
This is severely underspecified and cannot be answered. –  user1249 Jul 17 '11 at 9:46

8 Answers 8

up vote 3 down vote accepted

In my experience the major "bottleneck" is the learning process. When your hypothetical company sets out to develop the next Microsoft Word there is a huge gap between what you need to know and what you actually know. The size of the gap depends on many factors, it may be in technology or the domain. You've touched on some of these issues in your question, e.g. design, user feedback etc. Microsoft Word has been in development for over 30 years now so between the history, code, tools and people there is a lot of knowledge behind it.

So if I were to try and do this I'd try and hire the best people with experience in the domain, both technical and management. Try and read any available literature in the field. I'd also try and get customer feedback as soon as possible. The biggest problem is the critical things you don't know and may find out about very late in your process.

This, by the way, is not unique to software projects. It's true for every large scale project where you're trying to do something new. E.g. look at the Boeing Dreamliner. There are many books written about this. The Mythical Man Month is one.

share|improve this answer

Even in your hypothetical, perfect world, there are some issues I can see:

Probably the most important, from my own point of view, is dealing with customers. In my own experience, the business has to deal with customers who frequently try to change the project while it's being developed. In some instances, they have tried to wing a change request as a bug fix to avoid having to pay any money. This can lead to a lot of bureaucracy that can delay a project or lead to quick hacks in code which develops into technical debt further down the line. I've read and heard of teams that deal with these problems as easy as it is to breathe, and I sure wish I was in one of them :)

The second issue is lack of a proper domain model. Eric Evans provides good coverage on this in his book: Domain Driven Design. Lack of a good domain model leads to some of the problems highlighted in Glenn's answer, such as trying to locate a bug. Without a clean domain model, it can be time consuming to walk through/debug the code to isolate and fix a problem. I would argue that a good domain model makes life and debugging a lot easier, even more so when maintaining and extending the application further down the road.

The problems I've mentioned above don't yield any immediate problems, but if you need to maintain this product for a long period of time, they may come back to haunt you and your team.

share|improve this answer
    
I think this is an excellent answer! –  David Jul 16 '11 at 22:57

Latent defects, in requirements, design, implementation, deployment.... As in stuff thats broken but you have yet to find it. Imagine software develkoopement were every new bug was caused by the most recent changes.

share|improve this answer

Yes i will agree with the above things and it must to follow software models.As per my knowledge,the main things are:

1.Time Management 2.Team Efficiency and team management 3.Coordination in Team and 4.Better understanding with Client

If we have the above four,then we can move to a new world with success and lot of improvement in terms of personality and the software.These leads to good relationship with the client and the client will give the orders without thinking about us.

share|improve this answer

I think Brandon Moretz has the best answer. But I want to add that getting the first version out of a large project isn't all that hard. I personally have never failed to do that.

What I have failed to do was create the first version in a way such that that the second, third etc version and or bug fixes and or minor feature enhancements can also be delivered in a timely fashion.

share|improve this answer

I'm not sure what you mean by "the organization is working perfectly", but even in a fantastic organization, the biggest bottleneck in any sizable project is communication. Mythical Man Month points out how, as a project team grows, communication combinations explode, almost guaranteeing errors and missed information.

share|improve this answer

Let's assume that all specifications are in place and the organization is working perfectly.

You've assumed the two biggest "bottlenecks" in the software development processes don't exist (from my personal experiences).

share|improve this answer
3  
++ Yes. And the assumption that if you have specs, they won't be changed. It takes expert developers to know how to anticipate what changes haven't yet been asked for, and how to handle them when they do. –  Mike Dunlavey Jul 16 '11 at 22:22
    
I know these are huge hindrances, but I am not asking about them as I already knew about them and they are obvious. –  David Jul 16 '11 at 22:26

From what I've seen thus far at work, a large source of bottleneck comes simply from bugs and the human error that created them. Just think about the time it takes to debug the code, find a fix for the problem, and then retest the new solution. Now imagine if that fix caused another subtle bug. It can be a major stream of pain and thus slows down the development overall.

share|improve this answer
    
This is an excellent answer. Within bugs, what would you say is the biggest bottleneck, which is different from asking about the biggest time consumer for the developer. Identifying the bug, finding a fix, retesting or something else. –  David Jul 16 '11 at 22:23
1  
Retesting is a non-issue. The real bottleneck is quite typically finding a bug in my opinion, but finding a proper fix can take quite the same amount of time. –  Glenn Nelson Jul 16 '11 at 22:25

Not the answer you're looking for? Browse other questions tagged or ask your own question.