In September 2015, after around nine months of self-directed learning I landed my first role as a web developer (with Icelab, a design studio with presences in Canberra and Melbourne). In the time since I’ve experienced plenty of highs (and lows) but in all it’s been a great start in the industry, even if I did feel like an impostor for much of the first couple of months. In no particular order, these are a few of the lessons I’ve learned in my first six months as a developer.
When I first starting learning to code I had analysis paralysis and was overwhelmed by the number of different decisions I had to make regarding where to start learning. HTML? JavaScript? Python? Ruby? I tried them all, thinking I needed at least a rudimentary understanding of every language and framework out there (even if I couldn’t actually write code in each of them). As a result, I spun my wheels for a long time jumping from language to language without spending enough time on any of them for any of what I had learned to sink in.
I’ve since accepted that it’s impossible for any developer to be across every option out there, and have learned to take a more pragmatic approach and focus on getting solid with a single language and framework (in my case Ruby and Rails) and work on picking up what I can of other languages, libraries and platforms along the way. In addition to Ruby and Rails, to date at Icelab I’ve worked with Elasticsearch, Resque, Docker, AWS, Heroku and have dabbled a little in the front end and learning by working on real projects has been a great way to add additional skills to my repertoire.
In my early days at Icelab (and still to some extent now) I was reluctant to ask what I thought were stupid questions, or questions that I thought it was expected I’d know the answer to. In a couple of cases this resulted in me “guessing” the direction in which I should take the feature I was working on, only to have to scrap my work and start over once I’d finally worked up the courage to ask for clarification from other members of the project team.
As a new developer, there will come a point where it is assumed/expected that you know certain things, but you’re unlikely to encounter that point your first few weeks or months. This is the time to ask those questions you think are stupid in order to not look like you haven’t been paying attention when you need to ask those same questions a few months down the track.
Perhaps I’ve been lucky but I’ve found every one of my colleagues at Icelab freely giving of their time to set me on the right path when I’ve gotten stuck.
We’ve a distributed team at Icelab, with offices in Canberra and Melbourne and members of the team working from their homes in Sydney, Newcastle, Bangkok and various other places in Asia (I’m writing this post from Chiang Mai). As a result, we rely heavily on tools like slack to communicate and keep each other abreast of what we’re working on and where we’re up to.
Early on my instinct was to keep my head down and stick to the task at hand but I’ve realised the benefit of being a bit more vocal and keeping my teammates up to speed with what I’m working on and sharing any challenges I’m facing. If nothing else, explaining to my teammates how I’m going about implementing a feature has been a great way to validate my approach.
To build a successful career as a web developer it’s essential to invest the time in continual self-directed learning. I could probably get by for the next few years with the knowledge I have right now, but given I gave up a pretty well-paying career to start at the bottom of a new industry I’m determined not to just “get by”, and as a result I know I need to spend time outside of work getting my Ruby & Rails knowledge up to at least an “intermediate” level, and then developing other skills from there.
When I started out learning to code I took a lot of satisfaction from becoming stuck on something and then patiently and methodically working to find a solution, until hey presto, the thing worked.
When I attended the last Rails Camp (in Canberra in December) I met a guy not much younger than me who was looking to do exactly what I did and transition from a comfortable but unrewarding career to one as a web developer. We had a few great chats over the weekend about where to start and how to develop the tenacity to stay motivated in the face of adversity (which we all hit many, many times when starting out).
We’ve kept in touch and it’s been great to be able to share some of my knowledge and hopefully steer him in the right direction when it comes to what to focus on learning and how to go about landing his first dev role. I know I wish I’d had a central point to reach out to for advice, to get me unstuck or just to keep me motivated so I’ve found it extremely rewarding to be able to give something back after all the great advice I consumed from blog posts and talking to other devs at meetups and on various public slack channels.
My first six months as a developer has been a great ride, and I feel really fortunate to have been thrown in the deep end, working on complex applications from day one - it was a struggle at times but I learned more in my first couple of months working on real projects that I did in the previous twelve months of learning on my own. Nothing beats the feeling of shipping a new feature that thousands of people will use every day!