Last year, I did something I’d never done in my 5 years of programming with Ruby - I read the docs.
Why did it take me this long?
Until now, the majority of my dev career has been fueled by poking and prodding things until they work, hitting the ground running and on-boarding to a new project or technology as fast as possible. Rather than getting bogged down on the details, I was focused on the output.
This approach is called “top down learning”, or working from the general to the specific. It drives dev bootcamp culture, as in those courses you have mere months to get a dev education before you’re diving into production code.
The top down approach gave me a holistic understanding of all aspects of app development. From day one of programming, I learned how to collaborate in a dev team, work with clients to form user stories, and give demos. I’m glad that I’ve honed these essential skills early on. They aren’t taught in great detail at University. While studying Computer Science, I was absorbing mountains of esoteric information that I had no context for.
But now as I’ve got the basics out of the way, I’ve begun to find that it’s time for some bottom up learning again. Thanks to my initial top down approach, I know exactly what knowledge gaps I need to fill, and my studies can be extra focused and efficient.
I had an enlightening chat with Eoin, Architecture Lead at Ackama. He advised me that you can avoid drowning in the onslaught of short-form blogs, tips n’ tricks posts, and stack overflow answers, by studying good quality textbooks.
The course learning how to learn also inspired me to slow down and put effort into memorization. Facts need to exist inside your actual, squishy brain if you want to use them as building blocks for complex new ideas. Even if the facts are only a second’s google away, there’s no building material for your brain to work with if the information is sitting somewhere on the internet. Simple facts such as language syntax need to spring to mind quickly and easily if you’re trying to solve complex problems.
With these thoughts in mind, I decided to take the Ruby Silver certification, along with another Ackama intermediate developer, Matt Sinnock. This is a tricky, multiple choice exam based on the book The Ruby Programming Language. I studied for a couple of months, then spent the week before the test working remotely alongside Matt on Waiheke Island
I feel satisfied knowing that I’ve done a full pass of at least one language. This knowledge has helped me pick up other languages with ease, as I can now recognise language design choices and compare them with ruby.
We’ve both been amazed at the efficiency gains in our day to day work. To take just one example before taking the practice tests, neither of us was conscious that we hadn’t memorised how to write a simple ruby if/elsif statement! We’ve had massive reductions in repetitively googling syntax. Now, the basics of ruby are just in our brains, as ready to be used as a times table or other fundamental knowledge base.
We also discovered a plethora of handy new methods that we’d never taken advantage of. flat_map anyone?
Many thanks to everyone at Ackama for supporting our learning journey. So many devs took time to discuss nerdy nitty gritty aspects of ruby with me.
I love the supportive culture we have, and I hope that I can pass on what I’ve learned too.
My advice to dev bootcamp grads
Bootcamps are fantastic. But a few years into your career, you’ll find that you’re ready to deepen your knowledge of programming fundamentals. Rather than getting a hodgepodge of tips n’ trick from the internet, I suggest investing time into some good quality classic textbooks. Here’s a few recommended by Eoin:
- Patterns of Enterprise Application Architecture, By Martin Fowler
- Write Great Code, By Randall Hyde
- Working Effectively with Legacy Code, By Michael Feathers
- PostgreSQL High Performance Cookbook By Chitij Chauhan, Dinesh Kumar
- High Performance Browser Networking, By Ilya Grigorik