How to Remain Valuable in an Ever-Changing Scenario of the Tech Industry
The key is not to Learn About The Next Hot Thing, But to Focus on What Remains The Same in the next 10 years
A few days ago, I was listening to Lex Fridman's podcast interview with Jeff Bezos, and one thing stood out to me: how he views what to focus on in his business.
From his point of view, to operate a successful business in an ever-changing world, you need to focus your energy on the big things. What are the big things? They are those that won't change over the next 10 years.
"I know 10 years from now, customers will still want low prices, they will still want fast delivery, I know they still want a big selection. So, I focus on those things diligently. We often want to find new problems. Because a new problem or need means we can develop a new solution. It feels easier the more important task is to come up with better solutions to the same problem or need. It is harder but much more likely to make a difference. It is what Amazon does."
20 years ago, the web revolution disrupted all industries left and right, and all software engineers were busy learning HTTP protocol and JavaScript. We are undergoing another AI revolution where all industries will be disrupted; there will be a new tool that we will be learning, which puts fear in all experienced engineer that their skills will become obsolete. I know I didn't think this way 6 years ago when I graduated from college, but now I am years into my career, I finally understand the worries a tenured engineer told me years ago.
However, the problem with this mindset is that we need to focus on the right thing.
Rather than the sexy speculation of what will change in the future, our effort is better spent on the boring truth of what stays the same. Consider the dotcoms. Most people were running around and saying this time would be different. Warren Buffett wasn't. Instead, he was sitting in his office in Omaha, asking himself what would stay the same.
I have been thinking about my career in the wrong way.
Instead of thinking about what I should learn NEXT so that it can be applied in the next 10 years, I should think about what will not change in the next 10 years and focus on honing that thing. It can be a skillset or soft skills—anything that will still be valuable within the last 10 years and is still valuable right now.
What are the Things that don't change in Software Engineer Career?
Effective Communication
To communicate effectively, you must be able to learn the smell of the room and wait for the right moment to project your ideas.
It requires empathy.
This career won't succeed as a lone wolf.
It requires a team effort.
Effective communication and collaboration among team members, including those not technically inclined, is crucial for success.
Effective communication is a more powerful tool than programming because it helps you comprehend requirements more accurately, express your thoughts clearly, and cooperate on solutions.
The key to successful projects is a leader who can communicate effectively with both technical and non-technical stakeholders.
I wrote about effective communication from a first-person point of view and in-depth here if you are interested.
One takeaway is to understand the goal of what the person is trying to ask and give them an appropriate response so as not to further confuse the problem.
Effective communication is a skill that can be learned and is worth investing in. Over time, you will notice the results as people perceive you differently. They may ask you for help because they know you can provide the desired solution. In other words, you become immensely valuable because you have saved them time in reaching the desired outcome.
Technical Fundamentals
Each programming language is similar but in a different way.
Look closer at the design decisions instead of the syntax surface level. They're all just down to interacting with a block of memory cube, adding and removing bytes around efficiently.
Lower-level programming languages or objects that require memory usually have a pointer that can be referenced or dereferenced. Some languages let the programmer take that control, but others encapsulate it for you.
Most classes in programming languages act as blueprints for constructing an object, and most languages also contain interfaces that serve as contracts for what specifications and types to expect from those arguments.
Dedicate time to mastering these essential skills. Understanding these areas will help you adapt and excel in any technological environment.
As cliche as it is, there is a reason why companies hire candidates with specific programming skill sets.
It doesn't require further investment in educating candidates on nuances and gotchas of that language to do the job.
Candidates with strong fundamentals can also make the team more productive. For instance, understanding how to write in a Pythonic or Scalaish way can decrease the amount of back-and-forth on PR review and increase the team's productivity. Each time I conduct a code review for an engineer who is not well-versed in the Scala programming language, the first PR iteration is always about how to write Scala more efficiently.
"But, Edward, those are just syntax differences; it doesn't make sense to make comments on how to write code in a certain way. Overall, those are just tools."
Yes, yes, you are partly right. I heard a lot of online sources talking about code review, which shouldn't be about the style of the code but the content of the code.
I used to also think that way. However, after reviewing thousands of lines of code from various developers across multiple companies, my view has changed.
If you consider writing code equivalent to writing an article, the coding style will be equivalent to the grammar.
There are certain ways to express your intent to the program. for each programming language Some languages, like Java, will imperatively express looping an array. However, languages like Scala express looping an array in a declarative way. This is equivalent to each language that you speak having different grammatical rules.
Now, if you don't abide by that language's grammatical rules, the content you project will be fuzzy, and the listener will have a hard time understanding your intent. This differs from writing programs since everything is compiled into byte code. But the code that you write is not really for the machines (or else why not just write assembly code instead of high-level language); it is meant for fellow humans to understand, and each language has its own way of expressing its intent.
Thus, a style that doesn't abide by that programming language is a distraction for the viewer, and it becomes harder to reason about the intent.
If you are writing code in that programming language, understanding the nuances and the style of how people express their intent in that language will really help and be valuable to the team.
Core computer science fundamentals, including algorithms, data structures, and programming paradigms, are the bedrock of software engineering. These principles are likely to stay the same because they form the logical foundation upon which all software is built.
Business and Market Fundamentals
The ability to align technological solutions with business objectives and market needs is timeless.
Software engineers who understand the business context of their work can make more impactful contributions.
It is important to know about the industries you work in, understand their business models, and stay aware of the market trends. This knowledge enables you to predict your customers' needs and offer solutions that provide real value.
Platform changes over time, but the market needs to stay.
Twenty years ago, the most popular platform was not the web. Therefore, everyone needs to learn how to play the game of direct sales. They have to learn how to catch an individual's attention in an instant, like pitching a startup idea to an investor to get leads.
Fast-forward to today: Selling products online has become increasingly prevalent, and the game for selling online on certain platforms has also changed.
However, the underlying needs to gain attention and the psychology behind closing the case remains the same. In other words, the fundamentals of triggering emotions, building authority, and trust remain.
Extensive research and knowledge are required to achieve authority in a subject, extent, and education, such as a university degree, or a Ph.D. can help establish authority, as does the doctor who has 10+ years of rigorous study and training in their specialty.
Trust is like a currency that measures your credibility. Successfully completing tasks earns you the trust currency, and the more you deliver on your promises, the more your trust currency grows. With a proven track record of accomplishing goals, people will trust you with more high-impact projects.
If you can master this aspect, you will be immensely unique and valuable to any company that can take you for the next 10 years.
The bar is not even that high because most software engineers focus on technical skills and think that business and market fundamentals are the job of a PM.
How do You Focus on What Doesn't Change in a Software Engineer Career?
Properly Understand What Adds Value as a Software Engineer
Solving problems is a vague word; we are all solving problems at work.
Imagine a colleague or a mentor that you look up to. Why do you look up to them?
Is it because they can articulate their words correctly?
Is it because they are honest with their words each time?
Is it because they are so good at debugging hard questions?
Is it because they are so good at communicating with products that the words they use just click?
Think attentively. What is that one aspect of that person that makes you draw to them and think that they are helpful or valuable?
Imagine if you could project the same personality and characteristics that they had as a person. You will also be valuable.
That characteristic will stay in the next ten years.
And If You Don't Know…
Here is the thing.
Although unsure when a change will occur, you can be sure it will happen eventually.
Likewise, you cannot predict which of your competitors will fail, but you can be prepared to take advantage of any opportunities. While you may not know what products or services you will sell in ten years, you can be certain that customers will still expect high quality, low prices, and exceptional customer service.
While you can't predict when a financial crisis will occur, you can improve your future job prospects by learning new skills to increase your value. If you need help with what to learn or work on, focus on honing the skills you've always been interested in. Doing so may eventually discover a unique advantage that sets you apart.
That's it for today; enjoy the rest of your weekend!