How do you answer the question, “what do I need to learn to be a good programmer?” I have written posts trying to answer that question, typically focusing on the languages that you should learn or the algorithms and other techniques you need to know. What about the rest of a programmer’s life? This is a less serious look at the life of a programmer. So, what does a programmer really need to know?
- Caffeine – You need to find your preferred caffeine delivery system. Mine is black coffee, early and often. Others may prefer diet soda throughout the day. There are always the classics as well, Mountain Dew and Jolt.
- Logic – As a programmer, you deal with logic constantly. Your true mettle will be defined by how you deal with the insanity (real or perceived) of the customer. The customer could be your project manager, the business analyst or the users. For any given project, you can count on someone sounding completely insane.
- Hours – Expect to be working a lot of them. Programming is one of those jobs that refuses to follow the 9 to 5 path. As you get closer to your deadline, the hours you work will increase quickly. Just hope that you can work from home sometimes. Also, weekends and time off are for management, and you need to be available at all times.
- Corporate Leash – You may not have any power to make decisions, but that does not mean the company cannot give you a leash. The ability of constant communication is too much for companies to pass on so you will likely get a crackberry, a pager (people still use them), or some other company provided cell phone. No, your leash will not be an iPhone, this is not meant for fun this is business.
- Blame – As a programmer, you are the low man (or woman) on the totem poll. Just remember that shit rolls downhill, the buck stops with you and if there is a defect it is obviously the programmer’s fault.
- Sleep – More importantly it is the lack of sleep that you need to be concerned with. As your hours increase, you will find there is less time to sleep. You will have to call into a conference call at 7AM with your offshore team, or support a 5AM deployment on Saturday.
- Skills – Your skills typically do not matter in the corporate environment. There are plenty of programmers that do not have jobs and could fill your position. Your expertise in the business domain is not important because there are business analysts that are supposed to be the experts in the business. You are replaceable, you are just a part in the corporate machine.
- Odors – As the hours get longer and management reads something about the productivity of team rooms, the odors start to get worse. We are not talking about someone heating up their lunch. We are talking about the stereotypical, unkempt programmer sitting in a room full of other unkempt programmers. After some time, the room starts to smell like a camel, and it is not pretty.
- 24/7 support – Yes, you will be pulled into support at various times, even for something like a customer service site. The application may not be life threatening or revenue threatening, it is just job threatening. So, your corporate leash will ring at the worst possible moment and you will have to get on a conference call with 10 people who have no idea how to fix the problem but need to be involved from the management perspective and one other person that might be able to help you.
- Stress – Project failure is never an option. You cannot miss the deadline even though it was not the deadline you proposed. No, you cannot remove features from the application in order to make the deadline either. You need to deliver the entire application by the deadline, or the entire team could be fired. Nothing like a little pressure with your morning coffee.
- Non technical managers – These people are considered the bane of most programmer’s existence. They need to manage a group of programmers, but they do not understand what they do for a living besides “they write code”. They typically overpromise, underdeliver and treat their programmers like cattle or “resources”.
- Political battles – This is one of those things that programmers are rarely directly involved in. However, your project and even the whole team could become the casualty of some political war. You have no power to prevent any of it, but you are definitely involved. Keep listening to the rumors so that you have some warning that something bad could happen.
Obviously, these ideas will not happen everywhere and are much more of a worst-case scenario. If you see several of these things at your current employer or even a prospective employer, you may want to run the other way. Given that you already carry a cell phone anyway, don’t worry about the corporate leash, they will just want your current cell phone number.
48 thoughts on “12 Things A Programmer Really Needs To Know”
Now I’m kindof bummed out. I think I’ll go write some code, to cheer up.
It’s not that bad 🙂 This is all worst-case, except for the team rooms. Those rooms get a little funky.
[…] This post was mentioned on Twitter by Autom Tagsa, Rob Diana, Denton Gentry, RegularGeek, twitips MV and others. twitips MV said: 12 Things A Programmer Really Needs To Know: How do you answer the question, “what do I need to learn to be a good… http://bit.ly/btQudf […]
Not the caffeine again! 😉
This is the source of the caffeine addiction 🙂
Ah, I remember the days of working for the man in the IT department. The problem with this post is that it’s too accurate.
It makes me glad I’m a consultant.
It is a tough move for many people to make, congrats to you on being able to do it.
I hate to say but this is completely accurate, I have seen most of the items myself and heard of others. Makes me wonder why I became a developer in the first place.
I wouldn’t say it is completely accurate, as I have not heard of a company that fits all of these. However, some of these are far too common.
Blast from the past. I did 19 years of that before I had enough and ventured out on my own. You reminded me of what a great decision I made years ago… thanks 🙂
Non technical manager, my CIO was a social worker and she comes up with “visions” such as for our website having avitars for members that age, grow, gain weight etc as the member does the same. 1) we are a behavorial health insurance company. 2) It was to be ready in two weeks to demo to the board of directors.
It’s these kinds of articles that are keeping “programmers” less professionals, and more laborers. This is a self-fulfilling prophecy. If you need to constantly work crazy hours, hop yourself up on caffeine, deal with terrible managers, than that will be your life’s work.
On the other hand, if you value your work as a professional, in the way that other professions do, you will be treated that way.
If you look at the best software organizations in the world – NASA, Google, IBM, whatever, these guys will never complain about how their colleagues (or themselves) are forced into positions where they can’t even take time to shower, must live of Mountain Dew, have incompetent managers, and their skills are not valued.
You are treated this way because you do not value yourself as a professional. You are responsible for your own working conditions, self improvement, and rising above (or around) political in-fighting.
Professionals don’t whine. They do a good job.
Blindly accepting these 12 things as life and a way to get ahead is why programmers have no life outside of work (I was one and now I manage a team of them). In my mind there are 2 things you need to learn as a programmer…
#1 – Learn to say “no” in your off hours. There are emergencies, but they should be seldom and if it’s not an emergency you say no. If it’s an emergency you warned them of (IE if you don’t give me time to do project X than we’re going to start having systems crash when the load hits Y), ask for (and expect) comp. time for the hours you up in.
#2 – How to GENTLY point out that a direction may not be the best and then suggest alternate directions. You are a peon and if they ask you to go in a direction you do, but your voice carries weight.
i would agree with tom and stuart on this.
learning to socialize and communicate effectively is a very important part of team work. perhaps a little bit emphasis should be done that programming is a language skill. it involves in addition to programming codes, verbal communication skills to understand the users, as well as, formal documentation skills. on a personal note, i have seen that in general, programmers who are involved in open source projects have better communication skills.
have fun. meet people, talk to them, ask them what they like. ask your project manager for time and money for the project team along with the users to have lunch.
You need to swap companies. Tea, 9 to 5, flexi, work weekends are you crazy? Stress optional, management absorbant.
This a very pessimistic post, and I’m sure many programmers have felt this way at various times in their career. But I disagree on the following points.
*Good* programmers are not easily replaced, average and poor programmers definitely are. Also, programmers who can communicate with non-tech people are worth their weight in gold. So go socialize and learn some people skills.
Simple hygiene can prevent odors. It takes 5 minutes to take a shower, and you should take longer – not to get cleaner but because it’s great thinking time for your brain. My best ideas/solutions often come when I’m in the shower.
If you have a job that keeps you on an unfairly tight leash, go find another job – there’s plenty of programming work out there. You might need to flex a little brain muscle and learn a new language or technology, but that shouldn’t be too difficult if you’ve got the fundamentals down. In this day and age there are a lot of fun programming assignments to be had.
Everything on this list can be true if you just accept your situation. But you can always do something about it. Don’t be so defeatist.
I have to agree with Phil, this is closer to reality than fantasy. I’ve encountered every one of these bullet points in a 25 year career (hopefully ‘and counting’ …) Maybe not always at one time, in one place… but all of them at one time or another… 🙂
I apologize for not being able to reply to everyone, but I want to make sure I made one specific comment.
This post was not meant to complain about the working conditions of all programmers. It is meant as a “less serious look” at what some programmers see in their jobs. Regular readers of this blog know that I would never tell someone to accept these ideas as something you have to live with. I am a firm believer in trying to change your organization, or if you cannot then you need to move to a new position.
In any case, I am glad that this has seen a large number of readers and feel free to disagree with any of my views. That is how intelligent discussion gets started.
I would never accept those conditions of work. I have a good manager (was a programmer), I have flexi-time, I never work weekends, and if I work overtime to meet a crazy deadline then my manager makes sure I get rest time after the delivery. Projects don’t fail because of programmers, and blame is fine, as long as your manager is willing to accept that you are not, in fact, a robot. Deal with stress via making the most of downtime with exercise, concerts, pubs and buddies.
Also my product specific knowledge makes me quite unlikely to be replaced with an entry level coder.
I think that there may be a different programming culture here in Ireland than over there. Whenever I am on conference calls with US peoples I cannot get over how aggressive the conversations can quickly become. I think it may be a bit less OTT over this side. You guys get more money though…
Completely true! Even though I was never employed as a programmer, I was the scientist who also did the programming in a small, Swedish start-up company who then expanded under the wings of a bigger, German company.
I should have become suspicious when I finally – after three years – got a company phone (point 4, Corporate Leash), and afterwords I was called on both my private mobile _and_ the company mobile, sometimes simultaneously, between 6am and 11pm. OK, in the German factory they were working in shifts, but I was not…
Since I was the only guy on the project, I luckily didn’t experience the odor of team rooms, but I had more than my share of incompetent management – both on the phone and in meetings…
And I got a lot of shit from the German COO, who luckily for the company just recently left the premises for good. Too late for me though, since I drew the brake and left the company 18 months earlier!
a pathetic list most of the points concentrate on working hours at least 4 of them….
The author must not be a serious programmer if he truly believes #7 is true. More than anything else, your skills will get you the job. How can you then believe that they don’t matter lol. No matter what anybody on this earth tells you. Your hard skills matter. If you start thinking your skills don’t matter, and you are replaceable, then you will surely be left behind in this industry.
Programming is the only job where you can be hero and goat, to the same person, on the same program, in the same hour.
thanks for the fun, R&D heh, heh. the fun.de.mental one is a sense of humour!
gits ya true anyting. many moons ago, I was learning assembler from a book and spent many days trying to code ‘around’ what turned out to be a typo! I did laugh, er, ah, eventually… lesson – the more cryptic a mnemonic (or comment) the more mistakes.
Mostly agree, except the point Devdude makes. I’m not naive, i know the corporate environment will try hard to make you believe you don’t matter, but we do… and by the way, yes, anyone is replaceable, even bosses and employers. We can be ants thinking in automatic, but without brains, or we can be programmers, human programmers with brains and being able to think by ourselves and even making the decision to fire your own boss (anyone “above” you in the corporate environment), that means, of course, quitting your job and finding a better boss… maybe yourself.
It’s not just programmers that experience the above, I think everyone in IT experiences some or all of the above at some point in their career, unless you work for a council, then you are pretty much guaranteed to be properly compo’d for overtime, have realistic deadlines and have the budget to do whatever needs doing 🙂
Most programmers are replaceable, especially now with the easy to use GUI development platforms nearly everyone uses – read visual studio and Net-beans, but then again so are most network engineers, sys admins, etc etc, that’s why when you leave an organization they always manage to replace you 🙂
Kudos to the people who won’t accept these conditions of work. As some of the guys said above, it is part of valuing yourself as a programmer. It’s really a shame if programmers are treated in a slave-driver manner. I admit though that it is hard to go against the flow when the bad circumstances are already served in front of you. Through experience I learned that you should have a threshold in accepting tasks that seem to go overboard and just say NO when necessary. By not doing so, you’re pushing yourself to a downward spiral of stress (i.e. You’re tired of working but you can’t stop because of worrying of the pending tasks).
As an additional note, I believe that working overtime should not be part of a working culture except for EXTREME cases of urgent needs. And once this happen, the company should do its best to prevent this case from happening again. Working overtime is a short term solution. After a while, programmer will experience low morale, stress, and sickness if done in an excessive manner. And its much worse if you’re not compensated with overtime pay.
As for the guy who said that most programmers are replaceable because of the existing IDE’s, I strongly disagree. IDE will provide you with tools to ease the development but it won’t provide you enough complexity to perform all the possible functionalities that an enterprise software might need. I’m using Netbeans and Visual Studio and I admit that using these tools make the development process faster, but it would take a skilled programmer to implement complex programs. For example, if you’re the type of programmer who strongly depends on GUI Editor and you’re implementing a form with a lot of fields, there’s a possibility that the generated code will reach the maximum number of lines of code. A skilled programmer know proper modularization and other approaches necessary to do the job.
My apologies for my long post. I became much responsive to these kind of issues after being a project manager (and a developer).
Keep my eyes and mind clean, clear,
Wow, this sounds like someone that is disillusioned with his/her job.
Well currently I am a student and has a desire to be a developer but after reading your article I have grown quite apprehensive…
As one of my firend,
If we compare Software Industry to Dairy Producion. Programmers are exact equalent of Cows – Sorry to tell the truth. All the product comes form Cows but no respect for them.
[…] Aug. 10th, 2010 at 6:18 AM How do you answer the question, what do I need to learn to be a good programmer? I have written posts trying to answer that question, typically focusing on the languages that you should learn or the algorithms and other techniques you need to know. What about the rest of a programmer's life? This is a less serious look at the life of a programmer.Source:https://regulargeek.com/2010/08/07/12-things-a-programmer-really-needs-to-know/ […]
We’ve solved the deadline problem where I work by not having deadlines.
I consider myself a software developer and the above mentioned, although i haven’t experianced any, actually happen in some organisations (i know one for sure….) and I will work in that kind of org. only if im desperate for the job.
Some people say that other people are more comfortable in hell!!!
[…] 12 Things A Programmer Really Needs To Know | Regular GeekThis is why I'm a consultant.Tags: humor programming Tags: del.icio.us, fun, humor, inheritance, programming, raganwald, ruby, webdev […]
New Element Found – Administratium
AMES, IA-The heaviest element known to science was recently discovered by materials researchers at IPRT/ISU. The new element, tentatively named Administratium, has no protons or electrons, and thus has an atomic weight of 0. However, it does have one neuron, 125 assistant neutrons, 75 vice neutrons, and 111 assistant vice neutrons. This gives it an atomic mass of 312. These 312 particles are held together in a nucleus by a force that involves the continuous exchange of particles called morons.
Since it has no electrons, Administratium is totally inert. However, it can be detected chemically, since it impedes every reaction i comes into contact with. According to its discoverers, a tiny amount of Administratium caused one reaction to take over four days to complete; the normal reaction time is less than one second.
Administratium has a normal half life of approximately three years, at which time it does not actually decay, but instead undergoes a reorganization in which neutrons, vice neutrons, and assistant vice neutrons exchange places. Studies have shown that the atomic mass usually increases after each
Research at other laboratories indicates thatAdministratium occurs naturally in the atmosphere. It tends to concentrate at points, such as governmental agencies, large corporations, and universities. I is always found in the newest, best appointed, and best maintained buildings.
Scientists point out that Administratium is known to be toxic at any level of concentration and can easily destroy any productive reactions where it is allowed to accumulate. Attempts are being made to determine how Administratium can be controlled to prevent irreversible damage, but results
to date are not promising.
Heh, a wonderfull ‘defeatist’ list. I’ve encountered most of them in my 16 years as developer.
And yes, while ‘accepting’ this list at face value and living accordin to it is definitely not the way you want to go, unless you want to have a burnout in 5 years from now, the list IS a good thing to know, because you’ll know your pitfalls as a young up-and-coming new shiny programmer(aka recruiter bait ).
Here’s a full list of my comments on them:
1 Caffeine: Seriously, if coffee would spontaneously die out on the planet, or the supply of it would not be able to reach the western world, 90% of the IT sector would fall apart. It’s the oil of the IT industry. It might be the yapping of a caffeine addict here, but I nkow I can’t live without my morning coffee.
2 Logic: Welcome to the real world. As any system becomes more complex, insanity will creep in, the real world being a prime example as it’s the most complex system on earth. ( YOU try and figure out why someone did something in 100k lines of legacy code that make no sense anymore in a current frame of doing thins )
3 Be flexible. Programming ISn’t a 9 to 5 job, when you go home, that thing your working on is still in your head, it’s a problem, and one of the things that tends to draw people to IT is problem solving. Just remember to know when to put things out of your head, and when to light the midnight oil. And when you light the oil, get some R&R afterwards. Sometimes taking a good nap over something helps too.
4 Easy fix: Turn it off when you do NOT want to be disturbed.
5 In larger corporations, this tends to hold true, the good part is, you can use the very same method to throw it back at people, if you’re in a job where this happens, have things written down, there will be procedures and meeting notes and such, make sure that when you know something is going to go horribly wrong if they don’t follow your advice as the expert, that you’ve got it written down somewhere that you voiced this. Then when the shit comes down, you can roll up that piece of paper and use it as a bath to fire the shitball back up.
6 it’s like drugs.. Just Say No. While being flexible is good, there’s a limit on this. See points 3 and 4.
7 This might be how managers perceive you, but if you’re good, you’re gold, and unless they’re truely incompetent, a good manager will recognise this. I’ve seen this happen several times, where the guy who KNEW all the stuff needed was thrown out, a week later, the company is in deep shit, so he called them up and listed his hour rates for fixing their problem, at the following board meeting, the manager that fired him was butchered, almost litterally.
8 This problem starts with yourself. Learn 2 shower.
9 as in points 3, 4 and 6. Set a limit to this, and if there’s odd hours, make sure they know you expect to be paid for them.
10. ICT and stress tend to go hand in hand, that’s a given. However, just because some manager set a deadline doesn’t mean it’s YOUR deadline. If a project will take 3 weeks of programming and 1 week of testing, it will take 3 weeks of programming and 1 week of testing. Just because some manager says it has to be done in 2 weeks does not make this attainable, or your problem, it’s his for not listening to you when you said it would take 4 weeks.
11. Luckily for us, these are a dieing breed. Managers of today are either ex-developers who’ve gone up in the corporate ladder, or newer ones that have been taught communication skills. You should pick up some too, it helps.
If a manager is non-technical, don’t talk tech stuff with him, instead, learn ‘management stuff’, and talk that with him. A manager should not be interested in how something is technicly implemented, he should be looking at costs, and running times and if there’s more people needed and who is available etc. That’s his job, so give him the tools to do his, and let him do that, and make sure he gives you the tools YOU need to do yours ( aka proper specifications of a problem, or the person you need to talk to to get said things ).
My addage is: Programmers program, Managers Manage. Just like modules, keep interdependency at a minimum.
12. In larger corporations, this will defintily hold true. And while you personally won’t be in the direct front lines of this, your team manager will be, so in this case, stand by/behind him, and make sure he’s got the tools he needs to fight and win, aka make sure he has enough spec/knowhow/whatnot needed to convince the upper echelon that HIS team is the best solution to something and they should be doing things the way he says they should ( aka, follow your advice 😉
I read a lot of negative but can happen scenarios. But #7, I do not Agree..”Your skills typically do not matter in the corporate environment” ? Skills is what corporates are looking for in an interview, before they hire you right? It matters a lot ’cause it’s what they need to make the job done.
Excellent details there for aspiring programmers.
If this is the kind of environment you choose for yourself, you can certainly find places to work that will help you make it a reality. But if you have some self respect you can avoid most of these most of the time.
The problem with this article is its too accurate, you don’t want those IT wannabees to be scared do you? 🙂
Reading this list really made me feel good about myself. I like my job, and my company and I have high regard for those around me – as they (mostly) do for me. So, for a programmer who hasn’t had to deal with any of this, I find this list inspirational about why my life is great!
Thanks Rob Diana!
Wow!!Surely things are not as bad as you describe them here!You can sleep,be available,have a life and be up-to-date.It is just a matter of good scheduling! 🙂
[…] despues” pues me halle con el boletin de Campus MVP y bueno entre otras cosas halle este articulo que en su original esta en ingles y me he tomado la licencia de traducir (bueno no soy muy bueno en […]
Comments are closed.