Apprentice.IO - Week 3
29 Jun 2014
This week my mentor and I worked on a previously arranged project for just the 1 week. This isn’t the typical work flow in thoughtbot but it was interesting none the less. I learnt mostly about code spelunking and getting my bearings in an existing code base. I wrote a few JavaScript heavy features which was tough as I couldn’t get any integration specs to run. The code base isn’t well tested and the client doesn’t see the value in testing. As a result we tested everything we could, but flat out avoided touching anything untested. I felt great because we left code in a better state then we found it, but could not re factor aggressively due to the lack of tests.
I spent about three days working on client stuff and interacting directly with the client. This was awesome as it gave me a real feel for what working at thoughtbot full time would be like and I loved every minute. The rest of my week I spent working on switchboard which is an internal project for managing project work flow. It’s an ember application, and I throughly enjoyed getting involved. There is a stand up every Friday over Google hangouts so everyone is aware of where the project is heading and who is working on what. This, again, has been fantastic for getting involved with other thoughtbotters and getting to know the culture here.
I’ve gotten most of the way through apprentice patterns and wanted to put down some of my thoughts. It’s a well written book aiming to help one get into the correct mindset for being a software apprentice. It is not a detailed discussion of software design, but rather a high level approach to software craftsmanship. Many of the patterns are, to me, common sense, however, there are definite gems that make the book worth the read. I think everyone will take different things away from this book, and some will take more than others, so all I can say is your mileage may vary. I’ve been given Design Patterns in Ruby to read next and I’m looking forward to reading something more directly applicable to code.