One thing new entrants to the programming world find difficult to adapt to is the constant change. Software has such a lower barrier of entry, and makes it so easy to create and explore new ideas, that it's easy to find yourself lost in the madness. New frameworks, databases, and processes are spun up all the time-- and it can be a separate job entirely to maintain your skillset.
One thing that does not change, though, are the soft skills. The greatest engineering leaders of the past were not writing React code or using serverless architectures, but they still likely shared the following traits with today's leaders: the ability to communicate with clarity, knowing how to cater messaging to one's audience, and being able to triage problems in a group and break them down.
At the same time, they also need to be able to keep up with tech-- and thus, being able to learn enough to be dangerous quickly is also an important consideration.
The overarching umbrella theme would be to develop soft skills. Such skills are what separates junior from senior engineers, followers from decision makers, and stagnant careers from incredible ones.
What is the skill that sums this up? Perhaps surprisingly, I'd say sales.
When I was a junior engineer, I didn't understand why sales was so important. It seemed like they just talked to people all day long, and were well rewarded. Shouldn't anyone be able to do it?
It turns out they were challenging conversations to have, and are just as important as good engineering. Without conveying the right information in the exact way, no one would buy our products, and engineers wouldn't get paid.
Salespeople who are technical are incredibly rare and kill it in industry. However, even rarer are software engineers who can present and sell themselves and their products well.
Remember that software doesn't exist so programmers can play with new tech-- that's a nice side effect, but it exists to solve human problems. Contrary to popular belief, users and customers could care less whether the app is written in Ruby or Java. Does it work how they need it to work? Do things show up on the screen as expected? Is it fast enough for them to what's necessary?
Developers have a tendency to get lost in the weeds of code, and forget the intention of their work. The codebase is only a part of the value you're offering-- the other value is how to use it, how to maximize the benefits gained, and how to build upon it.
How does one get better at this? I believe there's three primary skills involved in selling: writing well, speaking well, and connecting well. Let's examine these:
If you've been a developer for any amount of time, you'll be aware of the amount of writing and reading that goes on outside of a codebase.
Unfortunately, great writing is the exception and not the norm. It goes beyond simple grammar and spelling (the syntax) and is more about:
To get better at this, find opportunities to write as much as you can and solicit feedback. Cal Newport's book on building hard skills is great for motivation. Ask around for comments on your design documents and other forms of documentation. See if they're helping people, and be sure to note what largely gets ignored.
Read good written communication-- books, best selling fiction or non-fiction is a great place to start. It's amazing how nearly all of the most respected thinkers in philosophy, business, or even entertainment have the clearest writing. Principles by Ray Dalio is a really good example of someone who's thoughts are so succintly distilled, and it no doubt contributed to his success in executing controversial ideas.
Also, check out Stephen King's On Writing to get a vantage point from a master.
The other half of communication is via verbal discussion. Whether it's speaking in a one-on-one, in a meeting, or in front of thousands-- knowing how to say something is just as important as what to say.
This topic also goes beyond being a smooth talker-- the best engineers and leaders are usually willing to have very difficult conversations.
This is partially thinking on your feet, and partially feeling like you have the respect and authority to deliver your thoughts.
To develop this, I offer three things that have worked well for me:
Seek out discomfort - usually the scariest things we encounter in modern day life involve other humans. It's uncomfortable to voice a dissonant opinion in a meeting with executives. It's scary to go alone to a meetup. But willingness to embrace discomfort is what enables you to stretch yourself. With enough practice, the guards we maintain in our verbal communication loosen up, allowing us to be more open.
Learn how to have tough conversations - Crucial Conversations and Never Split the Difference are excellent books about controlling the emotional side of things so that you can discuss the important logical topics.
Look for opportunities to do public speaking
One last thing that is a "sales skill" is the ability to form connections.
In Breaking Into Software? Hiring Secrets You Must Know From a Tech Career Advisor, Dan had the following money quote:
The people aspect is something I talk to students a lot about because it seems frivolous, and tons of folks have some anxiety about building a network. Look, it ultimately comes down to genuine curiosity and interest. It's about having a deep sense of empathy and adding value to the other person's life.
We’re all related in some way - maybe you and the engineer you're talking to went to same high school? Or college? Or grew up in the same area. You might share the same interests or engage in the same activities. There's always a way to connect.
Of course, I'll end with a book recommendation: the classic How to Win Friends And Influence People shows you an amazing foundational skill set to build your network on.
Sign up for our newsletter list and join over 3,000 brilliant developers leveling up and solving coding challenges daily.