I have always found it easier to discuss a technical subject as opposed to write a reflective piece. However, when the opportunity to candidly discuss my first three months at MyBuilder arose, I felt that I must push myself to do so. Having set this goal, I did what any like-minded software developer does and researched into how the ‘problem’ has been solved before. This search returned many cliché, link-bait worthy articles, and to that end I felt unmotiviated to follow in this mold. Instead, in a similiar fashion to MyBuilder itself, I wanted to be unique in my direction.
This time last year I had just quit a Masters, which I had hoped would be a springboard onto a PhD and a teaching career in Computer Science. One of the descisions to follow this career path was as a result of getting tired of agency work, facing the common adged of having to churn ‘stuff’ out on a daily basis. Another was my desire to expand my knowledge, coupled with helping others in the field, which is still to this day a passion of mine. Unfortunately all I was greeted with was the desire for my peers to simply just ‘make a particular grade’ - coupled with a distinct lack of passion for the subject I hold so highly. This had side-swiped me, and before I knew it I was back completing the un-rewarding freelance work I had maintained throughout this cut-short experiement. My direction had then turned back to looking for full-time employment again, this time however, complete with a wish-list of the type of company I hoped to find work with.
The thorough interview process stood out to me at MyBuilder from the outset, starting with their well designed and cared for careers website. I could see that they had invested time into their recruitment process, going beyond just simply posting on multiple job sites. My first interview was easiliy one of the most relaxed I have untaken, consisting of a general chat about current PHP affairs with Gavin - followed up by an external practical code-test. After a couple of follow-up interviews which consisited of meeting other members of the development team and white-boarding a small problem with Sten and Gavin, I was fortunate enough to be offered the position. Having accepted the job I was pleasantly suprised to be sent two books that had been discussed throughout the interview process (Clean Code and Implementing Domain-Driven Design). This is a perfect time to side-track and mention how valued learning different technologies and subject matter is, and not only that, it is highly encouraged. They even go as far as to purchase learning resources (i.e. books and online materials) and fronting the cost to conferences within the subject if beneficial.
Over the first couple of weeks I was introduced to the code-base (using a brand-new iMac) through a series of copy-changes and small feature additions. I was very happy to participate in morning check-ins and find a Git model that works well in a multi-developer team environment. This is achieved using a pull-request ‘feature/bug-fix’ workflow, coupled with passing Jenkins builds to make sure that any merge into the master branch is safe. I will not lie, the first couple of pull-requests I put up for review were alittle nerve-wracking, however, the opportunity to get constructive feedback from multiple experienced developers is priceless. Through these reviews I have been able to gain a better appreciation for good design, the importance of relevant naming, the SOLID principles (from Uncle Bob) and the valuable thoughts of Martin Folwer.
My first true project began around two months after I had started, with more confidence in the code-base and the knowledge that I would be able to query the domain experts, Gavin and Sten, if required. Being paired with Keyvan only furthered my learning, from participating in an initial kickoff meeting with Jeff and Gavin, to using a combination of TDD and white-board design to arrive at a final deliverable. Throughout this process we were in constant dialog with Jeff who provided insight into the problem we were tasked with solving, and Will who lended his designers eye in the role of art direction. Before working at MyBuilder I had attempted to test and to some extent use a TDD workflow in a couple of projects, finding no value however in the results, only fragile tests. Keyvan’s experience in this area showed me how to correctly test a system, adding tests that added value and pointing me to a great talk by Ian Cooper which had changed his own perceptions on testing. Throughout my time freelancing I had found how beneficial it was to take yourself away from the keyboard, as a solution to a problem would often appear at the strangest of times. I was worried how this would translate back into an office setting, however, my fears faded when I was introduced to a game called Jungle speed, which we typically play a couple of times a day for this reason.
Every developer wants to feel that they are shipping meaningful code that is going to make a positive difference. Since working at MyBuilder there have been many occasions that I have recieved not only praise from others in the team but also different departments and users of the site. Knowing that we (as a company) are all working for the same goal, is a very rewarding feeling, and a pleasant constrast to the agency environment I have been used to.
The cherry-on-top to my first three months working at MyBuilder would have to be getting the chance to go to my first ever conference Symfony Live London. At this event we not only had a booth but were also sponsers, with a competition attendees could enter. The prize we decided on was a AR Drone that we tried hard not to play with in the office - but in under an hour made the ‘office’ drone, buying a new prize one. At this event I was able to interact with many different people that I had spoken to on my podcast (Three Devs and a Maybe) and followed on Twitter for many years. Along with this I was proud and fortunate to say that I work for MyBuilder, where you have the freedom to voice your opinions on project and big-picture direction. This can be seen recently, with the development decision to pursue using Swift in an upcoming project which I will luckily be heavily invested in.