A large open space with amazing ergonomic chairs where people discuss and execute upon disrupting ideas. It’s right next to company’s game room where you unwind after a hard work day. Here is we as engineers, get to work on products that our customers love and we love delivering that delight by continuous delivery (or something else :P).
Yet the most prominent thing that excites and should excite an effective engineer is the opportunity for learning at work. Optimizing for learning is a high leverage activity and should be on the top priority for every engineer.
Here are 8 ways to optimize our work for learning, deeply inspired by the book The Effective Engineer.
1. Study code for core abstractions written by the best engineers at your company
I have been lucky enough to be the dumbest engineer at Squad. But that has allowed me to learn very aggressively during working hours just by reading through libraries and modules written by other awesome engineers.
So next morning, open that black box that you’ve been importing for so long in your code and dig through it.
2. Do more of what you want to improve
In more relatable terms, if you think you want to improve writing SQL queries, do more of that. If you want to improve at doing code reviews, do more of that.
Practice and deliberately touch your weak points instead of cutting corners. You’ll be amazed how helpful your fellow engineers/friends will be in helping you do so.
3. Go through as many technical materials available
We at Squad have a dedicated slack channel where engineers share good to read articles, blogs and podcasts.
I’ve made a pact to go through each and every article that is shared on that channel irrespective of the domain or the tech it. And so far this has been a catalyst for my learnings on things that I didn’t even know were there to learn.
4. Master the programming language that you use
Read a good book or two on them. Get to the internals of the language that you use primarily at work. We at Squad use python heavily for the back-end, machine learning, data analytics and everything.
Personally, I’ve added 2 great books to my reading list that I’ll be picking next:
5. Send your code reviews to the hardest critics
At Squad, code reviews are in the DNA of engineering processes. I’ve been very fortunate to be on-boarded to the Squad codebase by one of the best and hardest code critics at the company. It really helped me in developing high code quality standards and also the art of reviewing code.
Not only that taught me how to write better code but also how to deliver your code reviews in a respectful manner that the other person doesn’t feel discouraged, something that I always keep in mind while doing code-reviews myself.
6. Enroll in classes on areas where you want to improve
Courses on sites like edx, coursera, Udacity have amazing courses that we can take in our spare time. Let it be compilers, database, machine learning, infrastructure, these platforms have amazing courses on all of them.
Personally, I try to keep exactly one online course in-progress all the time.
7. Participate in design discussions of projects you are interested in
Don’t ask for an invitation. Ask the engineers if they’d mind you being a silent observer or even a participant in the design discussion.
8. Make sure you are on a team with at least a few senior engineers whom you can learn from
This will help increase your learning rate at least 80% of the time.
At Squad, I get to work with one of the most awesome engineers I’ve got an opportunity to work with. That has helped me in learning and polishing things like estimations, product thinking, designing, communication etc.
Conclusion
Our work fills a large part of our life. Making sure that our work is driving our learning and improvements helps big time in maintaining contempt and keep progressing on the path to become a better effective engineer.
Resources
- http://www.effectiveengineer.com/
- https://blog.fogcreek.com/the-effective-engineer-interview-with-edmond-lau/
That’s all, folks!