I recently blogged about my preparations for a presentation at NWRUG (my local Ruby meet-up) and recapped on how it all went. What I didn’t mention in those two posts was that I was offered the opportunity to apply for a junior software engineer role for a firm in Manchester. I think it was more of the nerves in me — I didn’t want to write about my excitement only to face rejection.
It was definitely exciting to even be considered for the role and so I, obviously, eagerly applied. I told myself that if anything it was good to learn the process of applying for a software engineer role. My first task was to answer a series of questions showcasing my ability in Ruby (or whichever language was native to me). A lot runs through your mind, especially when you’re told that the questions aren’t meant to be really difficult and the first question asks you to write a method for a “bubble sort” — something I’d never come across. My aorta was working overtime at that moment.
I calmed myself down and reiterated that I should be doing this with the intention to learn from it. I didn’t want to force myself to worry about the possibility of missing out on my first job opportunity — I’ve only been coding since September of last year anyway, I have much to learn.
After sending in my answers to all the questions, apart from three, I asked if I could be given feedback on my answers (I really didn’t think my application would continue). To my surprise I was invited for the next stage in the process, to come down for an interview where I’d be given feedback on my code and to discuss things further. At this point I genuinely thought “They’re just being nice and inviting me down to reject me in person”.
On the day of the interview I certainly was intimidated but that all changed when I walked in. I felt at ease chatting with the two gentlemen interviewing me. I was pleased to here they actually liked my code and learned that they give the same questions to all their potential hires whether junior or senior — there goes my aorta again.
After a lovely chat, and a few hours after leaving, I got a call I never expected to get so soon. I was told that I am officially going to be a junior software engineer. I couldn’t finish my dinner (I barely could eat the next day either), I was completely staggered.
I know there are plenty of people like myself who aren’t able to go back to school and are unsure about the possibility of getting a job as a programmer by teaching themselves, or people that are currently teaching themselves but sometimes struggle to see how to bridge the gap from completing a course to getting a job. Firstly, it’s absolutely possible, as I’ve found out, and secondly, just keep making the effort.
When you’re feeling trapped at the end of a course or a book the best thing is to pick up another one and continue learning, even if it sometimes goes over lessons you’ve already seen before. Drill in the fundamentals, keep learning. Look for challenging code problems and try your best to solve them. Even if you can’t figure it out, the important thing is that you’re still learning new ways to solve problems through code. You’re learning new ways to think that are beneficial to becoming a programmer.
I certainly have tons more to learn and in no way am I some coding savant who just happens to understand everything at first pass — I most certainly don’t. There have been disheartening days where I think that “I’m just not good enough” and days where I feel that I’m making serious progress. The important thing is to make the effort. Be consistent in that if anything.
My hope with this blog now is to detail my journey as a junior software engineer in the hopes of giving other eager programmers a good idea of what it’s like when you first begin. Hopefully while allaying irrational fears like my own!