My journey into software development
Over the past few years friends and colleagues have said that my route into software development was not exactly the most conventional route, one person in particular suggested that my story would make a good blog post so here I am.
At the age of 31 I didn't have a computer science degree, or any level of university education for that matter. Many developers I've spoken to since making the move into software development have received some introduction into Java or Python at College or University but back in 2015 I had no clue what either of those things were. The work experience I had gained since going into full time employment at the age of 18 was built in football coaching (18 to 25) and then contract flooring (25 to 32 by the time I left that industry).
I can imagine there are plenty of people out there who are unsure if they can make the leap into the development world, hopefully by the end of this post some fears and uncertainties are eased. As of today I'm a Lead Developer with a career that progressing swiftly and I'd like to describe my journey to this point.
Lack of sleep or stroke of genius?
Roll back to November 2015, I'm not sure if it was the lack of sleep due to being a first time dad of 7 month old twins that made me feel a bit disorientated or the lack of job satisfaction but my job as a flooring contractor just didn't feel right anymore. Providing estimates, ordering materials, writing COSHH risk assessments, organising labour were just not for me anymore and I wanted a change. Up to that point in life I had generally fell into employment rather than dictated my own path in life but at 31 I felt I wanted a change, I felt the need to forge a career in a field I would wake up everyday and enjoy, a job with high earning potential but most importantly I wanted to feel a sense of self pride and achievement in eventually finding my vocation in life.
I spent weeks and weeks attempting to figure out exactly what that path would be. I explored numerous avenues until a friend said:
"You were pretty good at making websites in school"
He was right. 15 years ago I was a dab hand at hacking together HTML and CSS, with the help of my trusted friend DreamWeaver I produced the best WWE Degeneration X fan site ever seen (in my opinion that is, no one else actually saw it), not exactly a glowing list accolades but a seed was planted nonetheless. My future lay in the world of the 'internet', what field exactly was still clear as mud.
I researched tons of 'web development' courses before opting to enroll on an Open University Web Development course, bearing in mind I was still in full time employment at the time. The course curriculum consisted of a wide spectrum of subjects from HTML to DNS to Web Sockets. The three thick text books and self paced learning was not ideal for someone like me who needed to hit the ground running a lot faster than a 3 year self paced distance learning course so this idea was swiftly knocked on the head. I needed an intensive course that allowed me to progress faster than your average student and for me personally, a course that provided structure and guidance, that's where I found...
Makers Academy is a full time 12 week (16 week including pre-course) intensive computer programming bootcamp based in London although at the time I expressed an interest they also provided a remote learning course too. To be accepted on the course you need to pass a technical exam. Once expressing an interest you are sent pre-course materials to study as well as advised to complete the Codecademy Ruby programming language track. I revised and revised and revised but my first exam ended in failure. In all honesty I had absolutely no idea what was going on. I was advised to go away, revise some more and reapply once I felt confident enough to take the exam again.
With my ego bruised and confidence on the floor I dedicated the next month to filling the gaps, there were a lot of them!! I'm extremely lucky that my wife was performing miracles with our twins which allowed me the time to put in so much revision. I revised everyday, exploring beyond the pre course materials trying and grasp the theory behind this Ruby thing I was asked to learn. Bear in mind my 'programming' experience to date was hacking together HTML and CSS 15 years previous. The concept of Ruby or programming in general meant absolutely nothing to me. In hindsight, the fact I was attempting to enroll on an intensive programming bootcamp was a pretty strange thing to do. To add to the madness, my wife and I had had also decided to move 300 miles north from London to Durham to be closer to my wife's family...so with our now 10 month old twins and Cocker Spaniel Buddy in tow, off we went...
I limped through the second exam and on 24th June 2016 I enrolled onto Makers Academy Ronin remote cohort.
Intensive?? Bit of an understatement
I struggled most days, if not every day. The course was based around programming challenges that we undertook with a different pair programming partner each day. We would spend all day together and as the course was remote for all cohort members we pair programmed and screen shared via ScreenHero or Google Hangouts which made this already challenging process quite surreal at times.
As the course gained momentum so did my understanding of the curriculum laid before us. With the help of my new found friends, stretching from London to Turkey to Bahrain, I really started to understand Ruby and its world of Gems. I was so proud when I created a basic Twitter clone in the Sinatra framework, fully tested in RSpec...look at me with all of this programming lingo.
Personally I picked up the syntax fairly quickly but the concept of classes and methods took a little while to sink in, let alone new phrases such as encapsulation, single responsibility, open for extension and closed for modification which in all honesty only really made sense to me months later once I was in full time employment and actively practising them every day.
Our course coach Roi perfected the art of answering a question with a question. To begin with it was extremely frustrating but I cannot stress enough how helpful this was in helping me perfect my Google'ing skills, as every developer knows this is the major weapon in any developers arsenal.
Up to now, my 3 years experience in the development world to date tells me that bootcamps are either seen as a good introduction to software development or not given credibility because the 'experts' say...
"You cannot become a software developer in 12 weeks"
...although I would have to say I do agree. It's not possible to learn all of the intricacies of software development in a such a short period and to consider yourself a fully fledged software developer having completed a 12 week bootcamp would be on the naive side. However, Makers Academy with its fantastic course structure and content, places you in a fantastic position of understanding what the SOLID principles are, the concepts of Test Driven Development, understanding D.R.Y along with practising XP values every day placed me in a strong position as I searched for employment in the minefield of software development. So on 30th September 2016 Makers Academy waved us a tearful goodbye as we set off into the big wide world.
The Job Hunt
I explored every possible avenue. I attended the local tech Hub in Newcastle weekly in the hope of bumping into a potential employer. I joined every programming MeetUp that I could physically get to, Front End North East, Agile North East, PHP North East...you name it I was there.
Right Place, Right Time
It had already become quite clear from the local job adverts that PHP was a popular programming language in the North East so I began to put my new found self learning skills into practice. I completed the PHP track on Codecademy and FizzBuzz'd in PHP like a mad man then one Tuesday night in October 2016 I set off for the PHP North East Meetup. One of the sponsors advertised that they were looking for PHP Developers so I emailed them with my CV and a link to my GitHub account and the rest they say is history.
On the 2nd November 2016 I started full time employment as a Software Developer at Opia Ltd. The development team at the time was split into two teams, the promotion team that were responsible for creating promotional user facing applications and the back end team that were responsible for maintaining in house applications. I was placed on the back end team and have considered myself a back end developer ever since.
To this day I consider myself extremely lucky and grateful that I was supported by extremely understanding and helpful colleagues, Adam and Nathan, who embraced every single question I threw at them. They both had the same knack of answering questions with questions so I soon understood that to get help I had to help myself. That is not taking away from the numerous occasions they took the time to help me understand more thought provoking programming concepts as well as helping to explain the domain knowledge of the company from a development perspective.
It may not be feasible for aspiring software developers with minimal experience to be so selective in picking the teams they are placed in to begin with but my main advice is to surround yourself with positive, supportive and understanding people. To me this experience is invaluable. Being made to feel so comfortable in such a new environment has enabled me to go from strength to strength within this industry.
Improving as a software developer is an iterative process that does not happen over night. So filling your inner circle with people willing to guide you along this process is priceless. This advice however is two fold, I now find myself in the position of providing the advice and guidance which is equally fulfilling.
Imposter Syndrome...ride that wave
Imposter syndrome is not a phrase I had ever encountered before I became a software developer but man have I felt it. In the early days I felt Imposter Syndrome purely from being surrounded by talented developers that in my eyes 'knew more' than me. I felt embarrassed and uncomfortable during conversations on topics I could not hold a conversation in. I would often hope the conversation didn't swing my way just in case I embarrassed myself.
With time it became quite apparent that every developer cannot possibly know every subject inside out which helped me develop a coping mechanism to Imposter Syndrome. If I ever feel in this position I listen to the subject being discussed and would make the effort to learn the subject in my own time so next time the subject was discussed I could participate in the conversation and if I was ever brought into the conversation without fully understanding the context I would happily say
"I'm sorry I don't quite understand the subject, do you mind explaining?"
...it's amazing how well this question is received. Software development is possibly one of a handful of fields where you can feel like the closest thing to Einstein one minute and a self inflicted feeling of feeling like so stupid the next. One moment are deploying a complex test driven algorithm and in the next breath breaking a test suite due to a typo. It happens to all of us.
So ride that wave. Imposter Syndrome for me still occurs at least once a week with the conversation subject matter just evolving over time. The original conversations of design patterns, dependency management and the like are my bread and butter now but drop me into a conversation about infrastructure or DevOps and I'm sinking without armbands. However I ride that wave and leave conversations a lot more knowledgeable than when I started them. Imposter Syndrome, embrace it don't shy away from it is my advice.
Invest in yourself
As the saying goes you get out what you put in and that cannot be anymore true for software development. I learned early that we as software developers are in a fantastic position. With the abundance of course materials online, forums, Slack groups and the like, there are endless opportunities to learn and progress in this industry. Invest in yourself and develop a growth mindset with a continuous learning plan and I feel the opportunities are endless.
In my first months of becoming a software developer I focused heavily on improving myself as a PHP developer. I bought a subscription to Laracasts which has a plethora of course materials from simple PHP concepts to programming generic concepts such as design patterns, application deployment to name a couple. My continuous learning plan has since consisted of endless free resource such as YouTube videos, Codecademy tracks, blog posts etc. Here are a selection of courses, reading material and conferences that I completed/attended to date:
- Docker Mastery by Bret Fisher
- Nginx Fundamentals by by Ray Viljoen
- VueJS 2 by Maximilian Schwarzmüller
- Learn How To Code: Go Programming Language by Todd McLeod
- PHP Framework in one weekend by Darren Mothersele
- The Go Programming Language by Alan Donovan and Brian Kernighan
- Building Microservices by Sam Newman
I'll finish by passing on the best advice I've received so far, learn the language not the framework
I hope you enjoyed reading this. If you did or even if you didn't I'd appreciate you letting me know on twitter @iamjoesweeny