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!
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.
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.
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!
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.
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!