Software Development as a discipline has been a polarizing force for decades now. Although, it is known to be a logical, analytical and rational field, it is overrun with myths and long-held traditions that are propagated and accepted to this day. While several software developers and vendors are enthusiastic about becoming more flexible and moving away from the traditional software development approaches, there is still a huge population that is reluctant to make any disruptive changes. This had lead to numerous hot debates among IT and business leaders, without a conclusion.
This article will name and debunk just a few of those myths:
1.) Customers will always know what they want and will be able to express it in strikingly clear terms. On the flip side of this, there exists the myth that customers have no clue that they need something till you show it to them. The truth is, software companies can benefit from being both product-centric as well as customer-centric as long as they still give speed of delivery and time due importance. Savvy businesses don’t focus on just creating the best, most innovative product in the market; they work hard to create the best solution for their customer, that delivers market success. You won’t get away with doing no market research and not listening to your customers.
2.) The Waterfall Method still works for all types of software development projects: It is appalling how many software vendors still assume that the system can be specified in detail, even before building it. It is not only hard to achieve, but is extremely inefficient to execute development steps sequentially. The other side of this myth is that Agile is completely devoid of planning. The fact is, detailed planning is just as essential to the effectiveness of Agile, as it is to the Waterfall approach. The difference in the two methodologies is how the planning is done. Waterfall advocates planning before building, at the outset of the project, making it very limiting in terms of flexibility and adaptation. On the other hand, Agile allows for an ongoing planning mechanism where changes and tweaks are made as the project progresses in an iterative manner.
3.) Software can be estimated accurately and that the estimate and the duration to get the software built are the same. It should be understood that estimates cannot be precise, and there should always be room for a degree of uncertainty. It should be noted that estimates can initially vary greatly from one team member to the next based on their technical expertise and skill level. Estimation is also an on-going activity, and as the project progresses and new information is made available, normalization of the estimates can happen which will start to apply more accurately to the entire team.
4.) The Mythical Man Month is quite possibly the most popular software development myth, which, unfortunately, exists to this day. It revolves around the simple idea that adding more people to a development team makes it more efficient and speeds up delivery. The fact is, adding more people to the project at a critical time tends to prolong the project timeframe and causes frustration because of training and collaboration issues.
5.) Software development can be approached as a fixed cost and timeframe project. This point again goes back to the Waterfall approach to software development. It is just not possible to detail out the software before building it. While most companies are lured in by the Fixed Price model, they must also be aware that there are several hidden costs associated with it—both in terms of quality as well as the additional costs incurred as the project oversteps the time boundaries.
6.) The latest, “state-of-the-art” tool or technology or methodology is the magic bullet that will produce magnificent results and solve all your problems. Just like the old adage, “A bad worker blames his tools”- when you want to build high quality software, due importance should be given to skill, critical, innovative thinking and agility. Using new and improved technologies is just a cherry on the icing.
7.) Releasing the software product means that the project has come to an end. Once a product is released, the focus should be on actively receiving feedback from end users and incorporating it in an iterative approach back into the product. There need to be an ongoing process of updates and revisions made to the software, along with efficient testing for bugs, in order to offer the highest quality product to your customer.
8.) Agile requires that product owners and developers work in a single location. With modern communication technology, this is no longer the case. Distributed teams can use collaborative software tools and systems such as instant messaging, email, shared calendars, remote control software, screen sharing and audio/video conferencing to engage in a common task and stay updated. Software companies have now access to a host of communication tools that are freely available and globally accessible which allow remotely located developers to work seamlessly and achieve common goals.
9.) Outsourcing solves all problems. In fact, just plain outsourcing has the potential to create far worse problems than what you began with. Software vendors should start thinking in terms of establishing long term partnerships and engaging in a dedicated team model as opposed to fixed cost projects, which usually lead to frustration, incomplete deliverables and exorbitant overhead costs.
10.) Outsourcing means compromising on quality. This is far from being true. When done in a well-researched manner, outsourcing/offshoring can actually enable you to get better code and build an outstanding product. Going offshore allows you access to a diversified talent pool with industry expertise that you may be struggling to find in-house. Don’t be afraid to explore new strategies!
What myths do you think are still rampant in your experience with software development? We would love to know. Tell us your opinions in comments.