Makers Academy Ronin Experience - Rob recalls the benefits of attending the intensive online coding accelerator

So 6 weeks on from finishing as a member of Makers Academy Ronin beta cohort, I thought it was maybe time to jot down my experiences, so here we go:

I hit Makers Academy when I was looking to enhance my coding skills above the 'hobby' level, we had all kinds of projects where I had developed small basic standalone apps but didn't know where to start with web apps, at the time taking 16 weeks out of running my company and moving to London didn't seem feasible. Come Feb 2015 an email dropped in my inbox that Makers Academy were trialling an online beta, my company had just gone into an R&D phase for a particular project, this seemed like ideal timing so I negotiated with current clients and colleagues then signed up. I was looking for Makers Academy Ronin beta to take me from being able to write simple stand-alone C# and VB.NET applications at a entry level, to creating a confidence in prototyping web applications and generally gaining an appreciation of how to design and write code the right way to help provide innovative solutions to our clients. I'm happy to report over 16 weeks later that this has been a success I have walked away with an initial set of junior developer skills across a wide range of technologies, a much deeper understanding of the interconnection of these technologies, what they do on a theoretical level, selecting the combination to use and most importantly a new found confidence in how to continue an ever evolving fascination with code in general to solve a problem.

It's hard-work!

There is no doubting it was hard work, I'm used to long hours, as those who have worked with me will know, but constantly tackling unfamiliar concepts for long hours every day is both the most interesting thing I have done and exhausting in equal measure. One of the main pieces of advice I would offer anyone is to embrace the 'immersive' part of the course it is truly a very special aspect to the Ronin experience. It is very rare to get time to wholly focus on one thing, but most importantly to be doing this in a group of intelligent, motivated people, supported by a team of dedicated and inspiring coaches. Therefore not putting your absolute all in is a waste of a fantastic opportunity and Makers Academy makes it easy for you to do this by providing the right environment, fellow students and support. Doing this while still keeping the backbone of a company running is tough if your out to try it, I found early on that it involved setting aside 5-8 in the morning for work as after this I knew the day would easily be filled with code to at least 9 that evening and often later.

Embracing 'not knowing'

I spent a large amount of time feeling out of my depth, but at the same time still learning incredible amounts each day. This inquisitive learning structure is encouraged and supported by the coaches, who focus very heavily on the fact that it is not a 'taught' course but they create a supported learning environment. I found that it can be frustrating to be pushed back when you come forward with a question, to try researching through other routes or post to stack-overflow, but soon came to realise that actually this is also a part of training you to be a junior developer and have the skills to solve problems. This I came to appreciate as a particularly good tactic from the coaches for me, because in the short-term at least after finishing I was not going to be in an environment with anyone with knowledge much enhanced above my own and this has certainly served me well on my initial tinkering with prototypes.

Pair Programming/Learning

From day one you are working in a pair environment for everything you do Mon-Fri. Using the pairing environment to learn is an inspired idea that has multiple benefits;

  • I'm pretty driven when it comes to learning, but working in a pair pushes this to the next level. I found that it was unusual for the level of understanding to be equal in the pair, but this made for an ideal environment. If I was stronger there was a real urge to help my pair reach the same level so we can both push the boundaries, as you are constantly reminded at Makers being able to explain your knowledge to someone else is pushing you the next level up the scaffold. When weaker you have someone challenging you specifically about the points you are missing accelerating your learning and providing a supportive environment rather than a brick wall.
  • It's fun, it is surprising how working on a problem together can be much more enjoyable (or maybe just less painful!) than going alone, again great for keeping motivated.
  • It's great safe learning environment to become versed in the practice, constantly remotely pairing for 16 weeks straight is a phenomenal chance to develop this skill. You will go through the ups and downs of being infuriated by your pair, or feeling like your holding your pair back and a lot of the time feeling the need to high-five as you've just cracked another problem together. It has definitely improved the way I communicate technical problems and my skills in understanding and buying into others ideas or having the confidence to technically critique them.
  • It's a great tactic to keep everyone engaged, from the start everyone realises how much hard work it is going to be and by not having your pair around you can easily get out of sync and not take the maximum benefit out of the experience. Therefore for most this spurs them into making sure they are there and engaged even when motivation is low.
Weekend Challenges

An element of the Ronin experience I found particularly enjoyable, occasionally painful, but always useful, was the weekend challenges. Nearly every weekend of the course everyone has a project to work on, and unlike the rest of the course the idea is you tackle this on your own. I found this really useful as a reflective tool, in understanding what I still needed to improve on from that week before moving on to the next. This also gave a chance for the coaches to provide individual code reviews, incredibly useful feedback from experienced coders on how to step your implementation up to the next level. These are however very time-consuming on the coaches and were not always available the same week as the challenge was submitted, which was sometimes a frustrating, however as part of their agile process I know this is something that the team were working on making improvements to, so I'm sure the next cohort will see improvements here.

