This one fine morning, I overheard one of my colleagues exclaim to another:
“Come on dude, web dev is not rocket science.”
A very astute observation; software development is indeed no rocket science, it’s way cheaper and relatively easier to master. But wait a minute. What if I were to tell you software development IS rocket science?
While I am no authority on actual rocket science, what I do have is years of practice as a software developer, having worked with PHP/WordPress, .Net and Java/Android. Software development may not involve actual propulsion vehicles that fly to outer space and back, but the principles involved in designing an actual rocket and and an impeccable software system have an uncanny resemblance.
Think about it:
- Both these professions involve a very specific set of techniques and best practices that optimize the designing process and help you create a better, valuable and an efficient product.
- Both require a careful approach and a thorough design scheme before you actually begin development.
- Both go through countless simulations and test flights so as to account for unforeseeable complications.
- Both involve extra-ordinary amounts of fool proofing so that the end product does not go down crashing in real time use. Pun intended.
When you narrow the discussion down to just software development, the above points need not be specific to specific to any language, system or environment, but are applicable to the practice of software development in general. I guess one could say these are result-centric. The more loopholes you let creep inside your system, the higher the risk for the end user of facing mild to damagingly severe issues during application. As the designer/creator, it’s your responsibility to ensure a safe, smooth and a hassle free experience for any end user.
While you work on creating software, keep the critical aspects in check. Here’s a list of 10 quality hacks that may just make sure that your next piece of code is your very best.
Take off in 3.. 2.. 1.. Go!
- Design is the most important step. A great design may sometimes not transcend into a great product, but a bad design will never be a good product.
- Split the functionality into tasks at lowest possible levels.
- Prototyping is of prime importance. Prepare the complete prototype before you start with development.
- Right from the analysis phase, make sure you have most use cases covered, including critical and non critical functionality.
- Unit testing is a developer’s best friend.
- As a tester, focus on white box as well as black box testing.
- Get a perspective from someone not a techie, it’ll help you understand the end user’s point of view and may bring into light certain factors that you did not consider before.
- When you think you’re done and the code is ready for release, say the magic words “No it’s not”. And work towards optimizing it as best as you can. Tie up any loose ends that you may find.
- Test it and re-test it, release a beta version if the system is large scale. Your counterparts in the rocket science industry may not have the privilege or the capital for beta users, but you do.
- Get feedback from other developers and end users, make necessary changes if needed and then release the final version.
Not all of these commandments may be universally applicable, you’re always going to be facing constraints of some sort; you could be financially limited or running really late on deadlines.
Think of yourself as the only developer on Earth who can get the job done. And you must get the job done well, because lives depend on you. Think of it like you are actually going to launch a rocket and your system is well prepared to handle all the critical situations.
With that attitude in mind, you will automatically keep a lookout for the best coding practices, think more logically and improve your testing and foolproofing skills. Just the pilot of our space rocket.