Six weeks ago, I started the apprenticeship program at Smashing Boxes, and we have another six weeks to go. I’ve read several good books, written a good deal of code, and met a lot of and worked alongside some very smart people.
When I started the program, I had experience with Ruby on Rails development, but there were two glaring issues with the code I was writing: first, I wasn’t writing any tests whatsoever; and two, my code didn’t follow any sort of standards. In other words, it wasn’t very clean code. Refactoring was minimal, and the emphasis was on shipping code no matter what.
From day one in this program, my code has been written test-first. The first few weeks were quite challenging as I got comfortable with Rspec and writing tests before writing code. It’s definitely a change in the way that I think about development, not just the way that I write code. But it’s also become apparent that taking the time to write tests is 100% worth it, especially as the programs that I’ve been writing have gotten more complicated and had more features. Just today, I was writing tests for user sign-ups and email confirmations. Without tests, I’d have to manually visit the website, sign up, wait for the email, click the confirmation link, etc. Now, I just run my tests!
I’ve also been exposed to agile development, which I think is a great way to work. We’ve also seen how projects go from ideas to end-products. And we’ve had a great time in the labs getting to know our co-workers and seeing the interesting projects that they are working on. I’m hoping to start working on real projects in labs soon; until now, for the most part, I’ve been working on apprenticeship projects.
As I’ve mentioned before, my favorite part of the program is working alongside other developers. Getting feedback via pull requests has been very useful, too, and I try to read PRs and feedback on other projects as often as possible. I’ve found reading well-written code has been helpful in my growth as a developer.
I’m currently working on a pretty big project — a full-fledged bookstore app. Users can sign up and sign in; there will be inventory for them to browse; and the site will accept credit card payments. I’ve been working a lot more with cucumber and capybara this time around. Thanks to the help of Derek, who just finished the apprenticeship program(!), I’m feeling a bit more comfortable writing cucumber tests. I can’t explain how great it is to not have to manually “monkey test” every aspect of your app.
I’m also looking forward to finishing Sandi Metz’s POODR book during this section of the apprenticeship program. After I finish the bookstore app, I will be moving into the last section of the program where I will go on a “pairing tour” and experience all aspects of development here at SB (frontend, mobile, etc.), which I’m looking forward to, and I will also work on some capstone projects. Throughout it all, I’m feeling more confident every day that I am becoming a better developer, which is the main goal of this process. I’m very grateful to everyone that has helped me be successful, so far!