Let’s first be frank and say that as coders we live pretty lavish lives compared to the rest of the middle class. Especially in the SF Bay Area! If anyone wants to complain about life, it shouldn’t be us. Really, just don’t!
However, I often wonder just how efficient we really are… working at these companies that are valued beyond what a cheap calculator could comprehend. What does it mean to be a coder and how do we improve?
Here are some lessons that I have either learned, realized or daydreamed.
1. Coding is not a gift from your good genes.
Someone once said that coding is a special gift you have. What a load of bull! I’m here to testify that it’s completely false. Anyone who can make simple decisions can in fact become decent coders. The rest is determined by interest and experience. More on those later.
2. Most of us are mediocre coders. >video
Be careful when you complain about someone else’s crappy code and your awesome ability to pinpoint the wrongs. I’ll be the first to admit that I have made this mistake many times. As coders we love to hate on other people’s work, and it’s easy to fall into the trap of being overconfident. The truth usually lies somewhere in between. Most of us are just mediocre coders. The key is to leverage unique strength from individuals, put the team in a position to benefit from mediocracy. If someone seems weak, mentor them. Give them some room to breathe and learn.
3. Don’t just write code, build products!
Before a single character of code, there must be a clear product vision. Make sure you understand that vision and make sure it’s a damn good one and worth your time. If not, speak up! We are just as responsible for the product as those product managers. Believe me they need a second opinion, and they will love you for giving it.
4. Don’t put all your eggs in the Scrum basket.
Too many folks think old school Scrum is still the bible of all eng processes. Yet all companies struggle with the same scrummy crap everyday! Long planning meetings, useless story pointing, sub-task hell, and unhappy managers using story points to calculate “velocity” in spreadsheets.
Try it out as a team first, don’t assume it’ll fix things. Learn to mix and match. Scrum is just a bucket of ideas. The team has the ultimate power to decide which pieces from it are actually useful. Take a good read on Lean Startup and Lean Manufacturing – they address some fundamental flaws that Scrum can’t possibly touch.
5. Middle managers are evil.
Zappos got it right. Middle managers need to be eliminated. I don’t buy that tech companies need a CTO, a CIO, a CPO, 5 VPs of engineering, 20 directors of engineering, 30 tech leads/scrum masters, 10 product managers… All of which want to lead a flock of engineers so they can say they actually did something for the day. Get rid of them already! Yes, fire them all… well maybe not the product managers quite yet. The flatter the hierarchy, the better the engineering team. It inspires people to work together and tiptoeing around middle managers is not something people care for.
6. Work for private companies.
They all become money making machines. Once a tech company goes IPO, the house of cards will eventually come tumbling down. The focus on short-term revenue would eventually consume the focus, vision and culture people once enjoyed. One day I’m sure this will be proven wrong, but I won’t hold my breath.
7. Startups aren’t for everyone.
Just because you know how to write code, does not mean you should work at a startup. While I do believe everyone should at least try it in their 20s… it really isn’t for everyone. If you are lucky, you end up in a place where you can learn from a lot of smart folks. However, more often you are overworked, and relatively underpaid for that matter.
When startup CEOs tell you their companies are worth millions… they are bluffing. Run away! If they are honest, and you happen to believe in their 5-year vision, with the full understanding that the equity they offer you is worthless… then you have permission to proceed.
8. Always over-communicate.
There is no such thing as over-communication in the coding world. The truth is that most of us communicate better with APIs than we do with people. Talk to the product managers, even if you don’t have to. Make sure they know what you are working on, and make sure you understood their requests. Then repeat that process during the entire duration of the project.
9. Experience = # of failures.
Everyone can write code, a good coder is simply someone who had failed more and learned something from it. Don’t be afraid or even embarrassed to fail. Yes, you just brought down production. But you are that much more valuable to your next employer. Ok I kid! The truth is, failure is so mundane in the coding world, as long as Stackoverflow is around.
10. Don’t be tied to a particular tech.
Don’t get too close and personal with your favorite stack. Learn its shortcomings and watch for its replacements. This is a fast moving industry, don’t be afraid to pick up a new language to test things out. I wrote in PHP since high school some 10 years ago. Until about a couple of years ago, I started doing full stack JS and picking up Go. Embrace change, at the very least it’ll keep your mind fresh.
11. Find a positive influence and soak it in.
Listen to your intuition. Let the positive energy soak in from people who love you and willing to take a chance with you. Don’t waste your time with the negatives, be religious about this! In both personal and professional life. Get rid of the negatives and keep a healthy distance from them. Life is too short for people and things that are not worth the time.
12. Destroy all career comfort zones.
Don’t get too attached to career comfort zones. They are blackholes that will consume your soul, how little that you had to begin with. Look around a little, make use of those recruiter emails sometime. A new opportunity is not only refreshing, but it challenges you to constantly look outside the box, the things you think you already know.
The tech industry is unique. It teaches the mediocre coder that anyone dared to make a difference can indeed succeed. It teaches us that no matter how imperfect, the journey is the reward.
I fully expect this list to grow. And if you read this far… well I’m sure you must have something to say. See you in the comments.