Learning at work

Learning at work

Regardless of your knowledge level, there's always something to learn. There's so much material out there these days, that there is literally no excuse to not learning and leveling yourself up.

I personally watch a lot of YouTube, read books, articles, blogs, and participate in various communities related to tech and business. But I'm not here to discuss about this kind of learning today. Instead, I want to tell you a story that made me rethink how I approach learning at the workplace.

I remember at some point reading a book about continuous delivery, understanding a bunch of stuff, and then going to one of my colleagues at work and telling them about it and how we should change our process. I remember feeling so smart, but this person cut me off short and said - We already do most of this. I didn't know what to say. I never actually took the time to understand our own CI/CD pipeline in detail and just assumed we don't have some things just because I wasn't aware of them. Then it hit me - there is a lot you can learn by really understanding how things are done in your team and company. Continuing the example above, I just knew that we had a CI/CD flow, understood a few high-level details, but never got in deep and truly connected the dots. This was a super valuable lesson for me at the time. It helped me understand that I was looking to learn new things from all sorts of places, but didn't realize that I have a lot to learn by just looking at what my team was doing.

Since then I've learned to make learning new things regularly an integral part of my job and I want to share with you 5 practical tips that I use. If I can summarize my approach to learning in a few words, it would sound like this:

💡
Efficient and consistent learning requires you to be humble and curious, while also being methodical and mindful in the process.

1. Be humble and curious

I know what you're saying - How can this be a practical tip? And you would be right. It's a mindset, one that is so fundamental in learning that I had to put it first.

The first step in leveling up your skills is to remain humble. For everything you know there is a lot more that you don't know and being humble enables you to keep learning and expanding your knowledge as time goes by. You have something to learn from absolutely everyone you work with, even if you don't realize it at first. I remember learning cool algorithms from junior engineers straight out of university, how to write good design docs from senior engineers, how to make a presentation from my manager, how to engage with customers from my PM, how to debug production issues from SREs, etc. You might look at these and think they're stereotypical - after all, you're expecting that your manager can teach you about presenting, right? And you would be right, of course. What I'm saying is to look for things to learn where you might not expect them. I remember my manager helping me with complex designs or a junior teaching me about creating better engagement in the team. I remember learning to use Microsoft Excel from someone in tech support. I remember my manager's manager helping me with Unix scripts. Keep an open mind and you can learn much more than you might think.


Pair this with curiosity. Be keen to understand what's going on around you, don't just focus all your attention on your piece of work. This ties back to my article about becoming a senior engineer, which is that you need a breadth of knowledge, not just depth, and curiosity is the key to making this happen.

Hear another team is trying out a new technology? Go and ask them about their choice and experience with it. Do you know how the cloud infrastructure is provisioned? Ask the team that takes care of it to tell you more. Want to know what the customers' pain points are so that you can schedule your work accordingly? Chat with your PM and attend the monthly/quarterly updates on the topic. You can learn so many things from just being curious and many folks will gladly tell you about stuff. This is the best part - being at work creates a safe haven that ensures nobody will make fun of you for not knowing. Actually quite the opposite - you'll get bonus points for being curious and wanting to learn, which can only help you in your career.

2. Reach out

This goes hand in hand with the point above. Reaching out to your peers and asking them to show you a few things about their work is one of the most underused and effective ways of learning. This can be anyone from engineering, product management, sales, etc. It can be your team, other teams, or even other orgs inside the company. Sometimes the farther away that person is from your work, the better - you can get a totally different perspective about things and visibility into what other parts of the company are doing.

This can start from the first week of you joining a new company or team. Setup a short 30-minute call with folks from your team and maybe a few from different teams. Tell them that you're new and just want to learn about their work and I can assure you that most of them will say yes. This gives you the perfect opportunity to start building powerful relationships with them, a key for continuously learning.

Even if you're a veteran in the company, the same thing applies. Identify a few folks from areas where you want to grow and ping them directly saying Hey, I'm from this team and working on this product and I would really love to know more about your work on this other service. Let me know if you have a bit of time in the following days/weeks, would really enjoy picking your brain on this topic.

That's it. Most of the time you'll get a yes, or at least get a contact for another person better suited to the topic. I never got a no in my entire career doing this and believe me, I've asked plenty of times. Sometimes you'll observe folks that just love to talk about their work and teach/mentor others. Consider reaching out to them first. Make sure you have an agenda going into the call, don't just come in and say Show me everything that you do. Be sure to thank them for their time in the end and offer to share your knowledge with them as well.

