In the time I’ve been working in this field, I have stumbled across some best methods for doing work, great examples of work done and plenty of free stuff. Why learn all those tricks yourself when you can share and learn from others.
What is software development?
This is the act of taking the needs (requirements) of a customer, designing a solution and developing the program to fit the need. Most people will stop there, however, the process continues through testing and implementation. The end-goal is really to solve a problem. This is what I do for a living, this is what I live to do!
Plan, validate and adjust (refactoring)
It sometimes becomes necessary to step outside of the “get it done at any cost” approach and do some planning. I am not proposing that you spend six months thinking and re-thinking, rather, it is necessary to look at contingencies, critical paths and personnel limitations. Walk through use-cases and give them virtual test runs. Document the misses and adjust your plans.
Design for the win!
No one is good enough to take the requirements, step into coding, and come out with a fully functional, multi-tiered, expandable software application. Even with the best personnel, it is hard to keep everything in focus while hoping that every member of the team follows along same path towards the goal. Your design becomes that goal. Whatever method you use for designing your solution, ensure that you share it in a place where all team-members can gain access to it.
Store your source, then back it up
I have lost everything on my hard-drive in the past, which included six years worth of photographs. Would you like to lose six months worth of work and perhaps your job? Back-ups are worth the time and expense in order to give you the ability to restore your work with minimal loss. Of course, that also means you have some system in place to allow for collaborative code use. These source-control systems allows you to control your flow of development and prevent the loss of work when someone is working the same physical file that you are.
Test early and often
There are many automated testing systems out there that can help identify interface, database and other problems before you release code to your customers. Of course, the best and most reliable automated testing approach is something called test-driven-development. This concept has you create a test, implement it in code, then write the code to pass the test. You run all your tests before you check in code and deploy it. If something breaks, your test breaks and you fix it. Good stuff.
Did you know?
That software bugs are so prevalent that even the car you drive today may have one? Back in 2005, Wired magazine ran an article chronicling the top 10 software bugs of all time (link). Sure glad I didn’t need radiation treatment in Panama City.
