> It lets me be a bit more objective in a field that's prone to a lot of subjectivity and - like almost any field - pride and ego
Unpopular opinion: pride and ego actually drive personal ambition, technological achievements, and human progress. No one accidentally stumbles over being "passionate" and no one truly passionate divorces their personal identity from their work. That's why some of the most successful people in their respective fields also are often the most egotistical. There should obviously be some checks and balances there that everyone needs to take stock of, but that's just my two cents.
It wasn't my experience at all. The best software developers I've met were the nicest guys ever, no ego at all. The ones with big ego typically think very highly of themselves but are in fact mediocre developers. And their high ego often prevents them from working productively in a team resulting in negative value contribution.
I would bet the best ones took a lot of pride in their work, and we should remember that ego is not the same as bragging or bluster, which are often masks for insecurities.
You are right, but you're missing the flipside of this: they also drive mental illness. Adaptations like these can be constructive or destructive to a person and society, and it's current consensus (which may be wrong), that it's better to have less of an ego in average case.
> Unpopular opinion: pride and ego actually drive personal ambition, technological achievements, and human progress.
Yes, for the 0.0001 percent of us that actually do something monumental and worthwhile. For the rest of us who are working in a glorified ad agency, it's just pride and ego if we think otherwise.
There are 2.7 million developers in the US. Most do not work at any company doing adTech. Most are “Dark Matter Developers” writing line of business apps working in “the enterprise”
Citation needed. I do not believe this is true for a second.
It is definitely possible that a majority don’t, but my guess would be closer to 60-70% that do. Of course, I also don’t have a source for that, but it is by no means a remotely obvious spread.
That begs the question, why do I want to be the most successful person in my field?
Software development is a means to exchange labor for money and to support my addiction to food and shelter.
The list of things I’m more passionate about than software development is a mile long.
I haven’t written a single line of code that wasn’t in direct service to exchanging my time for money since 1996. I was “passionate” from the time I was 12 until I graduated from college.
There's another layer to this, people who work for a simple exchange of money (and the important part is we're talking people making more than the average in the field, not somebody at mcdonalds) are prone to going along with decisions even if they negatively affect the community. To be passionate is to care about your work and the only way you can produce high quality sustainable work is to care. But most jobs aren't creating products/services worth caring about (or worse, harming/exploiting people) is the catch.
See: the average Meta employee vs passionate successful figures like Carmack or Sweeney who can aggressively push back on ideas they feel are negative for the community. Although the comparison I bring up is a little funny since Carmack did work at Meta...
So I think there is value in wanting to be a passionate successful figure beyond just personal gain.
The question that should be asked is why we cannot have a society that has enough of a safety net for everyone so that they can work on what they care about? If that were to happen, what would you actually be working on? These questions are the reason why a lot of people wind up leaving software once they've accumulated enough of a financial safety net.
As you say Carmack worked at Meta who ignored every promise they made when it relates to Occulus, not sure where he pushed back but it seems Meta doesn't care so he left, which is the same as any of us can do.
As for Sweeney he doesn't care about the community, he cares about his bottom line. He may have some goals that overlap with "good for the community" (see challenging apple app store) but he also has goals that are community hostile (see Epic buying exclusives for its own store). Both of which are driven by the bottom line, not a care for the community. Money made by extracting money from literall children with dark pattern and skinner boxes.
You're searching for purity when it does not and cannot exist in our current system. Of course a figure like Sweeney isn't some pure altruistic being, but the fact remains that due to his main goal overlapping with the good of the community, and his passionate position in the space, means he can challenge that. Unlike every Meta employee who sticks with the status quo and were the reasons Carmack left the company.
> The myth of the indie developer being hurt by the App Store tax is just that.
They statistic you presented does not support that assertion.
30% of your revenue is 30% of your revenue. Indie developers who have fewer distribution channels than a big name like Epic will of course be hurt more by the requirement that they share a big chunk of their revenue with their (often sole) distributor.
Who do you think these Indy developers are and how would they get exposure and distribution outside of the App Store?
There is a reason that in the physical world, smaller sellers, authors, etc use Amazon instead of selling from their own site and use Amazon’s distribution.
How many Indy game developers for PCs try to sell on their own instead of going through the stores?
If I am going to start a business, why wouldn’t I take distribution costs into account and raise my prices?
Another question, Android allows side loading. Why do most app creators still go through Google Play?
> That begs the question, why do I want to be the most successful person in my field?
I'm not sure how this begs any question. Some baristas work at coffee shops to make ends meet; others want to be the best at what they do and compete in barista competitions, learn to roast, maybe eventually start their own coffee shops, etc. Why some do the former while others do the latter is just a question of priorities, dreams, desires, and so on.
Nobody can or should be passionate about all the things. But we can be thankful for those who are passionate about the domains where we are not, since we collectively benefit from those domains being loved and nurtured. At least in many cases.
I don't remember wanting to "be the best programmer I could be" - I just wanted to build stuff and it made me feel smart/good when I solved complex problems.
Nowadays I get paid to solve trivial problems, self-inflicted complexity, and work in problem domains I have no interest in. But it gets me a nice living.
Me too. And in danger of being "found out", I don't think I've ever wanted to be a "ninja coder" or someone who dives deep into solving hard problems. I like computing, and I like programming a lot, but the thing that I really enjoy about it is (as you said) building something that makes me feel smart, or accomplished.
Incidentally, I feel like this is why I gave up on running OpenWRT on my routers, or FreeNAS on my NAS, and why I don't end up sticking with Linux on my personal computers. I enjoy computing, but it's not my hobby. My hobbies are things that I do with my computer.
Most problems are trivial, particularly to people with domain expertise.
I think getting really pulpy, difficult problems is a rarity even at the top of the field. I don't think that should be the goal and particularly not most of your time (it would probably drive us insane)
What we can do is solve trivial (or easy) problems in ways that are elegant and robust and easy for other developers to understand. That in itself is a challenge.
I solve trivial software problems but get to help solve interesting business problems. I still code but have moved into a role where I get input on the business processes that my software helps run. It's awesome and I love it. My input is directly aligned with business outcomes and it feels amazing.
Since I was 12 (I'm nearly 50) my drive to program has always been about understanding, duplicating, and then exceeding the work of others. Part of this is ego- the desire to be respected for my intelligence- and the other part is a desire to see certain science fiction futures come to pass (elective gene therapy, interstellar travel, machine singularity) through my discoveries.
At some point I realized I'm not going to be the equal of Lord British or Jeff Dean. This was a huge blow to my ego. Like the author, this had huge impacts on me. So instead, I worked harder: more hours spent programming, tediously working through all the bits and pieces that smarter people can solve quickly. And that taught me something: grinding like that comes at a price (life satisfaction).
What drives me still is passion: the desire to be able to do something I know is possible, with my own hands.
2nd all of this. Since ChatGPT came out I've had a renewed excitement for the idea of building a simulacrum of myself with things like a language model and training it on my life. I'm actually excited how far away the idea is and the prospect of having something to tinker with for the coming decades.
For me it's different. I've always been a person that likes challenges and to improve, and programming was just what I needed. It's an endless road of challenges. I am trying every day to get better, and this doesn't have much value besides for myself. Companies that I work for doesn't need much of a knowledge I have.
I spent tte first 15 years of my career finding “passion” in my part time working hobby of being a fitness instructor, weightlifting, running as fast /long as my body would allow me, etc.
The next ten years I spent raising two (step)sons and spending time with my wife while still working out after I got (re)married.
For the last year, my wife and I have been planning our “hybrid digital nomad” life where we will be staying in our own vacation home/investment property half the year and flying across the US the other half.
I feel the same way, but I want to caution people: this only works if you have already achieved some measure of success in your career and respect from your peers.
It's easy to be egoless if you're already working at a FAANG, just as it's easy to not care about money if you're already rich.
Still, it's worth trying to remove your ego from the equation, even if you're a struggling student trying to get your first job, just as you should care about things other than money, even if you're poor.
> It's easy to be egoless if you're already working at a FAANG
Doesn't amazon hire anyone and everyone these days. They gave me a sde3 350k remote aws job after asking similar sets of basic coding questions and some BS called 'leadership principles'.
I have hard time believing anyone half competent will fail those interviews.
I can't tell if this is a humble brag, impostor syndrome, or just plain trolling.
Either way, a tiny bit of research reveals that the median compensation for a software engineer is around $120K, and the set of people making $350K per year is relatively small (top 5-10% of all software engineers).
By definition, not everyone can be in the top 10% of their profession.
Not humble bragging or trolling. I had the usual bfs/binary search/trie coding, design instagram and 'tell me about the time' type junk questions and I got offered a L5 position at aws ( you can look at levels for comp) .
I am just average def not someone who'd need ego control. I really don't think its really hard to get a job at amazon, they hire in bulk every year to compensate for how much churn they have.
I'm happy for you--seriously. You sound like a talented and down-to-earth person.
And it sounds like in your social circle $350K per year is average. That's great (again--seriously).
But I can imagine that, for the 80% of software engineers who are making less than $350K, saying "I really don't think its really hard to get a job at amazon" sounds at best clueless and at worst insulting.
I really dislike accusations of "privilege", particularly as a way to discount people's personal experience or opinions. I'm not going to wield that here. But at the same time, I think it's helpful to have a clear-eyed view of the world outside our personal bubble.
I was just as “egoless” the beginning of 2020 when I was an “enterprise architect” working for a 60 person startup with my big house in the burbs as I am now that I stumbled into a cloud consulting job working remotely at BigTech.
I had no desire to work for a FAANG as a software developer. I enjoyed being able to work at any level of the software delivery process from pre-sales, talking to the customer, system design, development, “DevOps”, etc.
I think the balance of engineering to the point of not over-engineering, and making simple yet efficient programs/code is an art that gets better with practice and experience. Trying to improve your skills do so will of course give you a market advantage. But, I think key to avoiding burnout is to try and have a rich personal life outside the "9 to 5", but also depends on your circumstances. For those younger, probably putting more hours to improve your skills is worthwhile in the long-term.
Yeah, it sounds to me like the article could have been titled "How I learned to stop over-engineering and love to code." The "being vs. doing" duality seems forced to me, and doesn't always align with the overall message of creating solutions that are oriented around solving a problem rather than engineering for its own sake.
I think that the passion that is often sought in hiring candidates is slightly misguided. It's not uncommon to hear that the employer is looking for passionate $language engineers. Although this approach could be helpful in the short term, it's less helpful for the long term. Why? Because organizations and teams generally don't stay on the same technology stack for the long term. And what happens when the particular technology that someone is passionate about is phased out? Instead, I think it's more rational to be passionate about solving certain kinds of problems (not related to a specific language). The other potential downside of passionate developers is that being passionate can make one less objective. I would even argue that the engineering approach would favor dispassionate developers where they're more likely to be objective. FWIW.
I have passion to be a programmer. What companies don't understand is that it doesn't mean I enjoy my job. I stopped programming the things I am passionate about in my 20s because I had to eat. I wouldn't work on your dumb SaaS if I were financially independent.
There are people who will work on the "dumb SaaS" or whatever project/company even though they don't need to financially because they couldn't work on something of similar scale/complexity/impact otherwise. But I suspect that if you gave a sufficiently large amount of money to most people, they'd be out the company's door in a moment even if they were in a senior position.
Where does your passion for programming end, and your disdain for a job begin? Perhaps more important, does this potentially affect the quality of code you produce? In other words, if you discovered a mission-critical bug at 5 pm, would you be more likely to clock out and go home because you didn't like the project? (These are legitimate questions, not trying to be snarky.)
I'd like to hear about how the author's interactions with other coders changed after the transformation from "being a programmer" to "doing programming". In particular with those that are still in the "being a programmer" mindset.
From experience it can be difficult and it's something that a lot of people come across when they join a company for the first time. Particularly people coming from research into industry, or self-taught programmers (like me!) I think there's a lot of nuance around giving and taking criticism and being empathetic to the people you're working with.
I've found both extremes in academia. There are researchers who will throw together absolute spaghetti, publish the paper and repository and move on, never to touch it again. There are researchers who get extremely anxious that anyone will see their spaghetti and never publish the code. There are researchers who are by all accounts good programmers, but are terrible at working with other people because they're not used to it and can be quite opinionated. The latter is also something that industry exposure helps with - e.g. when is "good enough", good enough. Also understanding that prior design decisions were made for a reason and "we had two days" is a valid one!
I have a few projects that I collaborate on with people outside work and by far the most enjoyable are the "passion" ones where there's no pressure, we try to write solid code and we play around with current best practices to see what's feasible to maintain. But we also accept that there will be bugs and laugh it off when someone breaks the build.
I am always thankful when people share their life experiences. I think the post captures the growth that many programmers experience throughout their professional life.
However I do think that the naming is a bit off. I don't think many people would describe a great programmer as someone that chases fassion, drinks kool aid, overengineers things and rejects proven technology and practices.
Their description of their approach now ("I'll do so only when it's the simplest and most maintainable solution to the problem") is much more aligned to what I believe great programmers do.
While I enjoy the overall message, I don’t love the sense of finality in the author’s tone. Makes it sound like it’s an all or nothing thing, where you either identify or you don’t. In reality, it’s a spectrum that we’re always moving back and forth to some degree on
I suspect the author’s mean on this spectrum has shifted and variance has decreased
I don’t trust anyone that says they don’t feel a particular thing anymore and they’ve permanently moved on, especially in the case of the author who had quite the affinity for being a great programmer
I am in the minority I think but I am a passionate programmer. My passion at the moment comes out in several forms such as my side project / personal website (https://dustinbrett.com). But I have loved tech and computers since I was a kid and I love consuming anything about them and I wake up thinking about cool things to do with them. I wouldn't want to live without some kind of passion to drive my interests.
That’s the first website I’ve seen in a really long time that made me smile. Nice work, I’m jealous. Did you build this with some kind of exotic UI library or just a lot of elbow grease?
You are boosting someone's ego. It seems to be the opposite direction of where the author of the article was leading us :p
That said, I find the website awesome as well.
> But I'll do so only when it's the simplest and most maintainable solution to the problem, and not because I want to be the greatest of programmers in my or other people's eyes.
The problem I run into is the simplest and easiest modification, the yagni for any one ticket, if sufficiently small seems to be a great algorithm to find local maximas in the design.
But if you keep with good design principles from ticket to ticket the end result is better.
This reads to me like a "stay away! don't hire that guy" warning. When things get tough, who is going to put in the work to make the project a success:
a) The person with the "it's just an activity" attitude
b) The person who tied his/her self-worth to delivering a good result on time
I don't agree. I think being able to decouple your ego from the things you accomplish, while still feeling good about it, is a form of personal growth.
That word: "passion" doesn't mean what HR people seem to think it means.
"Passion" is like making out in the broom closet. Highly emotional.
That is NOT how anyone should approach S/W development.
I've had the same reaction to that word, until I actually looked it up and it's more about you care about something so much you're willing to suffer for it. Soo... a little different than the colloquial version. I still dislike it and think it's overused, but am now slightly more comfortable if people describe me as "passionate".
"Passion" can be defined as "a strong liking or desire for or devotion to some activity, object, or concept": https://www.merriam-webster.com/dictionary/passion The point is that HR people mean "passion" to be you're highly motivated, or driven, to do it. Emotions don't necessarily come in to play the way you're suggesting.
I find this article confusing. I agree with some of what it's saying, but I think my framing is completely different.
> The removal of the ego from the equation has yielded much more benefits than the passionate pursuit of being a programmer.
I think identifying as a software developer isn't really tied to how ambitious you are; I believe what's actually going on here is people feel some sense of shame to be associated with what they feel the industry has become. (Undoubtedly, I'm right there with them on that.)
Truthfully, while pride and ego need to be tempered, they're just as important as anything else. After all, if you have no pride or ego whatsoever about what you do, it's hard to imagine having a work ethic. And while I am a bit nihilist with regards to life, I still find myself feeling like it matters that people give a shit.
> I'd avoid PHP and jQuery simply because of the popularly negative opinion of them, and not because of any valid technical reasons.
It's good that you stopped doing this, but there's almost a kind of implication that every card-carrying software engineer thinks this way. I don't. In fact, I was a huge PHP user before I was a huge PHP hater, mostly fueled by Wordpress, phpBB, Postnuke, etc. in addition to the widespread availability of PHP as part of the "LAMP" stack (and much cPanel hosting, and development environments like XAMPP.)
In fact, the truth is, modern PHP development has turned around quite a bit. I still think there's more to go before I'd really consider looking back, especially since the world around PHP has improved very fast (Go and Rust especially, but still Python/Django and Ruby/Rails, and of course Dotnet.)
> Rather than write a simple main() method which solves the problem, I'd "architect" code bases that adhere to the SOLID principles, with countless interfaces and factories that ensure flexibility.
Again, not sure what this has to do with passion or pride of programming. I've always been a hard critic of design patterns. My personal anecdote is that using design patterns or systems like SOLID to build software is like using TVTropes to write fiction. Of course I'm not saying that these things are useless, but overconfidence on using them as a tool to build with is something I associate more with consultants than with passionate devs.
> My passion didn't die; instead, it changed priorities. It was no longer about my identity of being a programmer, but rather about my activity of programming. My ideal for software development is to find the simplest solution to the practical problem. I focus on ensuring that I program in such way which adheres to my pillars for a great program: simplicity, maintainability and above all, value.
Maybe there's some truth in here, but I still can't help but feel this is more of a semantics thing. You can pretend you have no ego or pride, but we all do. I would love to be objective. I think objectivity as a concept is useful even if it can never be 100% attained. But at the end of the day, my body is not a cold, careless hunk of silicon, and it'd be silly to pretend that in my desire to use programming to solve problems effectively and write better code, that I am not prideful at all or that I have no ego.
I think this post is more about learning to not fall into groupthink and control pride and ego than it is about a lack of passion or a change of heart.
I can't relate to this at all and I'm one of those "passionate programmers".
Perhaps it just manifests itself differently, but things like I've always preferred PHP to RoR because the PHP community is so much more practical and "gett'er done" mentality.
For me it's about knowing I've done good work. I don't need external affirmation, it's about _ME_ knowing I've done good work.
I had a good friend tell an allegory about a bricklayer who refused to build a porch for a house that was run down and when asked why the brick layer said he would not be proud of showing the work to his son.
I once built and maintained a system over a 5 year period that after the first 6 months never went down or stopped working unless external dependencies it relied on went down (think mail server going down causing emails to be unsent). It wasn't a simple system either, it deployed across multiple data centers around the world.
I'm quite proud of that work, what I'm most proud of is that no one ever went to work worried that system may prevent them from doing their job. I'm not saying it was completely bug free at all times, new features are always a risk, but it damned well did the core work day and day out and came to be something most employees of the company relied on every single day. That company was sold about 6 months after I left and the owner told me the system I built was one of the things they wanted access to.
I left my last job because their systems were complete and utter shit and the person who originally wrote them wielded enough power that he actively prevented us from fixing it. My problem wasn't the state of the system, my problem was being told I have to work with it like that without being able to improve it. Just to give you an idea, this guy once told me he had been doing it for 20 years and never needed to test on real data. Which is bullshit, when he did it he had access to everything, including production. I left because I'm not willing to not be able to improve a system that needs it that badly.
Long story short, I don't agree with this person description of what a passionate programmer cares about, at all. It feels like a caricature to me. But the amount of times I've seen complete and utter shit pushed as "it doesn't matter" is too high. system stability absolutely matters.
I think what the author was saying is that there is a difference between pride in one's self and pride in one's work.
The bricklayer allegory is interesting. If I were that contractor, I would have said sure I'll do it, and after it was done, I could say that porch is now the nicest part of the house.
This is kind of how I feel about functional programming like with Haskell or Rust. Once you get all the types in place, everything just fits together like a puzzle. I'm sure it's similar to a woodworker seeing a nice wood joint fitting together and becoming strong [0].
Anyone who argues that a given technology is outdated/antiquated/boring has already lost the argument. Sometimes that tech is already part of the operating environment and can get the job done efficiently enough that there's no need to install another piece of software (read: dependency). Other times you have no choice because the project consists of half a million lines of code written in that "outdated" language, and there is simply no practical way to fix a given bug or add a new feature by introducing another language.
P.S.: "Boring" technologies tend to also be stable technologies, a trait sought by smart programmers.
> They repeatedly mention PHP and JQuery as a boring technology, but that's simply not the case, they're antiquated technology
Both work, and both can be used effectively to build useful things.
What defines "antiquated"? jQuery is useful for me because it patches over the DOM API in a way that I find significantly more palatable and easier to program in than the standard JS DOM API. I don't care too much for the reactive frameworks.
I have little love for PHP, but can I truly say it's objectively worse than Ruby, Python, or Perl? I don't like various design choices they made in PHP (including some of the newer ones) and I don't really understand how anyone does like them, but does that make the language "antiquated" in any sort of objective sense? I don't see how it does. It's basically just "I don't like it". People come up with a lot of different ways to say "I don't like it" to try and make it sound more authoritative.
>Both work, and both can be used effectively to build useful things.
So can COBOL, FORTRAN, or any Turing complete language. Note COBOL and FORTRAN are still receiving updates too.
>What defines "antiquated"?
I don't think you want a definition, I think you want an exact empirical measurement, and unfortunately this does not exist. It's not an exact science, and what I may consider antiquated, you may consider great. You're certainly welcome to make COBOL programs.
>I have little love for PHP, but can I truly say it's objectively worse than Ruby, Python, or Perl?
You'd have to define some metrics to measure on. Bugs per thousand lines of code might be good. Average time to deliver n features might be good. Programmer satisfaction might be another good one, or some kind of measure of how easy it is to hire x programmers. There's tons of these.
As discussed above, I think you're trying to get at the common discussion of enjoyment or preference being subjective, and you're right. Someone certainly can enjoy COBOL more than Python, but let's not pretend there isn't a stark (and even measurable) difference between the two.
The real reason for choosing PHP or JQuery is you're already experienced in them and don't want to learn something new, or you're working on a legacy project. In which case, by all means continue to use them, but they're not boring technologies, they're antiquated technologies.
> You'd have to define some metrics to measure on. Bugs per thousand lines of code might be good. Average time to deliver n features might be good. Programmer satisfaction might be another good one, or some kind of measure of how easy it is to hire x programmers. There's tons of these.
Any of these might be good. I'm not the one making the claim or choosing the words. I'm asking you what you mean.
And does PHP (or jQuery) do worse on any of these? It's not clear to me that it does.
> The real reason for choosing PHP or JQuery is you're already experienced in them and don't want to learn something new, or you're working on a legacy project.
No, I prefer using jQuery. I have used the newer things too. I know how they work. I work with it daily at $dayjob. I still prefer jQuery.
You may think that's crazy and that is completely fine, but please don't insult everyone who disagrees with your preferences.
"The real reason for choosing PHP or JQuery is you're already experienced in them and don't want to learn something new" is not what I would call especially flattering...
PHP8 was released this year. JQuery had major releases this year too. Saying some is "antiquated" doesn't really mean a lot. What do you mean specifically?
Unpopular opinion: pride and ego actually drive personal ambition, technological achievements, and human progress. No one accidentally stumbles over being "passionate" and no one truly passionate divorces their personal identity from their work. That's why some of the most successful people in their respective fields also are often the most egotistical. There should obviously be some checks and balances there that everyone needs to take stock of, but that's just my two cents.