Clinton Forbes rants about junior programmers, straight out of University, looking for some respect from well established developers at, presumably, their first paid programming position. Having gone through being a graduate developer himself, and later looking down at the same as a senior and lead developer, I suppose that gives Clinton a fair insight.
If you are a programmer who has just joined the workforce, you may find that your excellent university grades aren’t enough to earn the respect of your peers.
The 5 step guide is essential to students on co-op jobs, useful to new graduates seeking development work, and remains applicable to any new team member. In a checklist type of summary:
Obviously admit your mistakes. Bugs happen in code. Bugs always happen. A bug is not a feature, and claiming otherwise could quickly diminish the level of trust in your responsibility. Junior tasks are not vital, no one will get killed over a relatively minor mistake. Though denying and shifting the blame over a broken webpage layout will just about guarantee the murder of any chance to touch the code of the actual application under the said layout. Be honest.
Don’t pretend to have knowledge that you don’t possess. Especially in an interview. A practical test will quickly weed out those who memorized acronyms and buzzwords from programmers who actually wrote some code before. It’s fine to show that you are interested and are willing to learn, but resorting to lies and exaggerations in order to get assigned a task that you simply cannot do… that is just a lot of trouble. Clinton cites an interesting case from his personal experience:
Last year I interviewed about 10 developers for a senior position. I asked each of them if they were familiar with SQL Server and if they could write stored-procedures. Everyone said “Yes”. I then gave them a practical test and allowed them each as much time as they required to create a very basic stored-procedure and an associated simple application. Nearly everyone failed miserably. The shame on the faces of these people was excruciating, particularly one guy who sat for 3 1/2 hours without writing a single line of code.
Don’t expect your school report to earn your instant respect. Computer Science degrees are largely theoretical. You’ve done a lot of Math. You’ve done a lot of theory. You can draw pretty graphs on paper. Great! Now, welcome to the real world. It would take time to assess your learning potential, and to translate academic studies into practical application. First projects will consist of basic tasks, but use such easier assignments to familiarize yourself with the new team, and demonstrate yourself and your potential. Complaining will not get you far.
Don’t try to improve things straight away. I know, eager students full of ideas about cutting edge technologies jumping at every piece of the system they have heard about.
There is most likely a good reason behind the use of PHP4 instead of PHP5, so hold on to all your suggestions until you are familiar with the current system, choices and reasons. Simply enumerating a list of latest software releases is not very useful, and there are web based trackers that do the same anyways.
Lastly, show some enthusiasm about your work. Seriously, moaning about entry level work is counterproductive to getting any better work. Show some enthusiasm. Show some initiative. Then when you have completed your assigned task, and have begun to establish yourself in the new team – ask for a more challenging piece.
My personal addition would be 6. Ask for work. Sometimes there will be situations (and as a student I’ve seen those a lot) when you have nothing to do. Such is surprisingly common for junior programmers who have recently joined the team, and are not yet assigned to a project. Take this opportunity to volunteer help with some minor tasks of a larger project – it will keep you from being bored, shows initiative, enthusiasm, and earns recognition from senior developers. The difficult part of software development is communication, and this interaction with other developers on the team is your jump-start.
Lastly, keep in mind what you will learn, it will come to you easier.