To become a well-rounded developer, however, requires much more than programming. Here are my 12 commandments of software development:
- Know development paradigms and the software development models. Practice good software development methodologies.
- Know the tools of the trade, including IDEs, frameworks, plugins, and other utilities that will make development easier and automated.
- Do not reinvent the wheel: there are developers that have likely solved the problems you will face. Use that body of work, build on it. (And contribute). Specifically, there are tons of libraries out there for all kinds of things.
- Have project management skills to carry a project from statement/requirements to deployment/maintenance. You have to know everything that affects what you will produce.
- Have an industry certification such as the Java certification from Oracle. You should also have evidence of training in other products you are training on.
- Diversify your skills. Be able to develop for various platforms (desktop, web, mobile), use related technologies (networking, databases, integration solutions such as ESB), and know best practices.
- Network with other software developers and programmers. This is how you will learn undocumented techniques and perhaps land contracts.
- Contribute to the knowledge base through blogging and reviews of others' work. If you invent a wheel, consider open-sourcing it. Find a few good forums and respond helpfully to topics there. Be an expert in your craft and share the wealth.
- Stay in the know: technology news, research, and software development publications will keep you abreast with what's going on in the world -- and believe me, it affects your craft.
- Practice and keep learning: there is always new ways to do things, or new products that could simplify your work. Learn their implications for you. You stand a better chance of landing that job if you can also demonstrate your skills (by perhaps showing something you have developed).
- Write efficient and highly optimized code, with good documentation. Test your stuff before you release it. This means that you can write good algorithms and have in place a way to test all your code paths.
- [Minor]: know how to setup the JVM, including the various options required for it to perform optimally.