It's a frightening thought.
One day you're hard at work doing everything you're supposed to do. The next day you're being escorted off the premises by security.
It's as if your hard work didn't matter.
You did everything you were supposed to do, how could this happen?
What went wrong?
Developers go through this scenario every day.
Most of them haven't stolen anything from their employers; they haven't done anything unethical. The vast majority of them were personable and friendly. And to top things off, when asked, they were helpful.
What more could an employer want?!
A whole lot more, as it turns out.
Developers as a whole have been shafted. No one told them there were specific mistakes they needed to avoid.
So most of them continue to make these avoidable mistakes, quietly burning bridges and ruining their careers.
Are you making any of these mistakes?
1. Trusting Your Client to Understand Their Needs
When developing an app, your clients (i.e. your employer) rarely start off with a clear idea of what they need.
Things are fuzzy and unclear.
As you know, that's how most apps, projects and ideas start out. What you may not know is this:
Your client needs a specific gift from you. They need understanding.
At this point, you have a choice to make; what kind of developer are you going to be? Are you an order taker who simply does what they're told? Or are you the indispensable advisor your team relies on?
Order takers are replaceable.
Employers find a developer who can do the job. They tell them what they want, then developers do it. It's an easy formula to follow, right?
Until your client finds someone else.
Someone who can do the same thing faster and for less money. It's no surprise then, that most software developers are out of the field by the time they hit 40.
- Maybe employers think it's a young person's game
- Or that people over 40 are obsolete
- It could be that older developers aren't familiar with new technology
Far too many developers are simply order takers.
If you're an order taker, the reason doesn't matter. At some point in your career you're going to be permanently replaced.
Indispensable advisors on the other hand are…
These developers give their clients the understanding they need. When a project starts these developers seek to understand.
They're asking about the users, the features they want, their motivations, anything to get into their headspace.
These developers create value wherever they go.
- They're rockstars at work.
- Or, they're contributing to the open source community.
- Often times they're teaching and educating others.
Wherever they go they're giving to and serving others.
This attitude creates a huge contrast between them and their order-taking co-workers. They're making others better. Making the industry that tiny bit better.
It's impossible to ignore.
Their attitude of giving becomes their secret weapon.
When they're serving they're sending several messages:
- They're experts.
- They know what they're talking about.
- Others recognize their ability.
These messages, the kind that show you're an all-star, they can't be faked. Either it's there or it isn't. If you have it, your value skyrockets.
And the best part? Any developer, every developer, can be an indispensable advisor.
2. Not Trusting Your Client to Understand Their Needs
Wait a minute.
I just said it was a bad idea to trust clients. Now I'm saying not trusting them is a mistake?
What's with the hypocrisy?
Things outside your wheelhouse — the business overall, sales, strategy, marketing — these are things you should trust your client (i.e. your employer) to handle.
Developers typically have two responses to this.
First, there's a certain level of apathy and disgust. As soon as an unfamiliar topic comes up, these developers glaze over or tune out.
Their attitude screams "I don't care".
Second, you have developers who "think" they know their stuff and yours. They're unwilling to learn from those they feel are "beneath" them or are doing it wrong.
Both of these developers fail to realize one thing.
The people around you, they can sense these attitudes. Instead of valuable contribution they get apathy or contempt. They make a mental note and later on, they act accordingly.
How do I know I'm right?
You. You take note of these attitudes. How many times have you recommended a buddy or friend for a project? How many of your friends got a job because of your recommendations or help?
How times have you made a mental note about "that" guy, the one who refuses to document his work?
See what I mean?
You have standards. So does everybody else.
Rockstar developers ask questions. They take initiative. They work to understand how their role fits with everyone else (management, finance, marketing, etc).
They're not falling in love with these topics, they just have a deep understanding of how their work affects everyone else.
It's a rare but incredibly valuable quality.
3. Using “It Can't Be Done" as a Fallback
Writing code, at its core, is problem solving.
You know this already.
So does everyone else. As a developer, you're the hero of the story. You're the one that saves the day. The one that makes everyone else's ideas a reality.
Without you the ideas that management has are worth less than nothing.
You literally engineer the future. So when a non-developer hears "it can't be done" they don't believe you. And why should they?
Over and over you've made the impossible happen. You've always found a way to get the job done in the past. You trolled forums, tested open source code, posted questions on Stack Overflow — you did what needed to be done.
And as long as you didn't give up, you won.
Because that's what you do.
When a non-developer hears "it can't be done" what they're really hearing from you is this:
"I don't want to.”
Nothing pisses off a non-developer more than the words, "it can't be done." Why? Because it sounds like you're not even willing to try.
So in the beginning, your co-workers push back. They ask you to find a way.
Because they believe in you.
It's irritating at times, sure. It's frustrating when they drop things in your lap or expect everything done now. They think everything's so easy.
You know it's not.
But that doesn't matter because they believe in you.
They're like kids. They don't know how it works, just that you're the crazy magician who makes spectacular things happen. And they love you for it.
Some things really are impossible.
That's not the problem. The problem is how you address it. Do you address it by throwing a fit? Grumbling and complaining behind their back? Spreading a bad attitude around?
Or do you look for a compromise?
Do you ask them about the negative consequences that come with what they want and offer a solution? As an indispensable adviser, do you give them the benefit of the doubt?
4. Condescension and Contempt
"I hate marketing."
"Managers are stupid."
"Salespeople are the worst."
"My idiot boss is asking me to do something dumb again."
Have you ever identified with any of these statements? I know I have.
It's completely natural.
In fact, many people have. If you're part of an ingroup, odds are you've done it.
In our culture it's actually encouraged.
Here's why it's a problem. All of the other people we interact with who aren't part of our developer ingroup? They smell it. They know how we really feel about them.
They think it stinks.
You and your co-workers are supposed to be on the same team, only now there's this pesky Us vs. Them mentality.
Invisible barriers that divide your team.
Politics and turf wars become the norm as everyone struggles to get work done. Bonuses, raises, and incentives begin fading away.
An attitude that reeks of condescension and contempt does two things.
- It cuts you off from other people. You become "that person," the one that's horrible to work with. The one that leaves a bitter taste in everyone else’s mouth.
- It slowly strangles existing relationships. It gets harder and harder for friends to defend you; the cost of associating with you begins to hurt your co-workers negatively. They won't say anything directly — they'll quietly move to distance themselves from you.
Once you're out of friends and allies, things go downhill until eventually, you're out of a job.
5. False Promises and Incomplete Work
I got it done.
It's good enough.
You've probably been on the receiving end of these promises. You know what it's like to be told "it's done" when it's anything but.
It's a common mistake.
A developer tells their manager they've finished their work. "Everything works!" So he does what most good managers do. He trusts them and prepares to test their work.
Or in some cases, he deploys their work.
A bad idea for sure, but he trusts his developers. He believes in his developer so he takes the risk. Because his bosses are breathing down his neck. Maybe his job's on the line. Or the customer's pushing for delivery.
Whatever the case, he moves forward, only to find that the developer he trusted, the one he took a huge risk on, has let him down.
He'll never forget that mistake.
It'll be tough for him to trust that developer ever again. It may change his beliefs about developers in general. Definitely not fair, but it's reality.
If he's smart, he'll check and recheck that developer's work. If he's really smart, he'll check everyone's work.
But it'll slow everything down. Instead of trusting everyone on the team to do their jobs, to show up and get things done, he'll try to verify everything. When it happens enough, fear and insecurities start to grow.
Until one day…
We've All Made These Mistakes
And they haven't ruined our careers yet. That's the good thing about people. They'll give you second chances.
You'd be surprised at the amount of chances you get when you're competent and working hard to be better.
At some point people run out of patience. They're no longer willing to work with people who keep repeating their mistakes, to put up with these problems. They're usually out of a job when that happens.
Make these mistakes enough times and your career is effectively over. You track record follows you around. A former co-worker who knows you warns everyone at their new job to stay away.
Great developers don't make these mistakes.
If you've read this far, there's a good chance you're one of them. The struggle isn't the real problem here. It's your attitude.
If you've struggled with these problems, but you're working to be better you'll succeed. If you learn about these mistakes and you respond with negativity — in the form of cynicism, bitterness or resentment — you could be in trouble.
What about the other developers? The ones who continue to struggle with these mistakes?
Be patient with them.
If they're open, teach them. Share this article. Help them to be better. Don't leave them on their own. Get help if you're struggling with these problems yourself.
Losing Your Career is a Frightening Thought
But it doesn't have to be.
Imagine going to a place every day where you're viewed as indispensable. Where your co-workers trust you to lead. Where they see you as an irreplaceable part of their team.
How would you feel?
Amazing right? You're getting the results you want from your career, you're a rockstar at work and you're in control of your professional future.
It's yours for the taking…
If you do the work. Coding skills are must-haves but, as we've seen, they aren't enough.
If you're struggling with these mistakes, fix them. Not struggling? Put boundaries in place to protect yourself and those around you.
Be the all-star everyone wants you to be.
The Principles of Beautiful Web Design, 4th Edition
Docker for Web Developers
HTML5 Games: Novice to Ninja