10 things every programmer should know
With the ever increasing influx of cool tools and technologies, it sometimes gets overwhelming to be a software developer. There is after all only so much one can learn. I have put together a list of items here which have become a must for every programmer to know.
1) Integrated Development Environment (IDE): I was in an interview panel with some senior developers to interview a candidate and we did a pair programming session with the candidate and one thing I noticed is that my colleague was making a note if the candidate was using shortcut keys or not. This tells the importance of mastering the IDE that one uses. I have seen a car mechanic friend of mine at work and admire the mastery he has over his tools. The IDE is the programmer’s tool and one should master it at any cost.
2) Source control: All software development happens in a team environment and to maintain the code, software repositories like SVN (Subversion) or TFS (Team Foundation Server) are used. The code is checked out and after the developer makes changes, is checked back in. Resolving conflicts, branching, merging, shelving are the bread and butter for any programmer.
3) Build tool: With the advent of Agile development methodologies, Continuous integration is part of the game. The goal is to have buildable code at any time. Tools are available that point to a repository location. Each time a check-in is made, the code is built, all the unit tests are run and the build status is displayed. Anytime a build is broken, it is the team’s responsibility to fix it and move further. This resolves many issues related to integration.
4) Web application development: E-Commerce and Internet has changed the landscape of how organizations do their business. Every business has a website where they can sell stuff, run promotions, keep their customers informed.
6) SQL: I have seen code written by developers where the SQL sucks big time! Though we’re seeing the advent of NoSQL databases, relational databases are here to stay. Every programmer should know SQL like the back of their hands. Performance of an application is greatly tied to good SQL.
7) Desktop development: Building applications that run on the desktop is so different than building web applications. I built some applications in Flex and WPF and I learnt so many different patterns. The key is to identify problems and their common solutions and have these patterns imprinted in memory so we do not run about reinventing the wheel.
8) Domain knowledge: The application is built for the business users and most of those users have little knowledge about the technology. Even though the business analysts get the requirements, it is a good idea to understand the business so that all scenarios are covered in the application. I always make it a point to read requirements documents, use cases, talk a lot with the analysts to make sure I get a real good idea of the requirements and the business.
9) Unit Testing: Test Driven Development is when the unit test is written first before the class being tested and the test is watched to fail. Then code is added incrementally until the test passes. I have not done real TDD to be honest but always make sure to write unit tests as a minimum to cover the bases. Why should developers write test when it is the Quality team’s job to test? Because it helps in writing better and quality code.
10) Fill in the Blank: It’s up to you to comment and let me know what the number 10 is