"I cannot relate to much of the letter writer's story, but nonetheless Ed just got me so fired up. This is all such damn good advice! Thank you!" - Sean Linehan, Director of Product, Flexport
"Very smart advice. I wish I'd read it a few months ago." - Daniel Tenner, Founder of GrantTree, Woobius and Swombat.com
"Ed's advice works because he presents himself for his customer to clearly see the value he creates. He spells it out. Its less about talking about yourself and more about talking about them." - Bruce Saunders, Director, Web Application Development, Maximus
"Thank you very much for the golden words, Ed. I wanted to complain about something, but your words let me be confident again." - Vince Yuan, iOS/Android/Web/Desktop Developer, Singapore/Hong Kong/Shanghai
"Ed's advice should be pinned up on the wall, great summary. Once this person gets focussed on solving problems for customers, they will be very successful." - Chuck McManis, VP Software Architecture, Spectranetix, Inc.
"Ed always has a kind heart :)" - Dzung Nguyen, Independent Consultant, Southern Region, Funen, Denmark
"I think Ed's points are good complement in terms of actually building your product and managing your time."Josh Sharp, Cofounder, Hello Code
"And do not underestimate how important this piece is: '...and keep me posted.' Now go, and to great things worthy of honor."Barry Welch, Software developer, Bootstrapper, and Freelancer, Kansas
"Really, really motivating. I relate to the letter writer in a lot of ways. Thanks for sharing this, Ed." - Kyro Beshay, Cofounder & CPO, Zipdrug
"Wow, excellent answer." - Pauli Olavi Ojala, Editor, Neonto Studio, Helsinki, Finland
"Ed pretty much covers it. Stuff happens. Good project managers will adjust and move on." - Alistair Hastings, Software Architect and Project Manager, Washington, DC
"When I asked famous spiritual teacher a while ago about 'being depressed and how to solve it' - Ed's advice was exactly the answer I was given." - Gleb Esman, Sr. Product Manager, Anti-Fraud Products, Splunk
"Thanks Ed! That's all I can say at the moment." - Adnan Siddiqi, Solution Provider / Consultant, Karachi, Pakistan
I get a lot of emails these days from fellow programmers with [ distress | concern | depression ]. They're not looking for technical solutions or advice (which is good because I have neither), they're just not where they thought they'd be and are reaching out for something.
I try to make a point to answer all of them because, frankly, they're my most important emails. To me, the ones and zeroes inside my fellow humans' heads are far more important than those on any computer.
If I built a Venn diagram of all of my responses, the intersection is significant. There are some things I end up telling almost everyone, regardless of their situation.
This is just a bunch of observations from a fellow programmer who has also suffered and learned...
1. You don't have a time machine.
So many fellow programmers say, "If only I hadn't..." with "quit my job" being the top instance.
You can't "should have". You can only "do". You don't have to forget what happened in the past, but you don't have to overemphasize the importance of its input into your future.
My favorite example:
2 people are traveling from New York to San Francisco. One drives directly from New York to Chicago. The other drives to Florida, Texas, Tennessee, and then Chicago. They are now both in Chicago, well fed, rested, and ready to go. How should their plans differ? (Hint: Except for rare exceptions, they shouldn't.)
It doesn't matter how you got where you're at. It only matters where you're at, who you are, and what you've got.
2. You can't read others' minds.
I often hear things like, "If I only knew what she wanted, I would do it." You don't know. So ask. We humans are not connected via USB 3.0 (yet). Until then, we must talk to each other without fear. That usually improves our chances of success significantly.
3. There are no rewards or punishments, only consequences.
Life's not fair. with software, unknown input + known process = predictable result. In life, known input + unknown process = consequences. We spend a lifetime learning the processes, so we should get better predicting the consequences. When you were 16 are wrote that cool software that nobody wanted, you were disappointed. Now you should either adjust the input or stop being disappointed. You'll never be perfect, but with continuous learning, you should get pretty good knowing what will work and what won't.
It's not about luck. It's about adjusting the controls to maximize the possibility of desirable consequences. You didn't do that as well as you would have liked this last time. You'll do better next time.
4. Don't order a taco at a Chinese restaurant.
Many programmers are disappointed in the responses of others in their lives. "If only more people clicked that button." "If only my co-founder worked harder." "If only that angel got it."
Sometimes we expect things from others that they are incapable of giving. It's hard for us programmers to believe that it's so difficult (or impossible) for (Person A) to do (Task B) or understand (Concept C). We might as well order a taco at a Chinese restaurant. (Hint: They don't have any.)
When others don't respond the way you expected, maybe it's because they couldn't or didn't know how. Don't blame them. Just order what they've got.
5. You are a Chinese restaurant that doesn't serve tacos.
Sometimes a friend or loved one says something like, "You had it all! You made more money than anyone I know and you threw it away for a silly dream. You could have had and done anything you wanted with a salary like that."
Whenever they do, they're ordering a taco from <i>your</i> Chinese restaurant. They think you're something you're not and they want something from you that you don't have to give them.
In general, most normals get a greater percentage of their satisfaction from mainstream thinking, good times, and "stuff". They don't understand the programmer mindset of getting satisfaction from building and achieving.
That's OK. Being different isn't the problem. Forgetting that we are is.
6. They love you. They want to help. They're always right.<br>Pick two out of three. (Hint: It's the first two.)
I often hear things like, "My father criticizes me for (x) and I feel awful." You can only feel awful if you believe him. You only believe him if you think he's right. But as hard as it is to believe, sometimes he's actually wrong. This is probably one of those times. Get used to it.
7. It's all in your head.
It may sound like some enlightened Zen kind of thing, but it really is true. But knowing it and living it are two entirely different things.
It's easy to say things like, "I will manifest (y) in my life," especially for us programmers because we are used to making something seemingly out of nothing. But when we appear to not succeed at building something right out of our head, it's easy to dismiss our responsibility and blame something external (time, money, support, luck, etc.)
It really is all in your head. You may not be ready right now, but eventually you will be. Then you'll try again.
8. I care. And I have a feeling I'm not the only one.
The single biggest response I ever get is something like, "Thank you. It's not what you said, but the fact that you responded that means so much to me."
Feel free to email me any time. And feel free to engage others, too. But don't get concerned if they don't respond. Their Chinese restaurant doesn't serve tacos yet.
The chapters that follow include 120 instances within 6 classes of questions from programmers writing "Letters to the Eddietor". I believe many of them got something out of our interaction. I hope you do too.