Becoming A Junior Developer – Expectations Vs Reality

Following on from Brandon’s blog post on our talk at NWRUG about life as a junior dev I’ve decided to delve a little further into what I expected before becoming a developer & what it’s really like on the job… So head over to his post if you haven’t already!
Screen Shot 2016-07-25 at 16.39.55.png

Intro

I’m Reiss, a 22 year old developer who works here at Createk.io. Before starting here I was a student at Maker’s Academy. A 12 week intensive coding bootcamp that’s designed to take you from little to no knowledge of code to a fully hireable junior dev.

I guess whether you go through an education or self-teach development theres always going to be an expectation vs reality tradeoff. I know full well that when I started to think about employment there were so many things that I was unsure about. I didn’t really know what to expect. How would my first week go? What kind of stuff would my employer have me doing? Would I be adding value straight away? I guess these are all variables depending on where you go, that’s also something that you should be thinking about and asking at interview too.

Environments

My bootcamp taught me a little about different environments. I guess I worked in two, development and test. The test environment would clear the database after every test and allows you to run your application in a test instance, if it didn’t wipe the DB you would end up with a massive collection of objects leftover every time you ran a test. After I had finished a feature or at the end of the project I was working on I would push my development code to Heroku & in turn that kind of became a production environment. As important as it is to concentrate on learning how to code when looking for your first role, I’d definitely recommend reading a bit about different environments, how they work, how they differ and why a company might use them…

Most companies (including ourselves); have a testing, development, staging & production environment.

Something to note here is that the code generally stays the same through all of these. However configuration files etc might change. For example here at Createk, one of the apps we work on sends emails out to users. This is the case in staging & production, however in development & test we have the emails collected & stored locally. It would be annoying if every time your ran your tests the application sent out 30 emails…

So hopefully your starting to see how things can differ, especially how a learning environment differs from a working environment (pun intended). It doesn’t just stop there though. There are many things that differ in the working world which leads me to my next point.

Workflow

When your sat at home learning to code at 5am the last thing you’ll think about is sticking to a workflow. You may have used a bit of Git before but you may have only gone as far as pushing to a master branch. A lot of software houses and in-house teams have a git workflow that they stick to. I’d say this is something worth looking into for sure. We have a code review system here at Createk so every piece of code written gets scrutinised before it gets merged. Each issue gets created on it’s own branch before being reviewed, merged to develop, then tested on staging before being deployed to production. Obviously this is just our workflow and this could differ where you are. However I would say it’s more than worth looking into Git, pushing, pulling, creating branches and PR’s etc.

What your first week may be like…

Going into your first Junior Developer role can obviously be really scary. You don’t quite know what to expect, I know I didn’t. I was unsure about what I would be given to do. I spent my first week pair-programming with Brandon, we were working on the secondary platform, one that neither of us had any knowledge of. I got into the swing of our issues system, we picked up a ticket and wrote a test before trying to get it to pass. I think it took us around 3 days to push that first feature, however it’s important to stress that we very much took it in our stride and worked through the weeks work in a logical way. It was a really good way to get introduced to the typical working week and I got to ship code on my third day which was awesome!

Asking Questions

Okay so this isn’t an expectations vs reality thing as such but I felt it was only right to point this out. As a Junior Developer, it’s up to you to decide when you’re really stuck and need help. However it helps to have a general rule, 20 – 30 minutes of struggling is probably long enough before you should turn to a teammate and ask for help. In not doing so you are…

A. Wasting the companies time & resources by trying to tackle a problem you might not be able to solve on your own.

B. Cheating yourself out of progressing further & learning more.

It can be hard to get the courage to ask for help, especially if you feel like it’s something you should know. It happens to all of us, however it’s better to ask so that you can fully understand how to solve the problem and also so that you can keep moving along & tackle the next thing.

Estimating & Dealing with Deadlines

This is a biggie for me, as I haven’t been coding for that long. One thing I find really hard to do is give estimates on how long a piece of work may take. I’m sure it’s just a learning thing and the more work/more estimates I do the better I’ll get at it. When your coding on your own you don’t tend to notice just how long some code might take to write etc. Obviously this is much more of a thing in the working world. Quotes might need to be made etc. Deadlines are the same, although we work in Sprints and it’s not always a bad thing that you might not get a planned issue finished in one. It’s a harder skill than you think to estimate the speed of your own workflow. So what  I would say is it’s definitely worth keeping track of your development and progress when coding, as this can only help in the long run.

Wrapping Up

I hope the above has helped you aspiring developers out there! It’s important to note that each of these points may come easier to some more than others, however what I will say is concentrate your hardest on learning to code and then you can read about the other stuff when you have a spare 5/10 minutes on the bus or train etc. It can only help you in your quest to get a job as a Junior Developer. Good Luck!

It’s Just Practice

nwrug_talk_pic

Reiss (left) & Brandon (right)

When reflecting back on how you achieved a goal after months of effort, often resulting in hours a day of work, it’s often easy to forget how difficult that journey really was. It’s peculiar how our memory does us such an unfair disservice. This was what I was thinking about when Reiss and I  started planning our talk “Life As A Junior Developer” which we gave at NWRUG, our local Ruby meet-up.

Part of our talk discussed the steps we took to become Ruby developers. By coincidence, we both decided on a career change at roughly the same time but took two very different paths only to end up working for the same company 7 months later. Reiss took the route of an intensive boot camp course whereas as I took to using online resources and relying on members at my local Ruby meet-up.

The Journey

Reiss spent anywhere from 8 to 16 hours a day coding to complete assignments for an online boot camp which paired him with students from all over the world. Each one with the goal of becoming a software engineer. It was an all-consuming dive into the world of coding where there wasn’t time for much else.

For myself, I tried to put together a pseudo curriculum by combining online tutorials with  whatever textbook was recommended by members of my local Ruby meet-up. I dedicated most of my weekends and evenings after work to the endeavour of learning to code in Ruby, Ruby on Rails, and anything else that was necessary.

While both of us made a dedicated and considerable effort to achieve our goals, neither of us took the traditional route of obtaining a computer science degree or had a background in tech. This is an important point to reflect on as too many people often think it’s not possible to become a developer without a degree. It’s an inaccuracy that discourages many from even trying and is no doubt part of the reason there is such a shortage of developers around the world.

Despite telling hopeful developers how we landed our first role I find that we’re often greeted with uncertainty and a hint of disbelief. Aspiring developers often ask the question “What else?” as if we’ve had some previous experience in the industry we’ve failed to mention. The answer remains “Nothing”. It’s an old cliché but practice is the key and enjoying the practice helps all the more. It really can be done!

Giving Back

Reiss and I hope to help people who have chosen similar paths to becoming a developer. Our first concerted effort towards this goal will be Rails Girls in Manchester on August 13th where we’ll be helping with the basics of Rails.

For those interested in furthering their skills as a developer or looking to step into it for the first time check out:

NWRUG – nwrug.org

  • A once monthly meet-up for Ruby and Rails enthusiasts in Manchester

CodeUp – codeup.com

  • A once monthly meet-up with members of all experience levels. Language agnostic. Locations around the country

Tech NW – technw.uk

  • A website that lists the many tech related events that happen all over the North West of England. There’s always something going on