By Andrew McCombe
June 14, 2011
However, what you aren't aware of is that there are other skills needed to do the job of a website developer. Some of these are technical, others are social. In an ideal world a developer shouldn't/wouldn't need all these skills in order to do their job and I will admit that I am not a master of all these myself.
Here's a top ten skills ideally needed in order to do a job of a Programmer/Website Developer.
This one is obvious. What is not obvious is that a programmer should never rest easy. There are always new techniques, new technologies and new methods to learn and master. A good programmer needs to be on top of this and regularly reviewing his/her skillset.
2. Code repositories
To begin with your code is stored in a directory on your computer. Only you works on it so only you are responsible. When it comes to working with other developers on one codebase the obvious issues arise. Adam codes a piece of functionality in script.php whilst Eve has the same file open and makes a bug fix. Adam saves his code and uploads. Eve then saves and uploads. Result? Adam's functionality is lost. Learning to use a code repository can be a vital skill. Subversion, Git, Mercurial,CVS and the like are the most common.
One skill that will help sell yourself to a prospective employer is estimating the time it would take you to develop that piece of functionality the client has asked for. Underestimate it and you will inevitably end up being the one up at 2am finishing it off; overestimate and there's a very good chance the client will go elsewhere as your company costs too much.
4. Project Management
Yeah – you can program. You know your DB schemas, your third party libraries and your frameworks, but do you have what it takes to take the project and deliver it on time, under budget? In the ideal world you shouldn't need these skills as someone else should have the title of Project Manager but it would be beneficial if you also had these skills. It could also lead to you getting promoted to Project Manager.
5. Word Processing
You don't just sit there and write code until the project is done. There is usually a whole load of 'boring' (but ultimately crucial) writing that needs doing before you open your IDE. Client requirement meeting notes, functional specifications, budgets and technical specifications all need creating and signing off. Granted, you probably won't be writing them all, but I guarantee you will be involved in the lion's share. Plus, once the project is complete there will be review documents and additional development work that will need specifying and budgeting. In addition to this the client will most likely want some sort of documentation for the application they've spent their yearly budget on. Someone has to write this, why not the programmer?
One of the most important steps to ensuring a project is complete and delivered on time is planning. You may have a rough idea in your head how you are going to write that data ingestion module, but have you really gone through the other aspects of the project and discovered a) what other parts your module could affect; or b) what other parts of the project could benefit your module. Planning a project carefully and thoroughly can lead to a reduction in code as you identify re-useable functionality.
I cannot stress just how important testing is to a completed project. You may have done a fantastic job of clicking all the buttons your application contains, filling in the forms, checking out and testing the payment gateway but I can guarantee that your boss will ask “Have you tested it thoroughly?”, to which you reply “Oh yes – it's rock solid.” Then you find that the first thing she clicks on breaks because she's using a different browser, or a different version, or a different platform entirely.
Testing can be mastered. Initial code test cases can and should be written in order to test your code out. User cases should be written and followed during the development and final testing. Browser testing on all browsers and all platforms should be done. I don't care how bad IE6 is to develop for or how few people are actually using Opera – test it.
8. Front-end and back end optimisation and troubleshooting.
Once you have developed a website and testing is done you may think that the job is done. The site works really well, it is responsive, and all functionality is working like a charm. Then, 12 months later, your client is complaining that the site is slow, or worse, suffering downtime. There are many reasons for this and understanding what to look for will help solve the problems a lot quicker if the person looking into it is the person that knows it inside out. A lot of these issues can be prevented by testing and optimising the site at the beginning.
When it comes to a slow website a common source of the slowdown is to be found in the database. Understanding your RDBMS and making the best use of table types, indexes and caches are invaluable. Developing your SQL queries to be fast and efficient is also invaluable. Profiling your code can also help find bottlenecks and thus help to make your code faster.
9. SysAdmin/Linux skills
OK, this one may not be a necessity if you are a windows developer. During my time I have met many website developers that struggle to get to grips with basic Linux shell operations. A basic understanding of Linux permissions and how to 'chmod' a file should be learned. You don't need to know how the kernel works or have to write your own Apache module, but it is an advantage if you know what you can put inside a .htaccess file or to use a package manager to add that needed PHP module to the server.
A great way to learn this is to run a virtual Linux distribution under VMWare or VirtualBox. You can then experiment and not have to worry about breaking something mission critical.
Knowing the tools of your trade are vital to the execution of it. Know your IDE inside out. Know it's limitations and strengths. If your IDE's repository tools aren't up to the job don't be afraid to use something else. Using the right tools for the job will help you to get it done better and faster.