Software Craftsmanship - 'Red, Green, Refactor'

From the start of the main course the focus is very much on not only learning how to code, but right from the start learning how to write test-driven, maintainable, beautiful code, conforming to style guides and craftsmanship principles such as SOLID. I have to admit at the start while I was happy to go along with the test-driven aspect of this, which at the time seemed to cause a whole extra load of complexity, apart from the business sense of having tested-code I was struggling to see the real benefit. This all changed as we hit the final project with a team of 5 working on a single code-base it became very easy to see that to have a maintainable code base, it is incredibly important to have test-driven, style-guide conforming refactored to best principles code, to allow another developer to pick up and work with your code.

Agile

Makers Academy works on an agile structure as a business and therefore they naturally translate this into the learning environment. As part of Ronin there is a 09:30 and 14:00 stand-ups, giving the cohort the chance to relay what they have achieved, what they are going to do next and if there is anything blocking them, allowing the coaches to run reactive break-outs on topics that are holding multiple members of the team up. These reflection points are important also in terms of motivation, where as I mentioned before, it is possible to feel swamped for those who do not reflect on their learning regularly, but can maybe feel a little contrived for those who do. I particularly enjoyed an environment which supported reflection, as it fits with how I engage any projects normally and allowed for rapid identification of weaknesses.

Weeks end with a weekly retrospective at the start a general open-house reflective discussion, which was good but sometimes lacked the structure to be highly effective, as with all good agile teams though the coaches evolved this into a confidence survey where in small teams we would spend a couple of hours on a Friday reflecting as a group on our abilities in the topics that week. I found this an incredibly useful structure as someone who was doing this on a daily basis personally to hit it once a week on a group basis challenged my personal conception of whether I really 'knew it'. After mentioning daily personal reflections another element that aided the short term reflection loop was the weekly 'learning objectives' giving a structure to what the 'ideal' set of knowledge was, coming out of the end of a week. Another tactic that seemed to have evolved with agility as we progressed through the course. I think my final point on this topic would be that the idea of learning and seeing the benefits of an agile methodology from resources about it is not a patch on being immersed in an effective agile team as they grow, this has been highly beneficial to be a part of.

Materials

The tactics changed on a weekly basis changing from heavily guided walkthroughs to more exploratory guidance in your pairs. Makers are constantly improving their teaching materials and hence in a couple of the weeks traversing them could be chaotic, but are also good at bringing to your attention external materials and aiding the process of you becoming self sufficient in problem solving. There are huge amounts of awesome resources out there. What the best of the makers materials do offer is guidance that is test driven from the start, which there is much less of in the externally available materials. I hope this is one area they will continue to focus on and improve as it is a definite 'gap in the market' in terms of beginners tutorials. In a good way this is also an awesome mind-set change along the themes of software craftsmanship, that instantly as I come to learn a new language or technology I am simultaneously thinking about how it is test driven and what is available, this is where it is often harder to find guidance as most of the information for testing frameworks and matchers will assume a proficiency in the language. The best of the makers materials have proved to me that it is possible to learn new languages and technologies in a test-first approach.

In summary...

I suppose if I was going to summarise this neatly I would have to round it up as an awesome experience that is truly immersive an requires all your energy, concentration, determination and passion. In an environment that is challenging and supportive. With people who are intelligent, inspiring and engaging. Ronin is a team learning environment that allows you through pair-programming to not only learn how to code and become a junior developer but also to do it with style, flair and following all the traits of a good software craftsman, while having the support of an organisation with some truly gifted coaches. As I have come to realise from the start that the true value of Makers Academy is the team behind it and the support of the community (current students and grads) as a whole.

So I sit here now writing this as I wait for my virtual environment files to upload to S3 (if anyone knows how I can speed this up, please shout!), with Sinatra powering my API and an angular front-end hosted on heroku with a postgres database providing us a way to share our new new virtual environment deliverables prototype with a client and get feedback. There's a whole bunch of things I didn't know a few months ago, let alone how to test drive them all!

Where now ...

Having specifically steered this learning process away from geo focussed subjects, apart from the odd Google maps API integration, to avoid unneeded distractions. I'm keen to escape the world of the desktop GIS and start playing with all the cool web geo tools geoserver, openlayers, postGIS, cartoDB ... here I come! Eventually over time moving from prototyping ideas to building the team to take ideas past the prototype stage. Thanks Makers Academy for providing me with the starting skills and confidence to continue this new passion!

note: Finally I have to put a note here to thank all our clients who took a punt and agreed to being flexible while I undertook this opportunity, it was most appreciated and I hope my new found skills and passion will allow us to innovate on prototypes together very soon.