This post was inspired by a snippet from Tony Fadell’s book — Build.
Over the last 30+ years I’ve seen what humans need to reach their potential, to disrupt what needs disrupting, to forge their own unorthodox path.
Build, Tony Fadell
The Problem
I’ve interviewed several engineers with 5 to 15 years of experience. The majority of them were excellent, but many, in my estimation, were yet to realize their full potential. They are smart, communicate clearly, and demonstrate the necessary aptitude and the will to tackle larger engineering problems. Unfortunately, their work experience hasn’t afforded them the opportunity to rise to their true potential.
The Baker’s Paradox
In some ways, corporate work is equivalent to waking up every day and making a hundred loaves of bread. Your baking must be uniform, resulting in similar-tasting bread of consistent shape, size, and quality.
While at school, you are taught to make bread but you haven’t had that many reps yet. You start working for a company and manufacture bread day after day, all day. You become skilled at creating one type of bread, your manager will regard you as a reliable employee, and you may even earn the title of Star Baker because the bread you produce is good and consistent.
However, you are still far from your true potential. You can only make one (or a few) kinds of bread exceptionally well. With time, you become complacent. They pay well, you receive regular promotions, you may even mentor/manage a few junior bakers, who will look up to you. After 10-15 years you are regarded a competant baker, but you haven’t really learnt any new skills in a long time.
In reality, you have progressed from a
Beginner → Advanced Beginner
and not from
Beginner → Expert
The Self-Learning Void
Another problem is the difficulty in self-learning. Semiconductor engineering does not lend itself well to weekend experimentation. It’s not like software engineering, where a hobby can be turned into a Minimum Viable SaaS Product or a Web App for little to no money before being taken to the market and evaluated for economically viable.
Cadence, Synopsys, and Siemens sell pricey chip-making tools. Open Source tools and the ability to tape-out small projects are in the works, but we’re still getting there. The Maker world with FPGAs, Arduinos, Raspberry Pi, sensors and breadboards, while exciting, are an insufficient proxy.
Another issue is, unlike in the field of software, in hardware engineering information is not readily shared. Companies are secretive and apprehensive about giving any edge to their competitors. There are a lot fewer blogs, YouTube channels, and activity on Stack Overflow is sparse.
The side-effect of a non-vibrant community is, engineers mostly learn on the job from their peers and mentors, and end up specializing only in that specific narrow silo that they work in.
Giving credit where it is due, there are a number of incredible semiconductor and computer engineering substacks. However, compared to the software industry, we as a community still have a long way to go.
Potential Solutions
The recipe to reach your true potential needs 4 ingredients —
1. Workshop: A place to experiment, learn and make mistakes at creating new recipes.
2. Inspiration: A mentor, someone you can ask questions to. Someone who can diagnose the issue with your sourdough by looking at it. Someone whom you aspire to become one day.
3. Community:
+ Expose yourself to things you would not have considered. The chance to be amazed and wonder, "Holy sh*t you can really do that?"
+ A bunch of equally passionate learners. A study group, just like in university, where you can discuss new recipes and exchange ideas.
4. Stage: An opportunity to showcase, present, and receive feedback on your work.
Now, how do you apply these 4 ingredients to your own development?
Workshop
Work is not the place to experiment. Semiconductor companies are risk-averse, for good reason. You are expected to use tried-and-true methods.
Today’s chips are complex, and the majority of ASIC/SoC engineers work on a sub-module of the chip. However, the code base and your teammates are at your disposal. Dig through other people’s code, study documentation, and ask questions during lunches, walks or any opportunity you get. Ask them why they made certain architectural decisions. Why was this memory type selected over the other? Why was this hash algorithm selected? Even if you only work on a portion of the chip, you must develop a sufficient understanding of the whole chip through this type of investigation.
Learn to compile and simulate other pieces of design you aren’t working on. You can of course use company resources and tools for this. Your company stands to benefit from your increased expertise.
If you’ve always inherited large code bases, learn to build toy designs from first principles. You may not be able to use company resources and tools for this, but I’ve found EDA Playground and my own Xilinx FPGA setup at home very handy for this type of exploration.
Inspiration
Actively seek out a mentor, whether within or outside the company. Someone with whom you feel comfortable sharing your experiments or discussing ideas that excite you. Someone whose code you enjoy reading and whose concepts inspire you.
Don’t limit yourself to books and blogs about hardware engineering. The world of software engineering is a tremendoes source of inspiration, and you’ll be astonished at how useful concepts learned in software engineering may be applied to chip development.
Refactoring and The Pragmatic Programmer are two of my all time favorite books.
Community
In 2012, one of my software engineering friends pulled me to PyCon, the Python conference. As a hardware engineer, I had no business being there. But the conference was just down the road from where I worked, so I tagged along with this friend. That one weekend forever changed the way I think about and write code. It exposed me to a whole new world of engineering, and even now 12 years later I’m still delving down rabbit holes that I started after that conference. This conference inspired me to build a set of skills that are uncommon among Hardware Engineers.
Conferences like DVCon and SNUG are the BEST places to learn what engineers at other companies have discovered. It is the best learning resources for semiconductor engineers. At every chance, ask your company to sponsor your attendance at these conferences.
Stage
Presenting your work is important. It forces you to take a pause from all of your learning, reflect on it, and distill your ideas into coherent paragraphs and diagrams.
At least once in your career, you must present a paper at one of the conferences mentioned above.
This process will teach you some really good skills; you have to step out of your comfort zone, write a proposal, and perhaps get rejected. And if you are accepted, fight those nerves, overcome the impostor syndrome, and get up on that stage.
Start a blog or substack, its never been more easier to do this.
That’s all for this edition of Chip Log. If you enjoyed what you read, share it with your friends and colleagues. Subscribe to be notified of the next post.
Image credit: Screen Rant