How to get the most out of your work experience
A blueprint to extract two different kinds of experiences, implicit and explicit, from your work
The Problem
Chip/SoC development cycles are long, typically taking 2-3 years to design, implement, verify, tape-out, and then bringup. Considering the complexity of chips these days, in order to stay competitive and ship a product in a reasonable amount of time, the team sizes even at chip startups are large (at least in the tens, if not hundreds).
From the individual engineer’s point of view, with the ever-shrinking project timelines, there’s enormous pressure to deliver your work at a high quality and in a short amount of time. This means that you will likely work in a silo on a small section of the design throughout the project.
In subsequent projects (for example, the next revision of the chip), you are likely to continue working on the next iteration of the same block. This is obviously beneficial for the company because they already have someone familiar with that block, but you may prefer this option as well because you now carry a certain weight being the expert or go-to person for that block, and since you slogged the last time, doing this again will allow you to take a little break and work at an easier pace (since the code you had written is reusable).
The problem really is that at the end of 6-7 years, when it comes time to sum up your experience at that job, you realize you’ve just worked on one thing. If you are thinking about changing jobs, your set of marketable skills may not be very impressive to potential employers.
The Question
How do you get the most out of your current job?
A Potential Solution
You can extract two different kinds of experiences from your work — implicit experience and explicit experience.
Explicit experience
Explicit experience is the work you’ve been assigned, the tasks that you perform day-to-day. Here are some ideas to make the most of it. Doing the following will demonstrate to your current and future employers that you have the aptitude, willingness, and capacity to own the work entrusted to you:
History: Going a step farther and learning the history behind your particular block. If you are working with the GDDR6 memory interface, for instance, investigate further what distinguishes GDDR from LPDDR and HBM as well as the subtle differences between GDDR6 and its predecessor, GDDR5.
Compare: Look into the most recent advancements in your immediate area of work and discover how other companies are doing the same thing. Papers from conferences like DVCon, Hot Chips, DesignCon and SNUG are the best resource for this.
It’s easy to get caught up in the rush to meet deadlines and get hyper focused on the task at hand. All the exploratory work mentioned above might have to come at the cost of a few weeknights or weekends, but it will make your work more satisfying.
Patent: Explore whether any aspect of the design (or a variation of it) is unique and patentable. Most businesses value this kind of contribution.
Publish: Find an opportunity to publish and present your work at a conferences. In the process of preparing for a conference, you will pick up several important soft skills that will make you a well-rounded engineer. It also provides the opportunity to network with engineers from other organizations.
Workflow: Take the time to develop a good workflow. Iterate and refine it. When a task is assigned to you how do you start? What tools do you use to maintain daily checklists? How proficient are you with diagramming tools, Vim/Emacs? Do you have keyboard shortcuts for frequent actions? These are little things that improve your style and mode of work.
You must use your explicit experience to hone your craft and polish your tools so that when it is time to sculpt (i.e., write code), you will produce something you are proud of.
Implicit experience
Implicit experience is the experience you can derive from just being part of the project and a wider team. Here are a few ways to maximize your implicit experience.
Fly on the wall: Being in a chip team means you have access to specialists in other domains such as, Static Timing Analysis (STA), emulation engineers, seasoned architects, signal integrity experts, and many more. By being a fly on the wall during meetings (and paying attention) you can experience the kind of problems people are facing in their own blocks and how they are working through it. During lunch or a walk, you can further probe your team mates to understand their domain a bit more.
With implicit experience you are essentially collecting stories of others’ experience. Stories are important, because these stories will then influence how you think and design your blocks in the future. These stories are part of the experience you are developing as you transition from a junior to a senior engineer to a director.
Finding your Minor: At university, there’s this concept of majoring in one subject and minoring in another. This very much translates to work as well. While you are “majoring” on the tasks assigned to you, pick a minor (some other part of the project which interests you).
Seeking a mentor: This can be a whole article in itself. Mentors are not just for new college grads, you are never too old to have a mentor.
Good mentorship allows us to stand on the shoulders of giants and look further ahead. Seek out a mentor, someone you aspire to become.
In a nutshell
If you approach your job with this mindset of implicit and explicit experience, when you sum up your work at that work place it will look different. You will genuinely feel like an experienced engineer and you will have developed a much richer tool chest. You will have a better framework to solve problems, and you will be able to borrow from a richer set of lessons.
That’s it for this session. See you in the next one.
This is really great advice for any field. I sure related to this, as most of what are marketable skills, are usually very different from your day-to-day tasks for a job. Its the other things you've learned and tried along the way to accomplish the one task.