What are things that make a programmer's life miserable?
- legacy code with no tests, no docs, etc
- vendor lock-in (e.g. ancient oracle db)
- and only for me: CSS and graphics
- Project/feature creep;
- Not being allowed to use the tools you are most comfortable with, for silly or petty reasons;
- Not being given any "personal development" time (learning new technologies, etc, while not in the middle of the project that uses them).
Old code that was generated by a tool, but the tool is no longer available or doesn't work on your machine.
- Management
- Minimum working hours (have to be seen in office 50 hours / week)
- Meetings (Paul Graham on Maker's Schedule)
- Not having sufficiently powerful machines / choice of OS
No Time to learn new things. Sure i can study books, blogs, boards in my offtime. But when i've worked 12 - 14 Hours a day iam not in the mood to turn on my notebook and start reading.
No rewards from Team-Leaders (non prgrammers) , they think it is just an easy job to code some nice webapplications.
Working on boring projects
CEO has read this great new book on management and wants everyone else to
- Lack of Caffeinated drinks
- Having to Use a GUI tool when a command line one is available
- Project Managers who don't understand the Project
- Old code full of GOTOs
- Management and Sales Buzzwords.
- Sales (Deliberately) underestimating the time to complete a project because it gets them the sale (and the commission) :-(
Of course this list might just be me being a GOP (Grumpy Old Programmer)
:-D
Maintaining code that was done by others who never wrote any comments or description to anything. the main 2 reasons:
- always being responsible for any fault happened in it.
- if nothing bad happen..."good work, but hold on you didn't do it, it's the previous programmer"...
so basically the blames thrown at you, and appreciation given to others...
I hate it!
Different keybindings for every application...
Hot laptops that burn my thighs...
Computer screens that don't work outside so I miss the summer working on the sofa...
People insisting I have Skype running 'in case they want to message me' when it sucks memory like a dog...
Trying to build cleanly on Windows Vista and Ubuntu (bonus points if you can guess which one is the problem)...
These are a few of my (un)favourite things...
If you work in a scientific lab, the 'Publish or Perish' mentality will slowly crush you, because your supervisors will always ask you to generate results and plots and you won't have the time to refine any technical detail, refactore your programs or define tests to check your results.
- Handling different projects(using different languages) at a same time reporting to different boss
- No coffee provided
All actual examples that I've encountered in the past five-six years:
- Having to use corporate standard hardware that may make sense for Joe/Jill in accounts but proactively prevents productivity if you're a programmer and are so bad that people bring in their own hardware like monitors or external drives. Classic example - "Can I have a bigger harddrive please?" "You're not supposed to store stuff on your local harddrive but must use the network drive (which is 500MB)" "OK, can I have about 50GB network drive space then because that's what it takes to compile the software" "No"
- Being stuck with hardware that's ten years old because the system you're working on runs only on an OS that is not "corporate standard" anymore so you can't buy any new hardware. But the tools we should be using were not meant to run on a box with that low a spec and crawl, if that.
- Virus scanners that interact so badly with the new corporate standard version control system that check outs take hours (instead of minutes as they do on Linux)
- The assumption that you don't need additional tools, except the minimum IDE, because "nobody else wants it" and "if you needed it, the IDE vendor would ship it". Plus of course the offers of buying it yourself and installing it on your machine gets knocked back because you're not allowed to install non-approved, non-standard software. OK, I'll go performance tuning without a profiler then, no worries
- Working in a really noisy open plan office so you can't concentrate because people are constantly shouting, then get shouted at because you're not getting any work done
Not to mention the usual big corporate style mentality that permeates even small companies these days.
Working on the same CRUD business applications time after time - in other words, uninteresting work.
Marketing getting involved, or end users expecting to see 'Minority Report' GUI Interfaces
when the company you are working in scores ZERO on the Joel Test hehehe
Working on your own, instead of on a team:
- You learn much less when you can't bounce your ideas off other people.
- You need to do all the infrastructure (servers, versioning, test suites, scripts, etc) yourself, instead of splitting it between folk.
- Management or Sales tell you to change the business/GUI logic (and you warned them about that "future feature" few months ago, but nobody listened)
- You say ok (in few seconds you reckon some ~1000 new/modified lines of code will be needed to do this) and at the same time you look really pissed off
- Management or Sales tell you: "Oh, come on, this will take 2 or 3 clicks with the mouse..."
The disruptive noise of everyone around you. When you complain about it, management thinks you're an arrogant prima donna, when actually, a developer would rather work in a quiet broom closet than in the poshest, loudest cubicle on the floor.
The isolation. Getting anything done requires isolation, but messes with your mood. In ordinary company cultures, socializing is done on premise and people avoid each other outside of work. In the best IT companies I've worked for, people avoid each other on premises (got work to do!) but socialize at lunch and after work. A developer inside a typical company culture will never see anyone, or will never get work done.
The fact that software requires a rather sophisticated customer. And the customers often are not even sophisticated computer users, let alone sophisticated buyers of line of business applications.
Too little RAM in my machine. There are up to 3 VMs running the same time, sharing 2 GB of RAM (not to forget the host system)...
CMM being applied as a certification end in itself rather than as a means to reach a better software process.
Management concerned with the impact of any changes/new projects on their reputation with higher management rather than in terms of the intrinsic value of the project.
Noisy work environments.
Long commutes.
Long hours being compensated for with free order-in unhealthy fast food which doubly increases the risk of heart attack.
Team members located halfway across the world in a time-zone that coincides with your sleeping hours.
Company legal requirements that require a 6-month review by the legal department and a technology review to download any opensource tool.
1) No Free Beverages 2) The HR thinks they are the main Bread earners for the company and the programmers are just fancy typists. 3) Slow crappy computers 4) Every Programmer should have his own private office.Good programming requires lots of skill and concentration and all the noise around the cubicle doesn't help the cause. 5) Cleaning someone else mess.
In contrast to Paul Biggar; Working on a team instead of largely on your own. Because of one team members thoughts on how a build system should work, half of our projects can't be built directly/without the projects that depend on them. I envision this to be either because the other dev is a masochist or doesn't work below the UI layer very often.
Similarly, derailed meetings; and using generalities and metaphors in an argument/discussion, where they don't fit, or where no instance of the generality exists.
Basically, any time you have a bad mix of personalities on a team. We have one very strong minded individual, and quite a few 'weaker' personalities. It just doesn't work well...
This has to be said: pressure and stress come from within. What makes the programmer miserable is his or her own business and unique to everyone. I was miserable at a programming job, but it really wasn't the job. It was me. With a proper attitude adjustment I would have been fine. You can't do this on your own, but you do need to realize you need help. Giving yourself an attitude adjustment is like trying to give yourself a haircut.
Now obviously the work is stressful. But any job is stressful. I worked at a company that had written job descriptions that marked each item as "cope with the stressors of..." so your job is to deal with the stress.
One good way to cope with stress as we humans are the talking animals, is to blow off steam to those who can understand us. So whining and sharing your misery with your programmer brothers is a good idea.
But not one universal thing will make a programmer miserable. It's your job; do it, or find a new career. Or at least, a new job.
I realize this is a hard line and as this is a community wiki we aren't looking for one answer; but I didn't come here to bitch today. I have to go get my work done.
- Doing admin type work as opposed to programming...for weeks at a time.
- QA dept that cannot recognize a defect
- Working OT to get a release done, then having it pulled to go back to working on a prior version.
- Websense (I call it the Great Wall of China)
- Not being able to target .NET 3.5 because the server is still running Windows 2000
- Stupid IT politics (My customer lost a lot of time because on a new push of new Symantec)
- Lack of planning
- Lack of interest of the domain
- Every person in the company has its own version of the rules...
i'd have to say incompetent clients, they make life so hard some times.
and things that don't work when they should!
Being on teams who are content working long hours, who lack focus, and in a constant state of emergency yet have no desire or will to improve their processes.
A close second are those who talk a lot about code quality or being Agile, then do the opposite using the "Agile" or "Extreme Programming" methodologies as an excuse to continue their wild west style of coding.
Microsoft Access.
- Bad non-standard SQL engine
- Poor DDL support
- Non-standard data types (e.g. Number, Yes/No)
- Scales badly
- Version-sensitive
- Deployment problems
Recruiters/HR who require 5 or more years experience in 10 different technologies and are unable to understand that programming/software development skilll is something that transcends language, OS, hardware, and environment.
When you finally deliver code that does exactly what is asked in the requirements document and it is still, somehow, not what business wanted.
A lot of the paperwork/management stuff has been mentioned, so here's a technical one that's been making my life hell for the past two days:
DLL hell... Such as the Oracle .NET Data Provider seemingly mismatched, yet no resolution in sight, and not much help to be found. Massive waste of time, during which no actual work is getting done.
ClearCase (worst revision control software)
Linux development on a 32 bit machine running Windows XP (I love linux, BTW). The VMWare clock always gets out of sync.
So some anecdotal evidence on noise levels in cube farms. I have a laptop I use as my ipod, and a pair of Bose QC2 noise cancelling headphones. I used them in the cube farm because it was the only way I could drown out the loud cretin on the phone in the next cube who had to have EVERY conversation on speaker-phone... (nevermind the 5 people who decided to have a conversation outside my cube while I was on a con-call with a customer, and took exception to me screaming at them to shut-the-fuck-up whilst on mute).
Anyway. I quit that job and moved into an office with another person. Using the same headset, and the same volume levels, where before the headset would cancel noise out so you could be RIGHT behind me in the cubicle talking to me and not hearing you, I was able to hear conversations from the office next door. The volume level was THAT different. It's not good for you long-term.
It's probably a good 10-15 decibels difference. Closer to 10. Here I only get one AC fan creating noise. In a cubicle farm I get EVERY AC fan within sight. Plus everyone coughing, talking, on the phone. Every door opening, even conversations halfway down the floor.
- Backward compatibility
- Dealing with code that sucks(written by others)
- Doing things that are not part of his job description
Weekly meetings of twenty people first thing in the morning, in which the same three or four morning people always start cracking jokes halfway through, to the complete exclusion of business. I just want to crawl back to my desk (or better still, a hammock) but the meeting can't end until we're through the agenda, and we can't do that until open-mike comedy hour is over, and there's not much hope of that while our resident rise-n-shine comic genuises are all jazzed up on caffeine and sugar and their own brilliant wit.
Policies which absolutely forbid the automation of tedious, repetitive, time-consuming chores.
Managers who believe that
- the whizz-bang IT methodology that was state of the art twenty years ago is the best thing in the universe,
- your estimates are your promises,
- their estimates are your promises,
- the longer they take to say something the more deeply it'll sink in,
- technical problems can be solved by adding stress, and above all
- the word "need" trumps everything ("We need this by Friday" "That's impossible for the following reasons..." "You don't understand, we need this by Friday."),
The biggest thing to bother me is clients that want a rush-job and don't see the value in a full software development process. Every time this has happened I've never seen the team finish the project, bugs were plentiful, and the code was a mess.
If you want something done right it pays to spend the extra time and go through the full process.
"Fast, good, cheap. Choose any two (you can't have all three.)"
Clarity (worst piece of software I've been forced to use ever)
A project manager who was the CEOs girlfriend and who didn't even know what language we programmed in (of course she was promoted from CEO's secretary)
Expectation that I can read your mind and will design things exactly as you would want them even though you are too "important" to waste your time telling me what you want.
Punishing the developers for failing to interpret the bad requirements; it's somehow always our fault it doesn't work the way you want it to, not your fault for failing to tell us what it needed to do.
Unmoveable deadlines even when the requirements expand or the developers are temporarily moved to a higher priority project (how can I meet that deadline when no one is allowed to work on the project?) or when required information (like a file of their targeted customers)wasn't received from the client until the day of the deadline even though it was due to me a month earlier. Even worse when the deadlines can't change when we say we have an unanticipated problem that must be fixed before we go live and they make you push it live broken to meet the deadline rather than tell the client it will be late. Oh BTW it's your fault when the client them notices it's broken. Hey we told you it was broken and not to push it.
Sales guys who cut your time estimates in half (with no drop in requirements) and then complain when the project goes over projections and is only half done. NOt my fault you didn't believe me when I told you how long it would take.
Required training held at lunch time (or once even on a weekend). If it is important enough to be required it is important enough to do on company time not my time.
The client from hell who can't be pleased no matter what you do or how many extra hours your team works or how much you do for free to keep them happy.
(thanks for the question, it felt good to vent)
Getting yelled at for putting in a simple bug fix like correcting a typo that my boss says, "We don't have time to test that!" which to my mind is ridiculous.
Being told to, "Do it however you want to do it," and then later on being told to use something very specific that doesn't seem useful at all. Like being told to go build a new application and then later on being told to use this new software package the company bought without telling me it was considering that kind of solution.
Poor communication skills. If you ask for something and I deliver exactly what is asked, why is this a bad thing? Is it that English is a language of such loose definitions for a term that other languages should be used for documentation or what.
Having so much bureaucracy to do something that it is demotivating. If I want to change something and I have to talk to 8 people to get 6 signatures to do the change, am I really going to do that each time? I don't think so.
Coming into a project late to find masses of unmaintainable code which makes even the simplest task take forever... Code that makes you want to start the whole thing from scratch but you can't because the next deadline is in 5 days. So you just get on with chasing bugs through layers of endless insanity, knowing that the further the project goes, the worse it will get, until finally somebody realises that the whole thing does need to be done from scratch, but by that time you have lost all appreciation for life and your cold soul is forever tainted with a deep hate
I'd be the happiest person in the world if somebody fixed #1
Here they are in the order I hate the most:
- Security
- Networking
- Hardware
- Working with software without the code.
- Working with other people's code.
- Lack of understanding that a new feature: A) adds more time to creating all the other features B) makes it harder to maintain other features C) increases the likelyhood of errors/bugs D) pisses me off that I am unable to make you understand this which if I did would make me a candidate for sales or law school.
- The CEO has a better computer than everybody, just because he's the CEO and wants the best for himself. Everybody else gets his hand-me-downs.
- Spending six months building an app to the customer's specifications, only to be told that nothing works the way it is supposed to. Essentially you're forced to start over from scratch.
- Spending the next two years maintaining said app, because they keep coming up with ideas for new features.
- Having to drop everything because the CEO had an idea and stupidly promised it to a customer over the phone; it needs to be done within a few days.
- Being expected to answer the phone, or sitting in the same room with someone else who is expected to answer the phone.
- No free snacks or drinks.
- Noisy chair with poor back support.
- Wasting two hours in an all-staff meeting where everybody criticizes your app for not filling enough of their horizontal screen space. Nevermind that some users are running at small screen sizes or using mobile devices.
- Having to put up with annoying coworkers who don't know how to treat other human beings with decency and respect. You don't have to be my friend, but I don't like being called an ass.
- Working in an office where everybody shouts instead of picking up the phone or getting up off their chair.
- Having to come up with time estimates when you know they won't be accurate anyway.
- Taking over a project that was started by an employee who left long before you arrived, nobody has touched it since, there's no documentation, and the code is the most hideous thing you've ever seen.
Having only worked in startups only so far, i can only comment on things akin to a small setup. The following are the things I felt difficult.
1) The customers aren't always aware of their needs and asks for features once we provide the product. 2) The management, esp the marketing people may have no know how of programming, thus they underestimate the work needed and quote very low price and estimated finishe time. Can become a burden to programmers. 3) The management may not agree to adopt a better tool or process. 4) The boss needs work done fast, talks a lot about educating yourself but seldom give space and time for learning. 5) Sometimes being forced to work on projects which will not help you as a programmer in no way. 6) Not being acknowledged for the long hours you spent at office and get scolded for being late after lunch. And many more.
But being said all this there are many good things which retain you back in this field.
Having to make changes to your software that you know are actually making it worse, just for political reasons or to add a few dollars to the bottom line in a really short-sighted manner.
Anything that makes it clear management doesn't care about what I'm working on. This includes anything that unnecessarily makes me less productive. People have already mentioned lousy computers and overly rigid procedures.
The management catch-22. Me: "This won't work, for these reasons." Manager: "Well, obviously it won't work if you don't want it to work." The immediate affect is anger, it only turns to misery when I realize I can't do anything about it.
Being disrupted at bad times because of an arbitrary building maintenance schedule.
Being imperfect.
- Customers : Not understanding what they want. Poor specifications. Changing specifications. Last minute small requests/projects that are not small at all.
- Supporting professional software that doesn't work well and makes your team look bad.
- Noisy coworkers while working.
- Feeling isolated while working.
- Poor hardware, poor software, and permissions issues, oh my.
- Excessive immaturity and drama in the workplace
I think the worst thing that may have your life to go throught the miserable way is not having time to spend with your family.
"We don't allow STL" (C++ standard template library) The reason? "It is not standard."
Maintaining a poorly written code base for a customer that doesn't understand software. The horror!
Working with code commented in Chinese and and trying to talk to the guy that did it ;)
Noisy open plan offices are offensive to programmers!
I think it's important to be with other co-programmers in an isolated room, but not in total indiviudual isolation as you are not able to bounce ideas and improve as a unit.
A small core of programmers can provide a rich combination of knowledge that can be shared and as a result improve and raise the standard of programming accross all those involved in the team.
Brutally intrusive virus scanning software that slows every disk access to a crawl.
The following sums it up for me:
Yes I can do that in 40 hours. No I can't do that in four, and no, five isn't good enough either.
2 weeks later. No it can't do that, you told me it was too expensive. No it can't do that either. No everyone does not want it like that. ...
- Standard desktop or laptop configurations. Why must a developer have a the same spec for his or her development box as the manager who fires up Excel and Outlook.
- Misuse of resources. I have always been a fan of dual monitors for developers and more often than not this is not the case. It burns me to no end when I see office managers, and standard support personnel that have such a setup and I am told there is no money. Ouch!
- Poor requirements.
- Clients that do not know how to express their needs.
- Inheriting a software application that was poorly developed.
- Using VS.NET 2003 and maintaining 1.1 applications when the cool kids are using 2.0, 3.0, or even 3.5
- Lack of software tools to efficiently perform the job.
....and pretty much what everyone else has said!
Having a test server with a 100 GB hard drive that serves as our test SQL Server, test App server, test FTP server, test network share emulator and in no way resembles our production environment. Yet they complain when we migrate code that fails in production.
Illogical decisions. Often times these precede an AssholeFoundException
.
Without a doubt, the number one worst thing for me is:
- Long build times
If you can't iterate quickly, you're not as productive as you could be.
Also: inherited VB6 apps that interact with a specific version - no longer available - of MS Office.
Title Proliferation! I am so sick of the 23 year old Senior Web Developer or Senior Developer who freaks out when their intellisense breaks.
At my last company we had more Senior Directors and Directors than regular employees. At another company I did not know I was a Vice President until it went bankrupt and I read it in the documents.
I am all for recognition of responsibility but some common sense please.
Getting performance-reviewed based on what you did wrong, rather than what you did right.
When you don't have liberty to design the code in the proper way just because the people who are higher in the food chain are too scared to change things. And you have to support and write crap code to cater for that horrible design.
Too much restrictions on internet usage which includes restrictions on Facebook, Messengers, Youtube, Flickr etc.
Having SO cluttered with lifestyle questions, cartoons, jokes, and other things at best tangentially related to programming. But I guess people have to have somewhere to share their programming cartoons. Sigh.
- The need of doing research, in a short time, about advanced features in technologies/products that you don't know. example: someone was asked to find out if an architectural software can be implemented using Google Sketch Up and he didn't knew what Sketch Up is.
- Constantly changing requirements
- Sudden deadlines (first: "there is no need to hurry"; after 2 days: "we need this tonight")
- Coworkers that think that the first phase of a project is "write code (that might work)" and that "refactoring is bad because no new features arise"
- Managers (who only use Skype, Outlook and Visio) that have computers with 4 GB of RAM and developers (who need to run WinXp virtual machines) with 1 GB of RAM
- My OCD tendencies
- Getting distracted
- Procrastination
- Working on too many projects at once
In a word: ME
Having to buy my own laptop, second screen, decent mouse and keyboard because my employer "procedures" do not expect new employees to be provided with these tools.
They expected me to code using a Sun thin client with a 14 inches screen.
being known as a screen maker, working on company's crappy UI framework built on crappy asp.net webforms built on closed-source .net.
I'd say that arrogant developers/sysadmins/dba's etc... make life in work a little more miserable. There's a chapter in Practices of an Agile Developer that talks about this:
Point 3: Criticize Ideas Not People.
I'm not exactly sure why some senior developers believe it's ok to tell junior developers that they're stupid regarding their decisions/mistakes - maybe as a means to make themselves feel more superior and cover up their own weaknesses. Courtesy and politeness appear to be missing here : ) think before you make comments regarding a colleagues work, make it non-personal!!
Did I miss the person who said Sharepoint? It can't not have been mentioned.
Working on a case-sensitive database with tools that have 2000 or 2005 in their name.
Working with a bad team - All the technical and corporate issues put together pale in comparison to having a bad team around you.
Think about it, a crafty programmer finds artful ways of getting around all the technical and corporate bs, and gets stuff done somehow. But no programmer worth his salt believes he can exist in a vacuum, so there's really nothing you can do but be frustrated if you're forced to work with terribles.
- Microsoft Windows of course.. :)
- Inability to explain common people how much significant work you do.
- Security restrictions, i.e can't open this/that site.
- And last but not the least, lack of female colleagues.
There's only one correct answer to this:
the programmer himself
as Dinah already mentioned.
No one else has the power of making one's life miserable other than the person himself.
A circumstance in the world, such as having some problem in your profession, can of course contribute to you feeling miserable but in the end nothing has power over you unless you give it that.
Being asked to develop a software workaround for windows Vista and/or 7 and develop it on windows XP
Inability to explain to other people what kind of work you do.
It doesn't make my programmer's life miserable but it sometimes makes me sad. My father loved me very deeply and it frustrated him that he couldn't understand what kind of job I have. He wanted to understand it but he couldn't.
Asinine management that value capital expenditures at 100x the cost of salary rate. For example:
- Reject purchase of memory upgrades, that would increase build speed 200% or more.
- Reject purchase of commercial software in favor of inferior "free" versions, or nothing at all.
- Think that having Google is a replacement for purchasing any published material or paying to access subscription web sites.
- Expectation to spend 3 or 4 man-hours for documenting and processing time to justify and reimburse a $20 purchase.
- Killing team moral for week or longer by canceling team-building functions to save $200-$300.
Management has "employee dress-up" days when any customer on any project is in the office. 9/10 times the customer does not stay long enough to see more than 3% of the work staff.
Moving code to a new project in SVN and having people come up to you every week asking why you did something because your names on every line of the "Blame"
Anyone who starts a conversation with "So how hard would it be to..."
- Micromanagement
- Lack of a spec (a bulleted list isn't a spec)
- A manager that has never written a line of code (let alone even seen) in their life.
Godel's Incompleteness Theorem.
Hilbert's 10th Problem.
Chaitin's constant.
The Halting Problem.
Although one could also argue that they make a programmer's life fundamentally interesting as well.
Nazi DBAs who think the purpose of the application is to serve the database and not the other way around.
Idiotic Attitudes about Testing
Example 1: Development Schedules that assume testing should be put at the end, right after code complete, and go right up to the release date making no allowances for any bugs to be found.
Example 2: Assuming that testing is a rubber stamp instead of a QC process and then being upset about it when the testers find bugs.
Example 3: Assuming that hiring 2-3 testers will result in 100% bug free releases and then freaking out when a strange edge-case bug gets found in production.
Update your Tortoise to the last version because you read some interesting fix in the release notes. After that you spend days to undestand strange behaviour of your code. At the end you discover that the code commited with the updated Tortoise have some pieces of code commented on long line because the update introduce a new bug on carriage return characters.
Wordpad being the default text editor for half the code on a freshly installed windows machine.
An open plan layout in a warehouse-sized room with:
- a 40-foot ceiling
- 6 big screens displaying either boring static Word doc page or CNN/Fox News with no sound
- 4-foot high cube walls
- but the top 12 inches actually glass
- a call-support rep talking on the phone on the other side of the glass
- you can see the support-rep talking while facing your own monitor
- a 2nd-floor fish-bowl type meeting room extends into and overlooks the main floor
- fish-bowl has curtains which can be opened so the clients can be shown how hard the little ants (er, employees) are working
- nearest restaurant is 5 miles away (hello mr. microwave)
A manager / sponsor who thinks agile development simply means not writing documentation and then shows up once a fortnight to complain that things aren't going the way they want it and dumps a huge new set of 'verbal' requirements on you.
Bug reports that don't give enough information (e.g. It doesn't work!)
- Other programmers (and their code / ideas / conflicting interest).
- Schedules (and managers warped ideas about what we can do with the time we are given).
- Co-workers who think that diagramming in Visio is way more flexible that using a pan and paper.
1) A boss/manager that runs the company with children's sports team manager attitude!
2) Being made redundant, again and in the midst of a recession in a small city where IT jobs are like hens teeth.
3) A manager who tries to tell you how to program when they have never written a line of code in their lives... or are talking from their experience of COBOL or basic.
4) A micro-manager
5) The "Seagull Manager" - a scavenger who takes all the credit for your hard earned work and hangs around you like a bad smell.
6) A manager who never smiles, is always negative and treats you like an slave.
Outsourcing... You work on a project...build it from scratch and then they outsource it
Writing crystal reports against a third-party database with over 1000 tables. Actually, just reporting in general. CR amplifies the agony.
- Closed source
- Lack of documentation
- Reverse engineering archaic legacy progs
- Emacs addiction
- Missing school days
- Loneliness!
Other bad programmers that check in bad code or forget to check in new files that they reference in other files.
Blocked ports. I hate having to ask the sysad to open ports that I need for testing my apps (e.g. smtp port)
Sitting at work with other developers and not being utilized.
Having discussion with other developers and knowing that your opinion is not worth anything to them because their superior egos have already made a decision.
Knowing the answer to a problem but no one seems to listen. Its like the fed ex commercial where the staff is having a meeting and an employee give a great idea. The problem is the idea is not considered great unless the boss spits out the idea.
Non-programming tasks and favors from non-programmers:
- Can you help me fix this?
- Why can't I get my
<device, program, etc>
at home to work? - We need a quick little program to...
- etc
1 - Working in a non-English environment.
You have to deal with code comments, documentation, reports, diagrams, emails, notices, discussions, presentation slides, etc in alien language which you have to translate to know what the hell is going on.
2 - Being idle. While waiting for your supervisor to approve something before you continue, or take a decision which only he is authorized to take.
being at a job where you know more than most of your co-workers but technically still new to the field and desire to be mentored by someone who knows his sh*t
- People who don't understand development trying to manage a development team.
- External people who hold the dev team responsible for production deadlines whilst needlessly interfering in the dev team imposing massive constraints on how the work is to be done. ("We don't mind the pressure - but if you want it done let us decide how to do it...")
- Non-technical recruitment people trying to recruit without understanding the first thing about what they're trying to hire.
Like I'm sure others have said, loud working environment. I work in a cubicle and there are certain people right around me that are so disruptive that I have to wear headphones most of the time to drown them out.
I love it when the same people get angry because I do not hear them calling me over the cubicle walls or on the phone.
Surprised no one has mentioned these!
Not getting paid fair compensation for my work.
Getting a bid undercut by another developer who is less experienced, only to get that client later to fix all of their mistakes. Then to realize the whole project needs to be scrapped and rebuilt from scratch anyhow. (I feel for the client on this one.)
Having to constantly switch from PHP to HTML to javascript to CSS to SQL to Actionscript syntax formats.
Dealing with poorly organized files, code, images, CMS platforms, etc.. that contain over 5000 files, and are over 2GB+ that require zipping just to have a chance of FTPing in less than 24 hours. (which is why I hate many CMS platforms and 3rd party APIs)
Trying to de-thread/re-index/fix-poorly-designed databases with monsterous slow nested UNION and JOIN statements. (normally without associative arrays either.)
Having to upgrade my own code from an old language version to the newest just to get it to compile. (can we say missing or changed units without backward compatibility?)
Constantly getting asked if I can develop on a proprietary developers platform that I don't have the $500+ dollars to purchase. (um.. Adobe Flash and iPhone XCode? plus im not a Mac guy.)
Being forced to work on a Mac when I'm a windows guy. (no right click!!! ARRRRRGGGHHHH!!!)
Trying to deal with antiquated .CGI units with closed source and poor documentation. (and worse the hosting company that promotes them.)
Always having too many windows open and not being able to find the page I'm looking for without clicking on a few wrong ones. (there always seem to be 10 things I have going on.)
Having to re-install all of my developer tools on a new clean machine. (seriously. this can take up to two weeks.)
Stupid user communities, that have no inch of respect for other's opinions.
Which programmer?
"Life is a noun that requires a possessive epithet." V. Nabokov
Developers being at fault for incompetence of sales department
I know you have to be ready for a change, but changing OS platform in the middle of a C++ project, is not change, it is a new software all together.
People that think they can interrupt you every two seconds, because "all" you ever do is type on your computer
Managers. The way they ...
think about ict and organisations;
try to influence you;
put pressure on someone;
prevent people from co-operation.
The boss thinking I don't have a personal life and that I should only leave when he thinks I should leave.
Unfair assignment of blame...:
If you screw up meeting requirements, either because you're an imperfect human being, or the requirements weren't clear enough, you get your ass kicked.
When you meet the requirements, but management requested the wrong product, nothing happens.
Worked on too many hair brained products that some bigwig pulled the requirements out their ass for or there was no way of making money out of.
A long streak of technological blocks, lots of useless meetings, bugs that can take a weeks or months to be fixed, having to waste time on things like eating, sleeping, showering...
Organizations where non-technical have taken it upon themselves to make technical choices, e.g. you have to use closed-source product x. Why? Well because we spent money on it
And then you spend weeks in agony while you know things could have been so much better and easier, not only for yourself but also for every other stakeholder
Non-programming tasks that "default" to the programmer.
For example:
- Technical service to customers
- General technical service (my internet is down! No toner left!) for company and customers
- Sales (filling out request for proposal requirement grids, answers to prospective inquisitive clients, etc)
It's a good thing to be involved in different areas of the business. It's quite another thing to have so many responsibilities that actual development work is blotted out.
Well written, exact, conflicting requirements from multiple sources because the managers didn't understand the ramifications of said requirements.
Time-keeping/Time-tracking.
In particular, the applications that are meant to do the job. So non-user friendly. That's one scratch I'd like to itch... (once this current project is finished perhaps)
When working in embedded systems
- Not having enough hardware built to test on so it becomes a shared resource
- Not having the hardware tested enough to be reliable
Any project where change requests come in faster than implementations go out - and this behavior is encouraged. For extra points, allow individuals to enter new CRs while the team is blocked waiting for clarification on the CRs they entered last week.
Backlogs kill.
The people generating backlogs should be retasked to help clear the backlog, instead of just making it worse.
Treating the decision-making process as a democracy.
Take a showing of hands. If the people who have to support the solution don't have their hands up, or the people who've done it before don't, you have a problem. If neither group has their hands up, run away. Very fast.