I can't stress how impactful this can be for your growth and overall career. It will help you make more informed decisions, avoid duplicate or redundant work, collaborate towards a common strategy, and develop powerful relationships that are essential for your growth as an engineer. The most successful people I know at work are those who proactively seek information and knowledge from outside their teams.

3. Be mindful

In order to upgrade your skills, another good strategy is to be cognizant and mindful of different small interactions that happen all the time at work.

Are you in a pair programming session? Pay attention to the tools, process, and approach that your peer uses and see if there is anything that you can borrow. Did you send out a code review for an important feature? Take the opportunity to look at each comment and try to understand the reasoning and implications of each. Conversely, did you get a code review from the staff engineer in your team? Look at how they write the code and identify best practices that you can use later.

Look at how leaders in your team communicate, either verbally or in writing. Look at how SRE engineers debug and investigate issues. Look at how product management is preparing that presentation for senior leadership. Look at how your project manager breaks down the work into smaller chunks. Look at how another senior/staff engineer defends their technical choices in review meetings.

I can give you a ton more examples, but the idea is the same - you can learn so much stuff from your peers just by observing how they do things and picking up what you see working. Of course, it's not always so easy to identify these things, that's why I also encourage you to reach out and ask them directly.

I have learned so many things from my peers over the years, skills that I carry with me to this day and I'm incredibly thankful for that. And while I did ask a lot of questions, a big part of it was just being mindful of the things I mentioned above. It doesn't need to be a big part of your learning process, but it's a powerful tool to have in your arsenal.

4. Keep a to-learn list

Similar to a to-do list, I also like to have a to-learn list and I highly recommend that you do too. Have you ever had something to do and completed it without really understanding the details? I know I have.. many times. Have you wanted to learn more about a part of the codebase or the infrastructure, thought that it's going to take a lot of time, only to realize later that you could have done it in a few hours if you stuck with it? Again, I've done this so many times that I can barely count.

Don't fall into this trap. Once you identify stuff you want to learn, put them on your to-learn list. Sort that list based on impact and return on investment. While you can have an intuition for measuring the ROI of learning, you need your manager's input on this. Your manager is your biggest sponsor, so show them your list, make sure it makes sense for the job and project that you're working on, and get them on board.

One tip here is to carefully consider what you put on the list. Have some things that are useful for you to perform at the current level but also include items that are needed for the next step in your growth. For example, if you're just starting out as an engineer, you might have things like learning new technologies (programming languages, frameworks, tools, etc.) but add a few in the domain of system design. If you're a senior, besides technical skills, consider adding technical leadership and mentoring items to the list. If you're a staff-level engineer, look towards influencing, domain/business expertise, and strategy across multiple teams/orgs. Just a few examples, but you get the point - learn just enough of what you need to be successful in your current role. Spend the rest of your learning time and budget on learning for what comes next.

Oh and by the way, consider adding some items on this list as individual development goals for yourself. It not only shows that you're taking your growth seriously, but you'll get bonus points for thinking about it in advance and aligning it with the company's vision.

5. Make it a priority

I left the best tip for last and that is if you want to learn something new, you need to make it a priority. It's so easy to focus on your work at hand and ignore or postpone learning new things. Focusing on finishing your tasks and shipping that feature or product is admittedly essential to your work as an engineer, but don't let that be the only thing that you do. To make sure this doesn't happen, I highly recommend integrating learning as an active part of your work schedule.

Go talk to your manager, tell them about your plan to learn and grow and get their buy-in on it. This should ideally be done as part of your regular goal discussions. Afterward, agree on a percentage of your time you can invest into learning each week. Always timebox this, so it doesn't interfere with your other commitments. I recommend about 2h for more junior engineers, 4-6h for senior folk, and 8h+ for staff and above. This is each and every week. The reason is that the more you grow in experience and responsibility, the more time you need to spend working on what's coming next. And that's not easy. It involves a lot of research, testing stuff out, and figuring out the best way forward for your team and company. In most successful tech companies, engineering input is key to defining the roadmap and strategy and it usually involves a lot of exploration and learning.


As a closing thought, make sure you're constantly learning something new. In the domain of software engineering, things move so fast and you can't count on your existing knowledge to carry you all the way. For some it's motivating, for others it can feel overwhelming, but just remember to leverage the knowledge of your peers at work and I promise you can still learn a lot from them. So go ahead, reach out to them and see how it goes.