When I first considered the idea of a blog, an embarrassingly long time ago, I had decided to hit things of with an introductory article outlining some of the bigger insights I have gleaned up until this point in my career. As I have been preparing that article for my second post, it has quickly become apparent that each segment is becoming too long for a convenient read! Either that or my waffle is strong!
In this passage I want to detail what I currently see as the more important lessons I have been exposed to during the start of my career in the software industry. It is my hope that this may serve 1) as a primer for early career software apprentices and career change hopefuls and 2) as a reflective log for my own selfish purposes!
The following is a distilment of, what I think are, the important and potentially time saving (for you!) lessons I have acquired to date, and it is these that shall be covered in the next few articles on this blog. These include:
1) A broad appreciation of what a “full stack developer” is 2) Bugs! Particularly where they come from (Spoiler alert: you) 3) The ritual of git 4) Abstractions 5) Continuous learning
As a primer, so that you can appreciate I am not hailing from a formal background in computing, and thus most of my perspectives are home grown, I will introduce myself:
Fortunate to have been given a job straight out of graduation by a remarkable fellow and founder of www.softworks.com.my and co-founder of www.realpython.com, I’ve had a whirlwind intro to raw, well guided, professional software craftsmanship.
Despite diving into a software development career, I did not come from an undergrad degree in computer science. Instead I spent the last year of a bioscience degree force feeding myself the knowledge I needed to pursue a career in software development. This was always a consideration of mine. A toss up between science and computing. After a gap year doing research with a with a science organisation, I knew it would, at the very least, want to move towards a computational biology field, if not full blown software development.
With my self taught notions of software development I ventured down this career path. The first thing I was grateful to be exposed to was the full breadth of technologies and responsibilities at the hands of a full stack developer.
Backend to fronted, inception to deployment, refactoring and testing, databases and hosting. Naturally, at this point, I am fascinated, confused and excited by the disparate technologies and techniques I get to employ each day. It has been a brain grinding experience, even until this day. Trying to learn so many new tools, and have them speak to one another harmoniously, is a true challenge for the apprentice!
My first (and largest to date) assignment was a data analytics and mapping system built with Django and Angular. Gratefully I had a little exposure to Angular (thanks to working with these guys, but Django was all new. A little tinkering with Flask and CherryPy meant that Django was an approachable beast. Making things doubly acceptable were a designer and spec ops guru who handled the majority of deployment and visual issues.
Meanwhile, I had the joy and freedom (and danger!) of working from home! Though we shall leave those trials, and the likes of agility, personal kanban, TDD, accountability, code review, time keeping and goal setting, for future posts.
Needless to say, the initiation for the new full stack developer is hard. Though just like starting to learn coding, a bit of determination, persistence, and a ton of reading/watching videos, pays off with growth of an employable skill set, and, importantly, the ability to begin translating your ideas to code!
My take away message would be - be daunted, be excited and focus on the long road. Let the daunting breadth of what you need to learn humble you, and continuously seek out advice and lessons from those around you, maintain your excitement by working on your own toy projects (and put them on github!). Finally, try to appreciate early on that the pursuit of software mastery is not, for most of us, a quick journey, Granted this is something I still try to challenge continuously through self improvement and study, but I recognise my position as the aspiring apprentice!