Becoming a Software Developer at Makers - Week 8
Tags: ruby, javascript, tdd, beginners
Published: 2019-06-24 19:39:01

We've hit the end of week 8 here at Makers. Earlier this year when I decided to sign up for a Software Engineering bootcamp, I knew that I'd be in for a whirlwind summer. During the first day onsite we were reminded of two important points. Firstly, be prepared to have very little free-time outside of Makers. Secondly, lean into the discomfort and trust the process.

Sounds reasonable and warmly reassuring. I'd already anxiously broken the news to one of my best friend's that I can no longer attend her 3 day wedding in Cornwall, as it will fall in the middle of our group project phase. She took it surprisingly well and was very supportive of my decision to join Makers. Now that I've been pardoned from several summer events, everything should be plain sailing from here!

How did I end up here? In my previous role I worked for a global software company as a Consultancy Operations Manager. I wore a few different hats and juggled my way through many different responsibilities and daily challenges. Fortunately I had great exposure to all of the teams, and always found myself gravitating towards the work of the Dev's who sat directly behind me. They were the geniuses building and developing our Enterprise Architecture tool, and this seemed to be where all of the magic was happening. Do I have the technical chops and tenacity to become one of those folks? This started me on my journey to becoming a Software Developer.

At Makers, every week we learn new tools and skills to build a project using Ruby or JavaScript. The morning's are consumed by workshops, practical exercises and self-directed learning. The afternoon's are where we develop our expertise in Test Driven Development (TDD), Behaviour Driven Design (BDD) and Pair Programming.

Here are 3 key nuggets that I've been harnessing during my time on campus:

### Test Driven Development is a big deal
It took me a couple of days to grasp the concept of why we should write unit and feature tests *before* the application code. Surely this was going to increase the amount of development time and potentially hinder my progress? Oh how wrong I was. Applying this process every day has taught me how crucial TDD and BDD are for a Developer. It allows us to work in an agile way and develop our product with the user requirements and experience at the forefront. Working in an iterative way and regularly running tests also gives us the confidence that we're moving in the right direction. We have the ability to identify when an error has occurred and address it before we continue programming. There's a lot to be said for the endorphin rush you receive after writing a failing test, and then applying the code to make it pass in green lights.

### Pair programming is great for the soul
Being a new Developer, I've gained a tremendous amount of value from pairing with different members of my cohort each day. When there are only one pair of eyes on the screen, problem-solving can become tricky and often frustrating.  Pairing allows us to discuss strategies, think through ideas and share best practice with each other. You'll also have a few less grey hairs by the end of the week. Adopting driver-navigator roles, and regularly switching, means that we benefit from a dual perspective which ultimately improves the code quality. This then gives us the ammunition and confidence to complete the weekend project alone. Pair programming works best when my partner and I set our expectations at the beginning of the session. We agree to time-box things, for example how much time we should spend on a problem before seeking out additional resources. During the session it's important to reflect on whether the structure and approach is going to plan. Shall we continue with what we're working on, or shall we take some time out for solitary exploration? Oh and don't forget to celebrate successes. High-fives and short breaks away from the screen are awesome for motivation and productivity.

### Mindset is everything
This is perhaps the most crucial point. Makers are big on adopting a growth mindset, and they coach you very well on this. Throughout our careers as Developers, there will always be new technologies, frameworks and languages to master. It's easy to run down several rabbit holes when learning new concepts, but important to find the "sweet spot" of learning enough to progress you forward without becoming overwhelmed by additional layers.  From a technical perspective, yes programming requires you to put in hard effort over an extended period of time. Nobody is born with knowledge of HTTP traffic, databases and algorithms, but you will gain a lot more by thinking holistically and understanding that over time, through immersion, the matrix will soon become clear. When I get stuck on a problem (several times a day), rather than falling into a fixed mindset of "this is too difficult", I ask myself "Am I a better Developer than yesterday?". Through regular self reflection and assessment, it reminds me that a topic I may have found incomprehensible a couple of weeks ago, I'm now completing with ease. Technology is exciting - embrace the lifelong commitment to learning and growing!

![](https://thepracticaldev.s3.amazonaws.com/i/4uke6t4nndkr87jcrsan.jpg)