The odds are against the team when they try to develop a system. It can be compared to a big pit. You are most likely to get stuck and never return. The design becomes obsolete before you even start coding.
Most projects fail due to time constraints. A big factor is poor estimation techniques. This is especially true for the time allotted to test. You really should leave half the time for unit and integration testing. Another problem stems from computer programmers being unreasonably optimistic with there estimates.
Programmers are not all to blame. They often discover what they do not know during the implementation phase. There goes the estimates. Managers are also notoriously bad at monitoring the progress of the schedule. Here is the memorable point from the Mythical Man Month. If you add people to a late project, the result is counter intuitive. Adding people actually makes the project later. More on this strange effect next time.
Continuing Education - I read a post a lot of replies to a Reddit group on computer science graduates. Met a dude there who is an old timer, looking to switch careers into compu...