After interviewing over 30 wannabe professional programmers, I started to see patterns. After talking with 100s of developers who want to change jobs, I saw even more patterns.
Programmers have a belief that if you just learn the next skill, then you will be even more employable. It happens to two types of developers; those who want to get a programming job and those that are looking to change from one programming job to another. So you start hitting the books, tutorials, etc. . .
Then the doubt sets in.
Soon you start to believe you need another skill to get that job.
So you start learning that new skill. You frantically start searching Google “Learn x lang.” Pretty soon you realize there is another skill to learn. So you go back to the beginning of learning a new skill so you can be a more employable developer.
The cycle repeats and repeats until a year later; you are back where you started, still not closer to getting a new job or that big raise.
I call this the Developer’s Hedonic Wheel, and if you are not careful, it can drown you.
This pattern draws close to unskilled salespeople. Let’s imagine a seller called Dumb Dan. Dumb Dan talks the same way most programmers advertise themselves. He talks about how fast the car goes in zero to sixty and what safety rating it has. However, the industry changes. Cars upgrade their features. Cars become quicker and more efficient than their predecessors, and their safety record gets better. Dumb Dan is left trying to keep up with the industry and the constant change. Underneath it still runs on the same principles, it did over 100 years ago when it competed with the horse.
All this frantic work of keeping up with industry and guess what. The most important people in a salesman’s life doesn’t care. The customer does not know much about cars only that they need one for their unique situation.
A skilled salesperson, let’s call her Smart Sally, looks, talks and listens to the customer. She uses that information to pick the phrases the customer wants to hear. To a mother of 4 young kids, Smart Sally will tell her that the car has an impeccable safety standard, is roomy and easy to keep clean. She might even relate a story of her kids to the mother. She will pick apart the underlying emotional frustrations and challenges this Mom has. To a person on a budget, Smart Sally will speak of the low cost of fuel, tax, and maintenance. The skilled salesperson will present the right car for the customer and not apply a one size fits all mentality.
Aspiring developers would do well to keep the Smart Sally in mind because their career will trend more towards the richer side if they manage to communicate like Smart Sally.
In a sense, we are all salespeople and what we are selling are our skills. Your customer is your employer (or clients if you freelance). Like the experienced salesperson, you must consider what they need and not sell them on your features.
Employers don’t care about how many skills you have; they care what your skills can do for them.
When you are talking to the hiring manager, they want to know a few key things:
- Will this person be a good fit?
- Can this person do what the business needs them to do?
- Will this person make me look bad?
- Is this person worth the money and time?
Most businesses hire people to do two things:
- Increase profit
- Lower Cost
A lot of companies are run based on principles learned in University college courses. Every business has what they call a “Profit Cost” model. A businessperson will ask the following: what is the least amount we can spend to generate the most amount of profit?
As a developer, you are a cost. A business does not want you unless you can dramatically do the following:
- Cut their costs more than what they pay you.
- Make X times value on the price they pay you.
Don’t call yourself a programmer and Learn how to position yourself
Anyone who codes for a living has the luxury of calling themselves what they want since most names are interchangeable to non-coders. You can call yourself a Coder, Programer, Developer, Software Developer, Software Engineer and even stick a language in front of your title, e.g., Ruby Developer.
Do yourself a favor. Try and find the title that will get you the most interest. I regularly change my title on LinkedIn to see what brings in the most responses.
You can also test it with people. Whenever I would go to parties and people would ask me what I would do, I would say different things. One day I would call myself a programmer and people would roll their eyes. Soon I started calling myself a Software Engineer, but they didn’t like it.
So I started calling myself a Software Developer. This title led to more stimulating conversations as people started telling me their experiences with IT. Some of these conversations have later gone on to become opportunities.
Don’t Just List your Skills
In an interview, don’t just talk about what computer languages you know. Most people don’t care. However, if you can relate your previous experience to their current frustrations or challenges, you will strat to stand out more.
A lot of what I learned in college was not useful in the real world. However, in a sociology class, my lecturer taught me a lesson that still comes in useful today. The ability to paraphrase what you read and hear. This skill not only gets you a high mark in Sociology 101 but is applicable in real life. Paraphrasing means relaying knowledge back in your words.
Whenever you talk to the real decision makers of a company, you get the hear the actual problems of the company if you are patient enough to tease it out. By paraphrasing what you say back to them, they start to feel understood and included. I have taken their needs and explained them back to them in my words. Like that Smart Sally, I was telling you about earlier.
If you can get into the heads of your clients, really understand their needs, you will be infinitely more valuable to them if you can offer them a solution. Building trust and solving problems are far more valuable than learning a new framework. Of course, you should keep up with your industry but remember that your client more than likely is not.
See the Bigger Picture
On Hacker News, commenters love to complain about different tactics websites and marketers use. The main fight is against pop-ups that ask for your email. Hackers hate them but guess what. Marketers love them because they work. In fact, they work so well that many marketers attribute the linear growth in their business to popups.
They also dismiss marketing via emails (despite being the most successful online marketing channel). Some hackers attribute what they don’t like to bad User Experience. They fail to recognize that just because they don’t like it, doesn’t mean everyone else doesn’t either.
There is a whole game being played around you. You are part of a bigger picture. Even though you can’t influence these different parts, you should know how this bigger picture works.
You should always know that when you are handling a Jira ticket that makes no sense to you, there may be a substantial reason why. Seeing the bigger picture allows you to spot gaps and opportunities that could prove lucrative.
Is your company spending a lot of time doing something an engineer could do once and solve forever?
Could your company cut costs by adopting a new technology?
Can you build something that adds more value to your firm or your client?
When you embrace all the different parts of the business and take a macro view on it, you may start to see opportunities.
Learning new Technical Skills is not Your Priority
Employers always want people who have a specific number of years with a particular technology. Don’t ever let that scare you. If you can program in two or three languages, picking up the next one will only take a matter of days.
If you can solve their hard problems (and prove it), they will hire you. If you need to, you can then spend a few weekends learning and studying. After six months, most people probably won’t notice that you don’t have five years experience.
Always continue to improve for the job you are currently doing or are about to do. Don’t learn new language and frameworks for the sake of trying to keep up. Spending all your waking evenings trying to keep up could cost you. You could spend that time networking and be acquiring more clients.
This advice only applies to developers who have skin in the game and have already dealt with most of the major headaches of running an app in a production environment that plays a significant part in the businesses bottom line.
If you are a new developer, you need to learn language number 1 and get a job in a company that uses that language. After two years of trying to improve yourself continuously, you will be ready for the 70% of other Software Development jobs. The two years is not a hard rule. After 6-12 months, most people are settled into the company and have learned a lot of what they will need for the rest of their career. After this point, the return on learning for the job suffers from diminishing returns for each month after that.
When should you leave a company?
Remember what we said at the start. A developer is hired to do two things:
- Increase profit
- Decrease Costs
If you are not on the profit making side of the company, then the business will eventually look to stifle your growth. They do this because cutting costs is easy. If you say no to any of the following questions then it is time to leave:
- Am I regularly receiving a pay increase?
- Am I getting paid the market rate or above? (ignore this question if you have less than two years experience)
- Am I still learning new things?
- Is it negatively affecting my personal life outside of work?
- Do I have a work life balance?
- Is the company still growing?
- Am I actively involved in generating new ideas and projects?
- Am I fulfilled?
If you start saying no to any of the above, then start thinking about a new job. Finding a new job should be easy in any market provided that you can position yourself.
Leaving a job is difficult. The longer you stay at a job, the harder it is to leave. Humans have a natural tendency to settle into a routine as they age. The older you are, the more likely you are to stick around.
If you have to leave then rejoice. Evidence demonstrates that regularly changing jobs will lead to an extra million earned over your lifetime. You can earn even more if you learn to negotiate which is a topic that I will touch on another time.
Overall, there is more to prospering as a programmer than only learning the next skill. With some soft skills and knowledge from other domains, you can live a far richer life than developers who spend every waking hour keeping up.
NOTE: Some people might think I am completely dismissing learning new skills. You must always improve at your craft. Just make sure that you are improving at the right things.