'''Your boss is a WellspringOfNegativity''' Other managers like what you do, but yours doesn't. Yours doesn't like anything, ever. He or she is a WellspringOfNegativity. Your boss demotivates you and your team, costing the project time and causing emotional grief. ''This will probably me more hurtful when you used to be the golden boy who made the fantastic product and brought customers flocking from far and wide. Why the change? Pesky OfficePolitics, perhaps? That's an easy one to get very wrong, especially if you don't PlayTheGameFullTime.'' ''ProgrammingIsFun. Spiteful and divisive people are not fun.'' (Yeah, humanity, pffft . -- Cockroach7) ---- '''You're Surrounded by a Bunch of Geeks''' Your co-workers lack social skills. They are arrogant, rude, and insensitive. If you don't like their abusive personalities, you are accused of being thin-skinned or unable to handle brutal honesty. ''(IsYourRudenessNecessary?)'' : ''Actually, one of my problems is that I'm NOT surrounded by a bunch of geeks. None of us lack social skills, which is great, but most of my colleagues just _happened_ to be in the programming field and computer (better, the computer skills required to do that particular job, being it Microsoft technology or database stuff) is the only slightly geeky interest they have. So when I cite Star Wars and I'm looked like the strange one, I kind of wish for a TheBigBangTheory -like company'' Your co-workers all think of themselves as unappreciated geniuses, deserving of special treatment. A few years of lunchtime conversations about LordOfTheRings, StarTrek, and GoedelsIncompletenessTheorem dulls one's mind. ''Is this better than lunch with PHB's? I suppose variety may be of some help.'' There aren't many (any?) women around. [Actually I am a woman and my problem is that I am treated differently in the company of my 'all man' bosses. They look at me as I am incapable and fragile." -- E.A.] ''Agreed. Wiki (and ExtremeProgramming) gives me a smidgen of hope, though. -- fh'' My solution to this one is to be friends with lawyers instead of other programmers. It's a similar discipline, so I can relate to them, but it's got far more mental stability. And fewer Kantians and Socialists. -- DanielKnapp ---- '''You Never Feel Like You Accomplish Anything''' It's common for systems to be thrown away and replaced with something else. Spending several years of your life developing a system, just to see it declared ''obsolete'' and backed up to tape and locked in a vault, doesn't make one happy. (More often than not, projects are cancelled before ever going in production. That's even worse) There's always a bug you haven't fixed or a feature you haven't added. Like works of art, software is never ''finished'': it is ''abandoned'' when money, time, or interest runs out. You never feel a sense of accomplishment; the closest thing is the thought "Well, I'm glad I don't have to work on ''that'' any more ." ''Perhaps this is just a matter of attitude? I think if you compare the work to some idealized perfect software, then, yes, it's bound to disappoint. But I've actually been able to get quite a bit of personal satisfaction out of incomplete software, by knowing that it delivers some value to someone, even if it doesn't solve all their data-structuring problems and walk the dog. -- fh'' ''Software is finished when you throw it away. -- LorenzBeyeler'' ---- Maybe this is just a not-so-special case of WorkIsNotFun. ''True, but knowing the particular annoyances of programmers might help those who want to figure out how to attract and retain the good ones.'' Another way to look at it is that ProgrammingIsFun, and I'll do it for free. What they have to pay me for is * showing up in the office during particular periods of the day, * finishing the boring, uninteresting parts of the software, * using operating systems, programming languages, and tools that I don't like, * working with people I don't like, * writing documentation, * filling out timesheets and other paperwork, * making estimates, * performance evaluations (both as victim and as executioner), * accepting responsibility for other people's mistakes, * watching other people mess up my work, or throw it away, * sitting through boring meetings, * giving presentations to managers, marketers, customers, and users, ** Most geeks suck at that such that a "business analyst" does it instead (outside of trouble-shooting). Perhaps you don't suck at it enough. * traveling, * (etc.) I'd work for less money, and be less likely to quit, if these aspects of the job were minimized. ''Maybe that's why managers get paid more and move around more!'' ---- Something is being hinted at all through this page. Most programs, most programmers, and most companies may not be much fun, but ''some'' programmers are spending their lives working on really exciting programs and learning lots of new things in fun environments. ''That's'' what it's all about! As everyone remembers from some time in their life, programming is ''fantastic fun'' when you're working on something really cool, so instead of thinking ''crazy'' thoughts like ItsJustaJob, think about getting to where there's action and having a blast! ---- One thing I find that makes it more enjoyable again is long bouts of unemployment :-) Also try putting a photo of India on your desk or wall: http://lib.store.yahoo.net/lib/demotivators/discoverydemotivationalposter.jpg ---- Man, where are you guys when I'm at work? It seems all the fellow programmers I've come across at work are complete social rejects and love sitting in the cube all day staring at the monitor or connecting dots in a visio design. Half of the programmers in my office must be autistic. ''Or perhaps AspergersSyndrome? Well, if you need the opposite as an antidote, visit the sales team. These two sides give each other the shivers, and both sides give those in-between the shivers.'' ---- '''Fun is not an attribute of programming''' Programming is neither inherently fun or not fun; the choice is largely up to the individual to decide whether he is having fun or not. While it is true that some bosses or entire management levels can make an oppressive environment, that is not peculiar to programming (and I am sure the non-programmers in those environments are just as miserable as the programmers). Professional programming, like any other profession, has its good points and bad points, but it is up to the individual to enjoy the good and filter out the bad. ''If you do anything for forty-plus hours a week, it will lose a lot of its enjoyment. The trick is to find a little diversity without busting your career.'' ---- '''Programming Is Not Fun without Philosophy''' Programming has no philosophical underpinnings to it to make it fun, nor a path of exploration that leads to an appreciation of the art behind computer programming. Programming has no philosophy because we have not thought of it as philosophy, yet it is. It is art as surely as a picture. As surely music as the best the Boston Symphony can play. Surely more art than science. So why does every art in the world have many philosophies yet our craft does not. That is why I enjoy computer programming more than anything I have encountered in this life. Not because of the boring "move, modify, store, repeat" routine of the daily work, but in studying how I write code and from the knowledge and insight I get into the code, I also get into myself. Science without art is surely pure, but purely boring. Art without philosophy would mean no artist would ever paint the same way twice. Cubist vs. Modern for instance. Surely two different philosophical approaches to art. But the artist bring far more of themselves to their art from their philosophy of life then from any paint or brush. I do not mean the study of design patterns. They are useful, but are merely layers of abstraction to an already abstract world. I mean the study of how and why we do what we do. How it impacts us, how it impacts the people our programs touch. Why we are so much like the artist in some ways and like the scientist in others, and still more like children. I know this because from almost the first moment I started programming, I knew I was on a path. And when I figured out where that path went, I realized that I had a purpose. And that purpose could be studied. The way I moved data, wrote code, displayed information, collected responses, and determined the logic behind a given process went far beyond the lines of text I was writing. It was the way I approached code that defined the ways I would approach them in the future. And the ways I wrote code could be cataloged, recorded, and played back the same way a player piano does, but thousands of times faster. But I digress... Programming is not fun because programmers do not think enough about what can make programming fun. By studying themselves and their peers they can begin to piece together the bigger picture of their skill, their art, their life, and where it is all going. And when we all learn that ProgrammingIsPhilosophy and PhilosophyIsLife, our lives will all become fuller, our characters stronger, our wills undeniable, and we can finally bring to the world, the kind of programs that the not only ask for or want, but the ones they need to find the answers in their own lives. Programs that are free from our own limitations of thought. Programs that exercise the freedom to make their own decisions, aren't wiped of their memory like the elderly are by disease, and interact with each other in ways that are not limited to our own imaginations. The act of programming is not fun. However, neither is the act of swinging sticks, throwing small round white balls, or being forced down into the dirt skinning the back of your legs... Yet many people love to play baseball. I have developed several philosophies on computer programming and am willing to discuss them with anyone. I do not mean to imply my philosophies are the only philosophy. Only that it has raised me above and beyond my peers so far that I sometimes feel I can do anything because they believe I can do anything. Unfortunately, they also believe that if I can do anything then I must be able to do a lot of things all at once, which I can. However, also included is the ability to perform many things for many groups with many different technologies within all time tables without any assistance or backup. So I guess I would have to agree with a change that ProgrammingIsNotFunInExtremeQuantity . Maybe you don't think programming is fun and haven't considered that it is not the programming but perhaps the programmer (where fun begins) and the way the programmer approaches programming that is not fun. In fact, I would amend this entry to read ProgrammingIsNotFunWithoutPhilosophy . Just as life is no fun whatsoever unless you approach it in a way that is fun and that is right for you. To the programmer or person who says ProgrammingIsNotFun, I would suggest this: '''When life gives you database code to write, figure out how to generate it. It's is a ton of fun to figure out when you see a pattern in the code you're writing, and then how to express that pattern to the computer once, and then remembering when to teach the computer to do it many times so you can go home sooner having created more and more accurate code in less time with a fraction of the effort. The philosophy on SimplePatternReplication as development by me. SimplePatternReplication was first implemented in my open source free code generator Slice and Dice. It's unfortunately still in VB6. However, after living through things that have happened recently and reading this page as well as hopefully expanding on it's cause, I realize now that I let the fun go out of Slice and Dice. That must be why I had stopped making it better. I think I'll go play with it and see if I can teach it the things I've learned. I've always wondered if I could teach it how to upgrade itself into another language like C#. And if you still think ProgrammingIsNotFun remember that ProgrammingIsWhatYouMakeOfIt. And the best programmers are also the ones who make it fun. -- William Miller Rawls, wrawls@firmsolutions.com, www.sliceanddice.com ---- What careers or tasks are we '''comparing''' this to? Does anybody want to propose a career not subject to similar forces? Almost anything you do for 8+ hours a day for 5 or more years will probably grow somewhat monotonous. Management is sometimes given as an example, but some have complained about getting tired of dealing with personal problems of subordinates, back-stabbing office politics, paper-work, long meetings, and long hours. It may be nice to be able to rotate to different careers after 7 years or so, but the way HR works discourages this. They want somebody who has already been doing the exact target job for at least 5 years. HR's decision process is not the fault of programming. Unless you strike out on your own (which everybody should try once in their life), you will face the HR wall when you try to switch specialties to attempt a rotation plan. ---- '''Work in Programming Only If You're Hardcore''' I would argue that part of the issue is that there are a lot of people who are not going into programming because they absolutely love it, but rather because it's something they're good at, or that they enjoy doing occasionally. But really, programming tends to be like the military or the priesthood (I'll avoid the bad jokes about similarities in celibacy and arcane rituals) in that it's very hard to work in casually. You pretty much have to eat, breathe, and live coding or it will eat you up and spit you out. I can't really articulate what makes this field so different other than that technology is constantly changing, you generally need to store entire modules if not entire programs in your head while you're working on something, and that the myth of the AntisocialProgrammer has some truth to it. I've just seen a large number of people burn out who went into CS jobs because they enjoyed casually programming or had a knack for it, then found that they couldn't stand doing it for a living. ''I used to love programming until it became my job. I would get up at four in the morning to write code before school, then secretly try to program while at school so it wouldn't be a complete waste of time, and then head home to code some more. Then I got a job and within a year I burned out completely. Because I didn't want to keep my job anyway, I started bargaining for the weirdest things. I also managed to go from fourty hours a week to twenty. But this was too little and too late, so after about half a year of dragging it on I quit anyway. Then I lived in a car on the road for about half a year (for fun, and to make my savings last a bit longer). Now I'm programming in my spare time again, something I hadn't done for two years. I certainly hate my new job (fourty hours of programming again), but not as much as the old one, and as long as I can distract myself by being "busy", I won't think too much about how much everything sucks. Just to illustrate that you can be hardcore and eat, breathe and live coding and still burn out.'' ---- For me the difference is databases. The programs I have to write at work, which I don't like to work on, invariably use databases. The programs that I like to write at home don't use databases. Things like games, text editors, compilers, and digital signal processors don't use databases. I would prefer to work on those. But employers tend to have large databases and they tend to demand that programmers write CRUD screens for those databases. I do not mean to suggest that employers shouldn't use databases. Certain problems are best solved with databases, and I prefer that databases be used when appropriate. What I'm saying is that I would prefer to work on other kinds of problems... but no such work seems (or has ever seemed) to be available... ''Mobile apps are big right now (Nov. 2010). They are too small to fit a RDBMS on, so you are in luck.'' Mobile apps still tend to be CrudScreen''''''s for databases more often than not, especially because smartphones have nearly ubiquitous network connectivity. Actually, SQLite is often used for mobile application development, but it doesn't matter where the data is stored, as long as the interface to it is required, CRUD screens won't be disappearing. ''PresentationIsDifficult, and that's possibly why that's where most of the work is.'' ---- Forget programming for the Industrial Economy. Program for the CreativeEconomy and make a new world. --MarkJanssen ---- See: ChoosingSatisfactionOverMoney, ProgrammingProfession, AlternativeJobsForProgrammers ---- CategoryRant