Being a good programmer and having a high degree of technical competency is great, but it will only take you so far.
If you really want to excel, if you really want to take your career to the next level, you’ll need to learn how to build a solid reputation—how to market yourself and build a personal brand—that will open up the doors of opportunity that are locked to everyone else.
How do I know this?
I spent most of my software development career relatively unknown—ok, completely unknown.
I worked hard to develop my technical skills.
I spent a good deal of time honing my craft, reading book after book about software development, reading blogs, learning new technologies, and practicing what I had already learned.
I taught and mentored other software developers on my team.
I did everything I could to improve myself in the best way I knew how as a software developer.
Now, I’m not going to tell you I didn’t have any success. Of course I did.
I had a decent career.
I struggled from time to time to land jobs, but overall I got some pretty good jobs and opportunities, though nothing major.
I quickly hit “the glass ceiling.”
The point where I couldn’t really make more money as a software developer and there wasn’t much I could do about it, or so I thought.
Then I started my blog, Simple Programmer.
The initial idea was just to blog about topics that I felt certain software developers were making more complex than they really were in order to make themselves seem smarter and more valuable.
That’s why I called the blog “Making the Complex Simple.”
But as I started writing and more and more people started reading the blog, something interesting happened.
When I attended Code Camps and events some people would know who I was, or they’d at least be familiar with my blog.
I started contacting some popular podcasts with the offer to be interviewed for their show, and more people started to know who I was.
Pretty soon I started getting job offers, and not just from spammy recruiters via email.
And then one day, when I was sitting at my desk, I got a call from a company who just wanted to hire me on the spot.
No interview, nothing.
All their developers were readers of my blog and had heard my podcasts or taken some of my Pluralsight courses.
I didn’t think that was possible.
I had never heard of being offered a job without an interview.
Things only increased from there.
I focused on actively building my brand and marketing myself—in fact, I started teaching other programmers how to do it—and suddenly my head was crashing right through that glass ceiling.
So many opportunities came my way that I had never even imagined.
Fast forward to today, where literally the decision to start my blog made me millions of dollars, allowed me to “retire early,” and led me to the business that is Simple Programmer.
Now, you don’t have to go down the same road I did—not everyone wants to retire early and become an entrepreneur—but wouldn’t you like to get your dream job?
Wouldn’t you like to get paid more money?
Wouldn’t you like, just once, to read an article in a popular software development magazine that you wrote?
Wouldn’t that be cool?
Good. In this chapter, I’ll show you how.
The Benefits Of Being “Famous”
Before we get into how to build your reputation as a software developer, let’s talk a little bit about the benefits of being well-known.
Consider, for example, the difference between a really good chef and a celebrity chef.
A really good chef can make a decent amount of money.
But a famous chef, who is on TV, makes a shit-ton of money.
Does it really have to do with how good that chef is?
Really, ask yourself if the chef that makes $1 million a year is 10 times better than the chef who makes $100,000 a year.
Do you think that is even possible?
I mean, I’m for gourmet eating and I love food, but food is food.
It can only taste so good.
So if the difference isn’t skill, what is the difference?
That’s right. Reputation. Fame. Essentially, being well-known.
You could look at a similar phenomenon with musicians, actors, plastic surgeons, lawyers, real estate agents, you name it.
The point is, you get unequal rewards for having a reputation.
You get paid more than what your skills deserve.
This is a good thing—a very good thing—if you can achieve it.
But not only do you get paid more if you have a reputation—if you are “famous.”
You get people coming to you, jobs coming to you, opportunities coming to you, instead of having to go out and chase them.
This is really good.
Style + Substance
I, unfortunately, named one of my flagship courses on building a reputation and a personal brand for software developers, “How to Market Yourself as a Software Developer.”
Why do I say this naming is unfortunate?
Because, at the time, I didn’t realize how opposed many software developers are to self-promotion and the idea of any kind of marketing, especially marketing themselves.
That doesn’t mean that the course isn’t valuable or it didn’t sell well—I’ve sold hundreds of copies of it and it’s taught many software developers how to build that “fame” we’ve been talking about—but if I had named it a little better, I probably wouldn’t have produced as much of the knee-jerk reaction that many programmers have when they hear the word “marketing.”
But regardless of how other developers may respond, you’ve got to get over that.
You have to realize that self-promotion, building a brand, and marketing are not bad things.
It’s all in how you do it that counts.
There is this formula I often quote which looks something like this:
Skills * Marketing = $$$
You could rewrite it to:
Substance * Style = $$$
Programming Ability * Reputation = $$$
A friend of mine, Jason Roberts, coined a similar phrase which defines this phenomenon called “Luck Surface Area.”
It’s basically the idea that you can be the best programmer in the world, but if you are sitting alone in your basement and no one knows it but you, it doesn’t really matter. You aren’t going to have much of an impact.
But if you can get out there and promote yourself a bit—we’ll talk about how in a bit—you can achieve phenomenal results.
In fact, you don’t have to be the best programmer in the world. I’m not.
I’m not the “best” at anything, but what I am is “well-known.” (At least in the programming world.)
I’d rather have a medium amount of skill and a huge reputation than a huge amount of skill and no reputation.
You can’t focus on just being “great.”
That’s not a very profitable career strategy.
On my wall I’ve got a framed poster that has two dimensions: talk and work.
There are three combinations of the dimensions:
- High talk, no work = Charlatan
- No talk, high work = Martyr
- High talk, high work = Hustler
Be a hustler.
Creating A Personal Brand
Good; let’s move on.
Before you can promote anything, you’ve got to know what you are promoting.
If you want style + substance, you have to have style.
So, how do you get style?
What is style?
It looks quite a bit like what the cool kids these days are calling a personal brand.
A personal brand is just like any commercial brand, except it’s a brand that represents you.
The first thing you need to do when you create your personal brand is to define what it is that you want to be known for.
And you can only pick one thing at a time.
That’s what makes it so difficult.
(We’ll talk more about how to do this in the upcoming chapter on specialization.)
For now, let’s just say that you need to come up with the simple elevator pitch that you’ll give people—a one-liner, if you will—that represents you and your brand.
If I ask you what you do, what do you say?
Do you ramble on about the 100 technologies and programming languages you know, or do you have a simple way to describe yourself—your brand—that people will remember, so that when they introduce you to someone else they say, “Hey this is Joe, he’s the guy who teaches people how to create animations in Android.”
When I’m at an entrepreneur-type conference or event and people ask what I do, I say “I teach software developers how to be cool.”
That’s essentially what my current brand is built around.
It’s personal growth for software developers.
Simple Programmer represents that.
Branding starts with a clear, simple, and concise message.
Who you are and what you represent.
From there, you go forward and actually create a logo, pick a set of colors that you consistently use, get a headshot that you consistently use, etc.
You may have picked up from that last sentence the other two components of a brand.
In case you weren’t paying attention, the first one is your message.
The second one is visuals.
This is your logo, colors, etc.
And the third one is consistency.
Without consistency in message and visuals, it all falls apart.
If you want to have a brand and not just a flavor of the week, you have to be consistent.
So pick something and stick with it.
Even though people tend to focus on visuals when message is way more important, you should start with your message.
How To Become “Well-Known”
Ok, so I lied.
There is one more thing you need for a brand of any kind.
You see, you could have a fantastic brand.
You could have a clear, concise, targeted message.
You could have a kick-ass logo of a frog holding a flaming sword on it.
And you could be consistent everywhere you apply your brand’s message and visuals.
But… if you don’t have repeated exposure, it doesn’t matter. It’s not a brand.
People have to see and hear about your brand, and they have to see and hear it more than once.
In fact, I’d say it takes about four-to-five exposures to a brand before someone recognizes it and says, “Hey, I know that guy.”
So, you’ve got to get out there and get in front of people.
You’ve got to get your name out there.
“Well, sheesh John, how do I do that?,” you ask?
Since I don’t want to repeat myself and I’ve already produced a large amount of content about this topic, I’m going to just give you a quick rundown here.
If you want, you can fill in the gaps either through my section on marketing yourself in my Soft Skills: The Software Developer’s Life Manual book or How to Market Yourself as a Software Developer course.
The basic strategy is to start with one channel or medium, learn how to master it and systematize it so that you can be extremely prolific and effective on that channel, and then expand so that you are essentially everywhere.
Let’s break that down.
Suppose you said I’m going to start getting my name out there by starting a blog and writing blog posts.
That would be the channel you’ve decided to master.
So, you create your blog (check out my free course on how to do that) and you start writing.
Eventually you develop a system for writing effective blog posts.
Perhaps you develop the system to the point where you can actually just do the writing and have someone else edit the post, schedule it, add images, etc. (hmm… why does this sound so familiar?)
Then you use that system to become very prolific, and you start going from one blog post a week to three posts a week.
Now you are starting to really get your name out there.
From there you expand and you decide to move to a few more channels.
You start a YouTube channel, start reaching out to software developer podcasts to be interviewed, perhaps write for a software development magazine, and submit to speak at some software development conferences.
Now your brand is getting out there through repeated exposure.
Now, wherever anyone goes in your space, they find you or hear of you or see you.
Do this for long enough and be consistent, and over time you will become “well-known.”
Maybe not “I want to take off my underwear and throw them at you” famous (this hasn’t happened to me yet), but you’ll build up enough of a reputation to increase your luck surface area tremendously.
Here is a list of ideas or channels you can use to get your name out there:
- Your own blog
- Guest posting for other people’s blogs
- Writing a book
- Writing magazine articles
- Getting on someone else’s podcast
- Creating your own podcast
- Creating a YouTube channel
- Being a really active Twitter or other social media user
- Speaking at local user groups and code camps
- Speaking at large developer conferences
- Creating a popular open source project
Create Value For Others
Here’s the thing: just doing all of this stuff and wanting to be famous isn’t going to make you famous.
I know I said it would, and I know I lied before when I told you all you needed was a cool logo and a message, but I lied again.
You see, the perfect brand and all the self-promotion in the world won’t amount to anything if it’s not all based on this one important thing, this one important principle or idea: create value for others.
And preferably free value.
90 percent of what I do, I give away for free and 10 percent I charge for.
My focus is giving people as much value as possible so that they’ll not only consume my message, but spread it.
I want people to say, “Hey, that Simple Programmer dude, John Sonomez, or whatever his name is, he’s a cool dude, you should check out his stuff. I got a job and a girlfriend because of him.”
The best possible marketing you can do is to add value to other people’s lives.
Be known as a giver.
Be the kind of person who other people want to be around and associate with because they feel like when they are around you they are benefiting.
So many companies and brands fail because they try to milk their customers for whatever they can.
They try to extract value instead of inject value.
I promise you that if you are injecting value and making a real difference in people’s lives, and on a consistent basis, you will reap the rewards of doing so.
One of my favorite quotes of all time says:
“You can get everything in life you want if you will just help enough other people get what they want.”
–Zig Ziglar, Secrets of Closing the Sale (1984)
So, whatever you are doing, first think about how it will create value for others.
It Takes Time
Finally, you have to realize this is not something you are going to achieve overnight.
In fact, it’s going to take you a very long time to really see any noticeable results of your actions to create reputation.
That’s one of the reasons why you had better start now.
Oftentimes, new software developers or people just getting into software development tell me that they aren’t ready to start a blog or start building a reputation, because they don’t know enough yet.
You’ll never “know enough.”
You have to get started before you are ready because there is a large lead time before you see any results.
Even if you are new to programming, you have something to offer.
You can share your journey as you learn to program and other people will find that useful.
You can pick a specialization to go deep on and share the journey as you take yourself from novice to expert on a subject.
That journey has immense value for others who are looking to do the same.
So, start early—before you are ready—and be patient.
It’s going to take time, but you are going to get results if you keep at it.
The problem is many software developers start a blog and write blog posts for about a year, see no results, and give up.
You’ve got to be willing to stick it out longer than that if you want to have success.
It might take you two or three years, or even five years, but if you keep pushing forward, you’ll eventually get there.
Most people never achieve anything great in life because they give up too soon.
Don’t be one of them.