How to build great software
In this article I will explain 10 errors of software development for my company. By avoiding this myth and concentrating on excellence, we can make high-quality software.
Myth 1) Software must be designed in detail before development begins, so that a clear plan can be drawn up.
Truth) The more complex a design, the more like the design software itself. By perfecting the design, then writing software for that design, you effectively write the work twice. Instead, by doing only a few simple design sketches and modeling of data rather than designs like books, a good development team can create a shell for the software and efficiently fix it towards the finished product. This refinement process creates a natural prototype, allows easy adaptation when unexpected problems by the design arise (or are raised as new concerns by the client), and the total process takes much less time. To do this requires close team, skill and experience, but this is by far the best choice for most situations.
Myth 2) There are programmers, designers, analysts and users.
The truth) By structuring development so that all developers get exposure to every part of the development process, skills can be shared and greater insights can be obtained. If the developer can really use the software then they can use that expertise to think of improvements that would otherwise be revealed.
Myth 3) A happy team is a productive team.
Truth) A team of people with a variety of natural skills, experiences, and concerns, who criticize each other and argue aloud for the smallest details, will bring up and solve problems that will never be addressed. The furnace of endless argument is the best way to forge understanding and reach perfection.
Myth 4) It is important for us to understand our direction and not compromise with it.
Truth) Life is a compromise, and compromise is not a weakness. There will always be problems (such as efficiency, budget, ease of use, power, scope, and the need for easy internationalization) that cannot be met simultaneously without such compromise.
Myth 5) We know what the client wants, we know what the problem is.
Truth) Without constant re-evaluation, it’s easy to lose track of goals. Developers are often faced with problems to solve that they consider problems, when they are actually separated from the actual market goals and can become completely irrelevant. The developer must always understand market objectives and be able to adapt when other things change, or even the goals themselves change.
Myth 6) Bigger is better. Cool feature.
Truth) Features can easily confuse users, and their actual value must always be weighed against the cost of confusion. In some cases it makes sense to completely uninstall a working feature because of the problem.
Myth 7a) The customer is always right.
Truth) Most customers try hard not to look silly in front of software developers, and hence suggest their phrases technically. The effects are often inappropriate suggestions, because they are not based on a strong understanding of technical issues.
Myth 7b) Customers are often wrong.
Truth) Although customer needs are often not the best by literally doing what they say, they always know what they want and why they want it – and usually for very good reasons. Understand them and adjust what they say, discuss with them, but never ignore it.
Myth 8) Comment on your code a lot.
That’s right) Good code hardly needs to be commented on, because the use of naming and reasonable white space is a better alternative. Comments should only explain what is not clear, or provide standard API documentation.
Myth 9) This and that are needed, this and that are good.
Truth) A bad worker blames his tool. While some development tools help development substantially, good developers can do extraordinary results in most of the things that are presented to them. There are some exceptions, such as Microsoft Access, or assembly language, but in general the difference in quality results is far more due to the developer’s skills than the quality of their tools.
Myth 10) The customer will understand if there’s an efficient and easy-to-use interface.
The truth) The interface doesn’t just need to be easy-to-use, it needs to be navigatable without an overall systems understanding. Screens need to be self-describing.