Next month will be my one-year anniversary as a software engineer. I'm working on a blog post that describes various "cheat codes" I've learned that have accelerated my growth as a software engineer. But, in the meantime, I wanted to share some wisdom I learned this week.
As a software engineer, one of the things I struggle with most is code velocity. Whenever I'm stuck on an issue, it's easy for me to spin my wheels and spend far too much time trying to dig my way out of confusion. But the correct way of handling confusion is to:
Indeed, earlier this week, I followed this method, and the act of being unblocked felt so good that it was a complete mystery as to why I had allowed myself to suffer in silence so repeatedly during my first year. In general, I do a good job of asking questions, but my manager believes I can be far more aggressive in asking for help early, and scheduling time to pair program with senior engineers.
"In my 10+ years of engineering, no one has ever been mad at me for scheduling time with them to pair program. If anything, they were more impressed because I established a reputation of doing whatever it takes to get things done.
Edit: While we're on the subject of depth, here's a lovely conversation I had with Heath and Dave about the topic on Mastodon.
On top of asking for help, there are big rewards for software engineers that go deep in their expertise of tools. For me, this means going deep into the Java language, as this is the tool I use daily. In fact, since I haven't kept up with Java since first learning it in community college, my development has slowed down as I parse my way through understanding streams, functional interfaces, and lambda expressions, which weren't taught in CS 102.
My manager agreed that a deep grasp of Java will help speed up velocity. On top of this, he believes a thorough knowledge of concurrency, garbage collection, and thread, heap, and memory dumps will put me in the top bracket of developers because most - including juniors and seniors - do not make the effort to go this deep. He also told me about a service incident that he and a coworker were able to diagnose in 10 minutes - after a whole team took more than a day! - because they could accurately interpret a thread dump.
Hearing these stories were inspiring, and I suspect dumps will be added to my arsenal of "cheat codes" which will accelerate my growth.
In sum, my strategies for success as I move into my 2nd year of development are the following:
Some resources I'm using: