Angry Programmers (2013)
selectedintelligence.com
selectedintelligence.com
Programmers do get a dopamine high for solving things, creating things. But for me, this isn't about how genius we are but about making someone's life easier or better or providing real value to the company or customers. Right now, I'm spending most of my time adding features to a web portal/console with the sole intention to reduce tech support and enable scaling. There is nothing hard or genius about it. It is about understanding the real issues and making tools to solve problems. And when I succeed at that, I do get a rush. Yeah, me.
Years ago, I worked at a company that had a computer vision based software product. The internal object structure was a nightmare. (Whoever wrote it initially had obvious just read their first OO programming book and decided to abstract all the things!). Each customer project had a configuration file that described all the tests and objects and connections. There were some that took over 45 minutes to load! With a little (2 days) profiling, I could see the biggest time waster. So, I add a map<object,name> to simplify the object connection process. Nothing magic or genius but it reduced the load time to 7 minutes! Not all valuable computer science work needs to be creating a new technique for neural networks. 90% of all things we need computers for is a simple UI and CRUD to a data store. It doesn't have to be genius if done in a way that adds value, then it is worthy of pride, not anger.
Constantly amazed at how often this has happened to me. The worst is the fake "agile" terminology when you're doing the opposite. MVPs that are neither minimal nor viable nor a product. Two week sprints that stick to the Gantt chart we made 6 months ago no matter what the customers/target audience tell us. Spending more time talking about the work we've done and plan to do than actually doing any.
The empire-building as well drives me nuts. We need more people! Don't know what projects they will specifically do, communication and collaboration overhead is already slowing the pace down to a crawl, but we need more people. That way I can say I "led" a large team of engineers on LinkedIn. Wish these people obsessed with "leading" people could all be replaced by people obsessed with leading products.
Always amazed me that I could make $8 an hour serving pizza in high school,, but clearly delivering economic value to people, then find so many people in the world who can raise so much money money or headcount and pay me ten times as much so I can deliver absolutely no value to anyone.
I know we were talking about how most stuff doesn't make us angry though :)
I think I was always above-average intelligence (top 20%) but I don't think I'm close to a genius. Sure, people pay me money to do things and of course many of them could do it themselves if they learned how, that much is obvious to me. I pay a lawyer money but I'm pretty sure I could have become a lawyer, it's not an insult to their intelligence, we all specialized, that's how economics works.
I think a lot of programmers get angry because they're young and poorly socialized, my past included. Getting motivated to improve that which can be improved is good. Looking out for yourself and not being a doormat to the sociopaths that VC and management tends to attract is good. Doing the above without getting angry about what is usually trivial in the big picture is best.
I don't know about other's here, but this is the opposite of my experience. I feel under-employed because I'm constantly solving problems which are way below my competency. (That's not to say that I'm smart; just that the kind of work most people have to work on is insanely easy, and many probably feel 'above it'.)
When I get angry it's almost always because I'm bored out of my skull, and need to take a break to do something creative or intellectually surprising. The original post seems to pin anger on jealousy and not boredom. And at any rate, whether or not you are angry because you are jealous or because you are bored, the solution is to take a break.
> In fact, sometimes they may get the feeling that someone who doesn’t program at all, could readily do it if they were bothered, but since they can get other people to do it for them, consider the whole thing a little trivial.
This is arrogant. There are a lot of people that can avoid programming, but a majority of these people wouldn't find it trivially easy. It's a skill set which actually takes quite a long time to build up, and having good people managing skills isn't likely to help.
All I can really say after reading this, is: generalising other people's psychology, choice of work, and perceptions about their work isn't a good way of understanding them or working with them. The fact that this person decided to make a blog post of it as if it was a clever way of understanding 90% of programmers is just an embarrassing reflection of themselves.
I don't walk around telling people that I could do their job easily and only avoid it because it bores me. That's pure arrogance.
It takes time to learn to do something well. I know if I sat down and tried to architect the design for a house I'd be able to do it -- eventually --, but this doesn't mean I will write an article about how it's trivial work and that the only reason I will pay somebody to do it is because I "can't be bothered". Not insulting people is a basic level of respect, that I believe you should go way beyond.
I thought it was a kind of understanding which attempts to contain everybody within a single category and then to belittle them.
This leads to injecting tool complexity. The JS world is a good example where it seems sometimes people are bored so they inject tool complexity in order to not be bored.
I've been a professional software developer for 20 years. In the early days, I would experience thoughts like "I just figured out an elegant solution to a hard problem. I am a GOD AMONG MEN!!!!"
About 5 years in, I started to lose that "high" I would get from programming. That feeling came less often and was less powerful. I experienced some mild depression and general health issues. It occurs to me now that I was likely dependent on that dopamine high.
I'm sure some programmers burn out during this phase. Somehow I made it through.
These days I still enjoy my work, but I'm no longer chasing that dopamine high. I still stumble upon it every once in a while. But I recognize that it is a fleeting experience and I just go with the flow while it lasts. And when it is gone, I am still able to get work done. I've learned to be productive in both states.
I think many developers (and tech. companies) could benefit from more education and study about this topic. I think it affects us more profoundly than many of us realize.
For clarity, I wrote this 3 years ago after a conversation with an elderly man who asked me why his son was so angry. He'd heard I was a programmer and he told me his son was a programmer and he felt convinced the work was the root of the problem.
I put forward the theory here with a characteristic lack of tact or sensitivity. The next day I wrote it up and forgot about it until now.
So contextually, it was very much about mental health.
The grass sure looks greener on the other side, but unless you work for some truly heartless pond scum, you'll find a lot in common between any two employers.
This isn't always possible, but it has ended up with my last two employers being some of the best I ever had.
There's two main reasons why this might be the case.
The first is because you're actually not very good. Great code can be worked on by someone else, which means if you not easily replaceable then it's because your code isn't easily accessible to other developers or there's knowledge that you haven't documented properly. In this case any competent employer should readily accept your resignation.
The alternative is because you're the absolute best your employer can get for what you're paid. You could be amazing but there's always someone better if the employer is willing to write a bigger check. They could replace you with a team of 20 if they're willing to pay enough. In which case your employer has to choose whether to agree to your terms to keep you or to pay more and get someone who'll agree to their terms. Never underestimate how much an employer will pay to get their way.
No matter how good your code is it would be impossible that someone can hit the ground running right away. Meanwhile there are deadlines to meet.
Deadlines can be moved. Resources can be allocated to projects to account for unforeseen events. Penalty payments can be paid. It's definitely not ideal but often established businesses can cope with someone leaving unexpectedly. It can kill a startup, but so can most things.
What I'm saying is that you shouldn't be too surprised if a threat to leave is met with "Oh. That's a shame, but nevermind. Bye." You may feel you have a great deal of power over your employer because you see your role as important or even critical to the business, but they might see your role very differently.
Be very diligent about communicating! You can easily get forgotten in a larger effort.
Radar is one of the magic voodoo technologies that is hard, if not sometimes impossible, to get right. In theory it's extrmeley simple. Anyone with any background in radio knows just how "easy" radar is. You throw a 70cm or shorter wave at something and wait for it to get back. You can also stance two 70cm transmiters (one in front of the other) at diffetent fequencies and using the known distance of the 2 transmitters, the known speed of the wave in the air, and the time of arival of the two waves very simply calculate the speed, distance, and direction of an object. Look up "Doppler Frequency Shift" equations and also just wave velocity. It's dead simple.
Now, given that information I can also talk about how amazingly difficult radar is to implement. All sorts of noise in collection and extremely small errors in sampling can throw your reading far off (in most states in the US that's why there is a +-10MPH speed gratice applied to radar guns).
If someone was to go through and by themselves solve every little problem associated with radar and build a microwave-based radar system I'd be really fucking impressed [0].
This is because radar is hard and the act of tackling every little challenge associated with building it. Just because other people have built radar systems and some people do so every day doesn't mean it isn't hard or you're not advanced for doing so.
Radar is a bit of an extreme example but I think the methodology still applies to making massivly parallelized programs, or synchonization and elimination of race conditions, or learning all of the tricks to get your program into a small space, or even perfecting UX/UI for your users. It doesn't matter if other people have solved it, if you're also solving it on your own then you're just as smart as the others before you who came up with the idea and did it themselves as well.
I do think it's valid to say many programmers are big headed but I think that's just the online space of programmers. Most programmers I've met in real life are really nice and humble people who are just excited to get-shit-done.
Check out Henrik's Blog http://hforsten.com/
The realization that you're not a genius and that there are more competent people around and that programming is often not research but actually engineering, you should have that realization in your late teenage years or early twenties when you go to university or work hard on acquiring computer science skills.
This isn't unique to IT. There are many fields where there are always new things to learn. However, a career in (say) selling cars or owning a restaurant would require much less lifetime learning.
However, it is a problem successfully solved by many programmers.
Bezos. Gates. Larry and Sergey. Zuckerberg. DHH. And of course, Paul Graham.
You might say this is the whole reason YCombinator exists.
"The real reason we started Y Combinator is one probably only a hacker would understand. We did it because it seems such a great hack. There are thousands of smart people who could start companies and don't, and with a relatively small amount of force applied at just the right place, we can spring on the world a stream of new startups that might otherwise not have existed."
http://paulgraham.com/whyyc.html
Reading between the lines slightly (and I believe Paul said this more directly in an article I can't find right now), Paul believed its easier to turn great hackers into great business people, than the other way around.
So yes, at some point spending all of one's time programming yields diminishing returns. But its perfectly possible for someone smart enough to be a good programmer to also learn how to solve problems requiring more than one individual's contribution.
Basically I don't think I'm better than everyone else, and so I don't get upset or depressed when it's proven that I'm not.
Every time that happens, i make a new project to kill that persons meaning in life or their job. Yeah, you make nice bonsai's- so i made a bonsai cutting robot. Yeah, you relish wielding power and talking down to others- but my neural network is better at that. Next project: Make a blog-bot, that trys to reduce other peoples confidence to ash.
Stops the anger every time.
You sound the angriest of them all...
I used to be one of those people in that quote - I found programming too simple/easy, and ended up doing math and physics, subject matters of far more complexity. I only ended up programming because I needed work afrer grad school and after 2 1/2 years of job searching, I got lucky and someone took a chance. To this day I continue to be happy about my line of work - it isn't particularly difficult (frontend web development primarily), but it lets me solve little problems and keep my mind engaged while paying exceedingly well. The perspective shift from being unemployed with dubious prospects makes me not care about how I am relative to the rest (although in my domain, it turns out to compare very favorably).
I worked in quantum physics myself and have a PhD in experimental quantum computing, but still I consider writing good and reliable software a tremendous challenge, and often I initially fail at it when building large projects. I'm now mostly working on data analysis and static code analysis, and I consider these two fields to be at least as complex and stimulating as my earlier work.
I think what we as programmers need to realize is that we're not better (or worse) than anyone else just because we can write software, and we also need to realize that building anything usually requires people with a variety of skills, both technical and non-technical. Most of our work would be entirely useless on its own, it just derives meaning within the context where it's used.
Therefore, in my opinion the real "10x" programmers are not only those that can churn out brilliant code at an amazing pace, but those that understand their own work in the context of the project that this work supports, are able to effectively and efficiently work with everyone else on the team to support it, and do not have a mental ranking of job professions that classifies people into "high" and "low".
The author referred to programmers as "little" repeatedly throughout the blog post in a manner disturbingly reminiscent of a certain politician's successful tactic to smother an opponent in recent primary debates.
It's just being nasty. Whatever truth scandox is trying to share is hampered by his own apparent anger and condescension.
That said I think that anyone who loves what they do would be a bit annoyed if someone else treated the work done as something just to be paid for as inexpensively as possible. Angry? I don't know about that. I do the see why programmers/developers would be different.
Which is kind of a shame, because he does touch upon a very good point.
I myself am not a developer, just a hobbyist; don't assume everyone on HN is a developer
Vastly more intelligent not just more intelligent but vastly. Wow.