Yesterday was my last day working for the SQA, I had been working there since September last year.
When I first joined I had just finished my Masters degree from Aberdeen so was noticably wet behind the ears to how programming in the real world worked (despite a few summers spent working for local companies). The biggest difference by miles between Uni coding and real coding is the testing strategy. Uni is mainly about getting it to work in ideal circumstances. Real world coding is more about failing gracefully and testing every line of your code.
Apart from the that, learning new libraries and frameworks provides a steep learning curve. The main difference between working in teams at Uni and the real world is that teams at work are a lot more competent and have different skill sets.
After embarking on this journey I decided I need a new challenge using an agile management style. Randomly I received an email from an agency asking me when I would be available to interview for a job using agile techniques, java and unix (my three favourite developer tools). This as well as being based around the corner from where I currently work in Glasgow. After pondering over this I sent an email saying I was interested.
I guess I'm a bit odd because I really enjoy job interviews. I guess it's the whole no longer being in education anymore so no more exams to sit mentality. The job interview itself was very stressing, I've done lots of revision for the official Java exam so I felt confortable with any questions they could ask me similar to those exams. They however were not using the same script!
They asked me about my last project I worked on and how I contributed. My last project involved creating an entire framework for future applications so it was easy to enthuse about. They proceeded to then attack the design of the system to see if I was aware of how it worked. Questions like "How would you improve the system?" also caught me offguard. I've been very happy with the system I was working on so I couldn't think of any obvious way to improve it. When pushed I agreed that the EJB part we used isn't with current trends.
This project based questioning was then followed by an oral technical test. Personally I thought the JCP questions were a little obscure but showed understanding of how the language actually works. The questions from my interview would blow the JCP out of the water. Somehow I managed to come across quite well. Though the questions based around the newish Java 1.5 I was quite sketchy on.
Half way through this process the gods shined on me allowing me to get an unfair advantage over my fellow interviewees....
The firealarm goes off!
This extended my interview by another 30 minutes or so allowing me to get all my geeky questions in and questions about the culture in the company (they have a pool table and playstations!). This allows me to find out over 650 developers work in the building. Recently I was seeing if there was any interest in Glasgow to start a Java Users Group (JUG), at this point I figured there are about 30 Java developers in Glasgow, maybe 100 across the central belt of Scotland. Turns out this company has 450 Java developers in their building alone. This massive group of developers is what made me really want the job, I could never learn everything they know.
One thing that has struck me as the best way to know if you are getting better at something is to look back at what you did a year ago. For the last 6 years I've been able to look back at my code and laugh each time. If one year I can't do that then I know I'm doing something wrong. This is one factor to why I decided to move on, I need the constant challenge.
I'm off to France on Monday for a week to Nice (and yes I hope it will be nice). Then on the 17th I'll be starting at JP Morgan. Having read the blog of my new team lead I can tell this is going to be hard. One of my soon to be colleagues is writing a book on improving techinical management practices. I've got a lot of learning to do.