3 ms·
I hate this list. It should really be called the Ten Commandments of Good Little Worker Programmers. The 'commandments' are all about creating nice friendly pro
by alexkearns 15y ago
I hate this list. It should really be called the Ten Commandments of Good Little Worker Programmers. The 'commandments' are all about creating nice friendly programmer cogs that work smoothly together, minimising hassle for their employers.
There's nothing there about programming as an art. There is nothing there about pushing the boundaries of what is possible through determination, vision and, yes, ego. There is nothing about solving complex technical problems through sheer force of will.
To hell with 'egolessness'. Why shouldn't programmers have an ego. And, indeed, doesn't it take an ego to do anything great, to think that preposterous thought that you can do something no-one has done before.
- memset 15y agoFor the vast majority of us, technology is one component of the business. The rest of the business is about figuring out how to lower shipping costs so that we make more money per item shipped. Or how to deliver food more efficiently. Or accounts receivable software. And none of those problems are, well, are particularly hard or complex, at least not enough in my mind to justify ego as you've portrayed it. There are plenty of professions where people work just as hard (harder, even, including people in the knowledge-working industry) and do not complain nearly as much as developers. There is a lawyer in our office who works very hard to ensure that we are selling wine in a compliant way across multiple states with different regulations. That person's job is at least as difficult, if not more, than my job writing python. But you'll never hear them complaining because we only have apple juice, rather than orange juice, in the vending machine.
- CodeMage 15y agoAnd none of those problems are, well, are particularly hard or complex, at least not enough in my mind to justify ego as you've portrayed it. I wish I had a dime for every time someone underestimated the difficulty of solving or optimizing a real-world problem. I might have agreed with you if you claimed that executing a solution is not as complicated as coming up with one. There's a line between having an ego and being a jerk. I don't think that line is so thin that we have to resort to suppressing ego.
- alexkearns 15y agoYou are kind of making my point for me. This is a list drawn up from the perspective of a business owner who obviously would prefer all his employees to be egoless automatons who work smoothly together in the most cost-effective and efficient manner. Yes, from the business perspective (or the project management perspective or the agile coach perspective or the countless other professions that have infiltrated software development), this list is absolutely great. Couldn't be better. Five-star perfection. However, from the programmer's point of view - and that is the view I was arguing from - the list is pretty detestable, at least in my view. People get into programming usually because they want to make things, because they want to be creative. But - in the vast majority of cases - they end up working on legacy projects that require absolutely no creativity, where, indeed, creativity is frowned upon - see Commandment 4. You are saying they should shut-up and deal with it. I am saying, fuck that, they can complain as much as they like. Having said that, even better than complaining would be for the programmer to ditch the job and start creating their own software, under their own terms. But, of course, you would need a bit of an ego to have the guts to do that.
- memset 15y agoHaha, I am all for people squeezing out from under The Man and creating their own software. I read Commandment 4 ("Don't rewrite code without consultation") differently. My opinion is that if you are working on a team with developers, you have to be judicious about making big changes. It is possible (likely!) that some of that code was written because of some weird Python behavior or to handle an edge case from a buggy external API or some odd behavior from another internal system. I do advocate "if you want a change, write some code and make the change." But a wikipedia-style edit war between programmers' egos is also not productive. In the context of a business, "creativity" can and should mean "creative ideas that have the potential make more money." It is unfair to ask someone to pay you a salary for unbridled side-project creativity; that is what your disposable income is for! Even when you are running your own business, well, it isn't a business unless you ask the question "how can I create software that my customers will pay for?" rather than "what shall I make which sates my creativity?" I'd suggest, then, that this list is relevant for anyone trying to make money, because that always entails working with some other person (fellow programmer, business partner, customer) and that can only happen when you have a harmonious relationship with - and are willing to bend a little - for these people.
- cicero 15y agoIf you are so good you can achieve greatness by yourself, as a lone individual isolated from others, and that is what you really want to do, then knock yourself out. That is the American individualistic dream after all. However, if you are not so awesome that you can succeed without help from others, or you value teamwork, community, and friendship, then these are good rules to follow, whether working for a large company, or starting your own business.
- adrianhoward 15y agoI like working with other developers. Other developers seem to like working with me. I very definitely have an ego :-) I've worked with some folk who don't seem to work well with the rest of the team. They certainly make things unpleasant for management - but that's only a secondary side effect of them making the whole teams life unpleasant. Which in turn makes the product worse. Sometimes (not always - or even often) the person who doesn't work well with others is technically excellent. I mean stupidly good. I used to think that more than made up for the trouble they caused. These days... not so much. To pick one from the list - do you seriously think "Treat people who know less than you with respect, deference, and patience" is a bad goal to have? That doing that will make you a worse developer?
- alexkearns 15y agoI agree with bits of it. Respect, yes, deference... er, no (the only person I show deference to is my wife), patience, usually.
- josephcooney 15y agoThese statements are kind of like zen koans - open to different interpretation and depth of understanding. I don't see anything on that list that would preclude someone from doing something great, and a great many things that would probably help.
- brazzy 15y ago"And, indeed, doesn't it take an ego to do anything great, to think that preposterous thought that you can do something no-one has done before." It also takes an ego to overestimate your skills and utterly fail because you're not as good as you think you are and can't collaborate effectively.
- wpietri 15y agoNot at all. It's totally possible to dare to do great stuff as a team. In Silicon Valley, VCs very rarely fund single founders. They fund teams. That's because it takes a team to create the world-changing companies that they seek. This list isn't saying you can't be passionate about your work. But it is saying you can't be an asshole to your teammates, and that the point of the work is never the code itself, but the effect you are collectively trying to have in the world.