Things That Scare the Bejeezus Out of Programmers
itwbennett writes "Software developers are, by and large, a cool and analytical bunch, but there are a handful of things that strike terror in their hearts. Phil Johnson scoured developer forums looking for an answer to the question: What's your biggest fear as a programmer? The answers clustered into 5 broad groups ranging from being forced to learn or use a specific technology to working for and with incompetents. What's your biggest fear?"
getting raped at your work seat
Because I'd rather work at McDonalds for $8/hr instead of $2/hr as a programmer, but then again I'd probably just go live in solitude in the mountains somewhere, away from technology should she betray me in such a way.
And all the corporate client data gone ...
also, Spiders and Bees
There's nothing in that list (with the possible exception of "being forced to use a specific technology") that wouldn't apply to just about any worker.
There are many things to be afraid of. I think my biggest fear is being irrelevant, something I feel greatly sometimes as the young hotshots come up from below and as more gray hairs appear. And because of my ADHD and dyslexia, I fear not being able to use my intelligence when I need to use it because my brain refuses to work.
But there are more terrible things to fear. The wrath of my evil cat when I step on her tail and what she leaves in the kitty litter that I have to clean up are two such horrible prospects. And when I was married, my wife was quite scary at times.
But really, when one looks at the big picture, the only thing to fear is fear itself (as FDR said). Accepting life on life's terms and not wasting time on trying to change things that can't be changed is what's important to me.
It's really quite a simple choice: Life, Death, or Los Angeles.
They're impossible to code for, or cope with.
"Enter date"
>cat
"This value is invalid"
"Hey your software is broken! It doesn't stop me typing "cat" in a date field!"
What did it say?
"value is invalid"
There you go then!
"But it didn't stop me typing it!"
Because it assumes you are not a moron? You're right, it is "broken"...
ITIL
Waking up, and finding myself stereo-typed into one job, one branch, or another. I like the idea of mastering each branch fully, but find that there's never enough time to do everything I'd like to do, or learn everything I'd like to learn. And of course, your job becomes your life...I don't know why, but I had ideas, when younger, of changing that equation, of making jobs more efficient, so more time could be spent elsewhere (leisure, edification, etc.)...and yet, I seem to be spending all my time repairing damaged items or chasing dead-ends, rather than pursuing these agendas. It's like my equation has been turned on its head...and I don't know by whom, or why. Computers are supposed to be freeing man from his burdens, and in doing so, helping advance themselves; instead, they seem to be acting as balls and chains...or worse, in the case of the NSA, where they are being used to spy on people.
Even the work I am doing on my autodidactic program (human learning) or evolutionary program (machine learning) feels like I am chiseling away at a granite mountain with a wooden spoon. Why is this kind of programming so difficult, yet the algorithms to spy on one another seem to flow from the heavens themselves?
I am John Hurt.
Being given a big pile of code and being asked to maintain it with no test suite.
Each time you change it you could theoretically be breaking a ton of features. But there's no way to be sure.
Snakes,
Loud noises,
Social contact,
Drinks machine being out of soft drinks and/or chocolate,
Google being down,
Calling someone a "hater" only means you can not rationally rebut their argument.
(obviously)
Changing requirements mid project. Actually that wouldn't be so bad if the managers wouldn't imply that you are somehow failing if you say that will extend the delivery date.
- daylight ....
- any noise other than that produced by earphones
- women
- building power failures
- enforced OS change
-
I think we need a Slashdot Poll for this one!
Awww precious, did you get modded down spouting your favorite misconception again? That's so unfair.
... whatever
Debugging multi-threaded code liberally sprinkled with delays instead of locks. I still have nightmares!
To not make the difference in the world in the way that I envisioned. It's everything at once and nothing specific. My betterment of the world doesn't even have to be in programming, although programming is where my best talents are. I've always wanted to leave the world a better place than when I came into it. Unfortunately, I can't say that I feel that way so my biggest fear is coming true and I'm having to learn to cope with the idea that I cannot fix the injustices of the world.
In the project I'm maintaining now, I've discovered such gems as "someVar++ // count down" and "if(someDouble == 0 || someDouble == 0.0 || someDouble == 0.00) { ... }". Oh, and literally hundreds of global variables whose values are copied in and out of instance and local variables in seemingly random places. I'm sure the guy who wrote it was one of those students who comes to the Java forums begging for help because they didn't pay attention all semester and have absolutely no idea where to begin on their final project, which is invariably due in a few hours. I don't even want to know how much they paid him to write it, but it's cost the company at least 1.5 man-years just to get it into a state that's acceptable to most of our customers, and it's still nowhere near as good as if we'd spent (I would estimate) 0.5 man-years rewriting the whole thing from scratch.
Velociraptors - That's why I never use a "GOTO" ...
It must have been something you assimilated. . . .
Being stuck at a job, because you drifted away from your main skills, and now have difficulty to catch up. Or more specific: being stuck at a job where you don't want to spend another year or even longer. In the company I'm working I stand alone, being the only programmer, so no support from other programmers. I find it hell to get my skills up to date while doing my job properly.
Average programmers being forced to write parallel code scares me more than anything else. "The multicore dilemma is actually a substantially worse problem than generally understood: we are headed not just for an era of proportionately slower software, but significantly buggier software, as the human inability to write good parallel code is combined with the widespread need to use available CPU resources and the substantial increase in the number of scientists with no CS background having to write code to get their job done." --The multicore dilemma (in the big data era) is worse than you think
They just can't leave the damn language alone.
Enough! Its already got a spec probably more complicated that the space shuttle , just let us get on with using it instead of throwing in ever more useless features that only ever seem to get used in job interview questions!
This happened to me. There's just no joy or pride left in my work. I'm in a slow useless never ending zombie mode. Struggling doing something as simple as opening up a code editor. Been looking to change my job for the last year, but I can't find anything of interest. I'm sick of programming, but it's the only thing I'm good at (or used to be good at). Retraining at age 40 to change my career? I think I'd rather just drink myself to death.
Seriously, web programming is for chumps, and it just keeps getting worse and worse.
Let's talk about having to support multiple version of multiple browser on multiple versions of multiple operating systems on multiple platforms, all with multiple sized screens.
Let's talk about the expectation of being an expert at a horrendous number of technologies like HTML, CSS, Javascript, Ajax, GWT, Java, JSP, EJB, XML, JSF, Facelets, JPA, JPQL, EL, SQL, PL/SQL, Regex, BASH etc. etc....for the one fucking project!
Let's talk about the expectation of being an expert at optimising different servers like Apache, Tomcat and JBoss.
Let's talk about the expectation of being an expert at load testing using various load testing suits.
Let's talk about the dismal state of Flash and Java Applets and HTML5.
I pity the poor web programmer (such as myself), for his or hers is surely a tortured life.
Whenever I hear a congresscritter make noise about restricting research, or instituting programming certifications to get a job, or my (now ex-)company requiring a training session on how to walk because someone tripped in the hall, I get scared for the country as a whole because we've cultivated this environment.
That, and the aformentioned velociraptors.
Worse is the suits picking up your Pooperpoint, changing it, and selling something which bears almost no resemblance to your original project and should be DOA but now you become the lead for this new and improved version.
Nothing more fearful then the worry of having grues attack you as you go into a dark server room.
their #1 fear isn't the rocket blowing up and getting killed, it's not fear of blacking out from G-forces, it's not fear of getting shot down, it's the fear of screwing up.
Same as the #1 fear from TFA. (fear of writing buggy code / messing up)
The official Pilot's Prayer (as handed to us by Alan Shepard) is "Lord, please don't let me fuck up".
Not "Lord, please don't let me blow up" or "Please keep me safe"
True story, at some point in the past I had to work on a company's internal application for data entry. Well, it was a lot of data and, as requested by the PHBs, pretty much half the fields were needlessly mandatory. (Which brings us of the fear of working for incompetent people;))
Most of them were pretty much impossible to validate too, because they were stuff like city or street names, and even in telephone numbers people tend to use letters. So the only real restrictions were field lengths and that they're mandatory.
So then comes the request to basically make reports and searches on that data.
And I kid you not, half the records had stuff like "n.a.", "I don't know", "no idea", etc in at least one of those fields.
And these were internal users, not some 6 year old over the internet.
A polar bear is a cartesian bear after a coordinate transform.
Running an SQL update statement without a where clause and seeing '47,982 rows updated'.......bonechilling
I really hate working with lazy stupid programmers who were hired only to fill out an HR racial preference checklist. Nothing is more demoralizing than working with a shiftless, smelly, untalented "winner" of the racial preference lottery.
Y'know, of all the jobs I see filled with useless people, I honestly have never seen that effect in programming.
I've met plenty of coders who the rest of us would all do better if they surfed for porn all day; I've met coders who, once they corner you somewhere will talk your ear off until you feel the need to stick a pencil through your (or their) skull; I've met plenty of coders who have no concept of 9-to-5 (and I can't claim I do so well at that one myself).
But overall, I've always seen programming as one of those fields that requires just too much rigor and discipline to even appeal to the "real" slackers. Love it or hate it, rock at it or suck at it, programming is hard.
You know, when accents on characters show up weird in the browser and you dig deeper and deeper to discover UTF-8 characters in the Latin-1 encoded database, but aren't sure your database client is showing the data in correct encoding and the dump you openend in the editor looks even weirder because it's trying to read the stuff in UTF-16 which the terminal the editor is running in doesn't support etc etc etc.
Really very frustrating to debug character encoding issues.
---
"The chances of a demonic possession spreading are remote -- relax."
C is a fairly simple language to code in and debug. If you have problems with pointers - ie memory addressing - then seriously , find another vocation or stick to HTML because programming computers is not for you.
450 variables. And I've got to fly halfway around the world to fix it (among other things) in 5 days.
As a programmer, my biggest fear is not getting to actually solve problems because an incompetent co-worker knows enough to leverage my intolerance for stuff not being cleaned up (and willingness to do something about it) against me.
There is nothing to fear but fear itself.
What does that mean. We as a culture have gotten very fearful within the past Decade. The fact that we are afraid of so much stuff has created more problems to be fearful of.
Polarized Government: With people so fearful about a lot of things they will try to pinpoint the government as the major contributor. If you are right of center than Big Government is out to make your lives worse. If your are left of center then it is those Corporations that are out to make your lives worse. Those people who support your opposing side must be corrupted in some way. So they need to be stopped!
Obesity: Lets not leave the confines of our own homes because there are dangerous people around the corner who wants to kill, abduct or mug us. So you stay inside where it is "Safe" after a while you start getting out of shape, then you don't want to go out even more because you are out of shape and are afraid of being insulted by people who don't like the way you work. You would go to the Gym, but only after you lose 20lbs first (so you are not the Fat Guy at the Gym), but losing those 20lbs is hard because you are not going to the gym.
Economy: We need small businesses who can innovate (and much more than silly mobile apps). However people are afraid to start businesses because there is a chance that they will fail. Or get some lawsuit for stepping on some bogus patent or make a product that someone misused and hurt themselves. Combined with the fear trying to meet current regulations that you don't know about. Also fear of looking for an other better job because of uncertainty on how well other companies will last combined with companies fears about the same thing preventing them from hiring.
If something is so important that you feel the need to post it on the internet... It probably isn't that important.
Remember when the Hubble telescope first went up, and could not focus? It had all been tested on the ground on an artificial star target. Unfortunately, the test rig had a plate that was about half-an-inch thick that should have been subtracted from the optical path. So they had a mirror that was accurate to about 1/100th of a wave but half an inch in the wrong place.
There was a rocket where the guidance for the two stages had been coded separately. One stage used a value of -9.8 m/s2 for 'g' because it measured heights upwards and the acceleration was downwards, while the other used a value of +9.8 m/s2 and flipped the sign in the equations. When the rocket took off, the first stage was fine but the second stage suddenly flipped over.
That's what I dread: thinking I have checked everything, and thought of everything, and then finding out publicly and expensively that my regression tests were worthless all along.
The biggest fear is that a group of people who are clueless about what actual customers want and never talk to anyone outside their small circle believe that they know more about what customers want than people that actually talk to customers.
Not a fear at all. First off, I'm paid 3-4x the help desk guys, they aren't going to waste me like that. Secondly, I know the magic words "no" and "constructive dismissal". Or just "I quit".
I still have more fans than freaks. WTF is wrong with you people?
There's nothing in that list (with the possible exception of "being forced to use a specific technology") that wouldn't apply to just about any worker.
Programmers fear incompetence because they see it everywhere, even where it is not. They just don't recognize the value of thinking that isn't exactly like their own, or skills they don't have. So, this one applies to many, but to programmers more than anyone.
Programmers fear screwing up because they are in the business of automation. They can screw up many things all at once. Complete failure over a trivial error, because computers don't have common sense to ask, "are you sure you meant to do that?", or, "what does this mean?". This one also applies to anyone building something that can injure people, but not to most other people. Most people can only screw up one thing at a time, or have people receiving the product of their work, who can sanity check it.
The office "power user" who convinces management that he should be able to manage his department's IT infrastructure by himself because "he's more efficient than those guys in tech support".
The highly connected programming manager who recommended a new applications platform because "it'll look good on my resume".
The large systems salesman who plays golf with the chairman of the board.
If you use shared memory there is no practical difference between multi-process and multi-thread. You have all the same disadvantages. It's just now you (apparently) have the illusion that you don't. This is not a recipe for success.
Contention on shared resources is contention on shared resources, no matter what OS subsystem you use to create parallelism. But now you're using heavyweight IPC mechanisms to solve contention instead of lightweight intra-process mechanisms. Yay for a kernel transition and possible context switch on every lock call.
If you'd said "assuming you do not use shared memory" - e.g. you communicate over pipes or sockets - then your statement would make more logical sense - isolated agents are a proven and robust technique in parallel programming. Except in that case fork() is exactly the wrong model.
Incompetence is my biggest fear, both in others and especially in myself.
Working at a place where I don't have admin rights on my development machine.
I fear the one programmer who write thousands and thousands of lines of spaghetti code that can be done in hundreds of lines if written correctly. Especially if his program "works" well enough in a demo for some idiot middle management guy to think we should make it into a product to sell.....by next week.
Yeah, that happens here.
Office politics. Just lovely when the management fucks up through sheer stupidity, but still has the cunning to find some way to blame you for it and make it stick.
I'll whip out a car analogy. The bosses direct the driver down the wrong road. The driver questions this, but is told to shut up and drive, he doesn't know what he's talking about. 100 miles later, they realize they're not on the right road, and the screaming starts. They blame the driver for taking the wrong road, and fire him. They hire a map reader. They turn to the mechanic and demand he get 200 mph out of the engine, no excuses will be accepted and if he can't do it, he will be fired and they'll get someone who can. Never mind that the car is a cheap econobox that can't even do 100 mph. The mechanic manages a miracle and coaxes 120 mph out of the engine, and is promptly fired because that's not good enough. Over the protests of the map reader, they elect to take a desperate shortcut on a dirt road, to try to get back on track, and end up stuck in the mud. They fire the map reader, but are still stuck in the mud. With no one left to get them out, and no one left to blame, they finally lose their grip. Customers and supporters abandon them.
Intellectual Property is a monopolistic, selfish, and defective concept. It is "tyranny over the mind of man"
Half the problems with threads are due to unintended consequences of sharing run paths and globals/statics in the program and in libraries. If a process can only communicate with another process via specific memory addresses and it doesn't shared ANY other data or run path then the unintended consequences will be much reduced.
"e.g. you communicate over pipes or sockets - then your statement would make more logical sense"
Yes , but they're stream based , they don't really emulate thread intercommunication and are generally only useful for fairly disconnected processes , not ones that need very tight integration.
The stablest C code I've ever worked on used GOTO for error correction. It was WAY stabler than the C++ code that replaced it using try-catch blocks.
My biggest fear for a long time was templates. The reason I feared them is because I used them to re-write a C graphics engine I got a source copy of into C++. I used a lot of novel approaches that should have sped up the whole thing, including a blitter (that should date me...) that was 4x faster because I used the floating point unit's much wider data path for block memory moves than the C code did, and wrote it in assembly (in fact, that exact same technique was published in a book called The Black Art of Game Design, albeit with slower code than mine, partially because it was not in assembly). When I got it done and compiled it, I was dismayed because my code was slightly slower, and after a few more optimizations, about the same speed. Baffled by this, I profiled the code, and the entire slowdown was template calls at the lowest level that triggered a lookup table that was abysmally slow (templates were REALLY bad in the compiler I was using, which I think was Borland). Unfortunately, it broke the entire codebase and I essentially had to throw away the entire engine and redo it from scratch. On the plus side, the rewritten engine was not based on the existing one and landed me a job writing games, albeit briefly (working 16-18/7 for months during crunch, sleeping at work, etc - very rapid burnout).
It sure changes after you're married. Along the lines of s/enough/way too many/
Confucius say, "Find worm in apple - bad. Find half a worm - worse."