When I started working as a Junior Developer in the early 90s, I was developing application software in airline mainframe systems (for the record : IBM TPF technology). Dozen thousands of users (travel agents, airline reservation offices), hundredth thousands transactions a day.
Back in those days we were developing in Assembler/370, a programming language which, roughly speaking, is to today’s programming languages what a 70s calculator is to an iPad. Anyway, that was the most appropriate technology to get things done fast on these mainframe systems.
The problem was : a programming mistake (e.g. pointer error) would end up in mistakenly over-writing the core system, bringing the whole system down and having travel agents all around the planet without any system to enter customer bookings. Coding error would easily cost millions of dollars.
So you didn’t want to mess with the code and for each piece of code you wrote, you were having code reviews by your peers. Half a dozen professionals discussing every single line of code, the number of CPU cycles for each instruction etc … More than often, these code reviews turned out to be some kind of Arena in which professionals happened to struggle to find out who was the toughest TPF gladiator.
Prior to one of my first code review, my team leader (Tony Knight – an exemplary manager) provided me with a guideline to help me taking a step back and cool down : the 10 commandments of ego-less programming. This has since proved to be a professional life savior for me.
Everybody Got’s One
This egoless programming mantra comes from Jerry Weinberg‘s book The Psychology of Computer Programming (a book published in 1971). As Wikipedia puts it :
Egoless programming explicitly minimises constraints of hierarchy and status so as to enable the free exchange of ideas and improvements.
Watching the football world cup and witnessing how ego can damage a team, I came to the conclusion that any team member, anyone involved in collaborative work should read it and get inspired.
Now, being an Egoless Knowledge Worker does not necessarily mean that you don’t have an ego. It just means you keep it away from any collaborative work.
(Considering the amount of content I publish, I personally suspect having quite a considerable one. Still, I leave it at the door of the office).
10 Commandments of Egoless Knowledge Worker
Changing a couple of words I was impressed with how appropriate these principles are to any knowledge workers in a collaborative environment. These principles are universal and valuable. I suspect they were used as a basis for the Agile Manifesto.
Once again, IT workers appear to be at the avant-garde of problems encountered by knowledge workers in an industrial environment. Listening to their advice and how they succeed in solving organisations issues can help the whole KW family.
So here are the 10 commandments of Egoless Knowledge Worker derived from Jerry’s originals. Just changed “code” with artefact and here we are :
- Understand and accept that you will make mistakes.
- You are not your (code) artefact.
- No matter how much “karate” you know, someone else will always know more.
- Don’t rewrite (code) artefact without consultation.
- Treat people who know less than you with respect, deference, and patience.
- The only constant in the world is change.
- The only true authority stems from knowledge, not from position.
- Fight for what you believe, but gracefully accept defeat.
- Don’t be “the guy in the room.” The guy in the room is out of touch, out of sight, and out of control and has no place in an open, collaborative environment. (From the dedicated post in codinghorror)
- Critique (code) artefacts instead of people – be kind to the producer, not to the product
Watch this space : soon to be followed by the Egoless Manager principles …
(Picture taken from Core Memory book by Mark Richards)
Those principles are valid for any position in any corporate environment. New hires (and old ones) should be required to repeat those every morning. Good post!
I think there’s a state of “not caring” that permeates the environment. Software ships when it has “a few bugs” instead of when it’s actually done. Revisions are fast and sloppy, just like the actual coding. I think we need some ego so we actually feel bad when our work is bad, and proud when we ship a quality product. Otherwise, there’s no incentive for great work, you just write something quick and dirty to get the job done and cash your check.
Good reasons to stay out of that field.
Some very important points! I am glad you took the time to write them out for your colleagues. I think it would be just wonderful if we all “got along,” lol. Knowing that this may still be a little bit from happening, if people at least pick maybe 2 (or 3?) of these points and make a commitment to operate under the premise that they will not violate them, then I think that’s progress. 😀
With Love and Gratitude,
The Intentional Sage
Thank you for your post. Ego-less is as you know a Buddhist goal. Let us all try to be a little “ego-less”! 🙂 Kudos
Excellent advice for a member of any team. Too many teams can fall victim to jostling for superiority. It’s not *you* that counts–when the team wins, you win.
My favourite is #3:
“No matter how much ‘karate’ you know, someone else will always know more.”
That is just fantastic advice for life in general!
Very interesting. People should try to avoid conflicts with other peers if they keep in mind those commandments.
I love this! I am an educator, and your ten commandments are pretty much a must in the classroom. An educator will mess up every now and then – accept it and admit it. Some students will love it, others won’t, but you come clean, and it shows in your attitude. And all students respect a clean attitude. And if they make sweeping generalizations about you based on your mistake – hey, you are not the mistake! Sometimes it may happen that one of your students will know more than you on a certain topic – use the opportunity to learn, don’t get stuck in a teacherly box. Consult other educators, as well as your students, before changing your strategy (and at the same time, don’t be afraid of doing it, just announce it’s an experiment). The remaining commandments are just a function of those ones. I am so excited about your post, I’m gonna use it in one of my future posts on education.
Assembly language programming. Though I never worked on that, I had to take a class on that during my graduation. Its interesting but I can just imagine the nightmare when using it to develop large systems…
All > thanks you very much for your inputs and insights. This is much appreciated. Love these global conversations.
amoodygirl > it just all depends on how organized you are. The most complicated thing is to recruit people with thge knowledge, not so many left …
christotechne > Glad you liked it and glad to see it makes some sens in an educational environment. Watch out for next episode : The Egoless Manager.
technophilia > I guess occultpriestess answered your comment. Ego is the source of evil for Buddhism. That you should inspire some second thought. Agree with you though that many delivered software is sloppy. However it’s not a matter of ego or pride, it’s a matter of organisation and management. By the way ego is not the same thing as pride.
Je viens une fois de plus vous importuner mais je ne saurais trop vous recommander si vous ne les connaissiez point d’écouter de jeunes gens très prometteur musicalement parlant : Something à la mode, K.Flay and Gérald Genty…….frais, parfait par ce magnifique été.
Je vous salue bien bas.
Must be tricky when there’s so much riding on your code being perfect to keep your head. Keeping conflict to a minimum would be so important. Great post!
Enjoyed reading the 10 Commandments! With just a little bit of tweaking, they can be applied to all sorts of arenas. As a teacher, they all apply to me and my students, coworkers, and supervisors.
To print and post at the office.
This is really true- not just of the IT industry, but any professional environment. By coincidence, I was ranting about the massive egos-reaching-to-the-sky of some professionals in my field:
Egoless? Can’t see it happening, not in universities at any rate.
Enjoyed your entry and paraphrased it: Egoless work explicitly minimises constraints of hierarchy and status so as to enable the free exchange of ideas and improvements.
World is too full of ego.
Yep agree with that marlajayne. I believe there are certain behaviours that should be demonstrated when working within a team, and those are more or less the ones you would put on the list.
I am in a fortunate position that many of my colleagues see things the same way, and I in turn with them.
Looking forward to seeing the Manager post.
I’d like to hear you expand on #8, especially the “fight for what you believe” part. A story from your experience, perhaps in a future post?
Thnaks to you Karen,Shenegenziuk, Dawn, TheNewComer, Marlajayne, mostlymath.
Karen, I guess it means that you just be grateful to be passionate by your work but regardless it just say how passionate you are bout a topic, if the call does not go your way you just have to accept it.
All > on a pretty tangetial subject, great insight by Jason Fried from the 37Signals start-up in incmagazine web site : How to deal with conflicts at work http://bit.ly/9tXyvj
This is so interesting because my b/f works on code for an airline and I never quite fully understand how it works, or what the rules are, and I think this is definitely a great list to follow for sure. The code seems to be a big thing, almost like a baby, so I’m kinda lost sometimes when he tries to explain it to me.
I’m a journalist – but with a few minor changes, these rules would work for editors and reporters. IN fact, they’d work for any kind of knowledge worker.
i like the picture.. 🙂
Need a moderator ?
On my experience, no 7 is the hardest one to implement especially in beaurocratical office where people threat someone based on their position.
Reblogged this on Things I grab, motley collection .