Shape my future, please.
July 27, 2005 10:15 AM   Subscribe

Are programmers fun? In the long run, is programming fun?

I'm asking this because I'm at a point in life where I've got to choose a line of study; and essentially choose what I'm going to be when I grow up. I already am doing some programming, on a hobby basis, just because I enjoy it, so studying something that to some degree is associated with making programs seems like a good idea.

Is that a good idea? If you have or used to have a job where most of time was used on programming, I'd like to hear your experiences.

Is it fun? Did it make you rich? Poor but happy, maybe? Rich but frustrated?

And on an entirely serious note: Will spending a large amount of time on programming make me loose my social skills? I've heard people say things like "try having a human conversation after talking in perl for 5 hours", and it makes me fear becoming the stereotype socially inept programming-geek I have pictured in my head. Given that I'm not like that already, will I become like that? What about my class mates? Is it likely that a disproportionate amount of them will in fact be socially inept, weird and smelly?

Are you self-thought, or professionally trained? How valuable is getting education compared to learning things on your own?

How attractive do you see programmers being on the work market, 5-10 years from now?

I know that was a lot of questions, but I will appreciate any answer to any of them. Thanks!
posted by cheerleaders_to_your_funeral to Education (39 answers total)
 
I don't program professionally, but I do write code part time (3 or 4 hours a day) at the university here. It was a major shift from hobby programming. It all depends what you're doing, but not being able to control what you're working on is a major, major disadvantage.

If you're looking to get rich, programming for a 9-5 job isn't for you. Maybe software *development*, project management, etc is a better path?

Also, many of the best programmers I know (that work for Google, Microsoft (cut the jokes), Amazon, etc) don't have degrees. The best programmers are good because they have a mathematical mind that they can bend a bit to solve problems, and have practiced to get where they are. I don't think a degree is necessary at all.

Can't help with the rest, as I don't professionally program, and haven't gone to school for it.
posted by devilsbrigade at 10:23 AM on July 27, 2005


I did a lot of programming for fun in high school, so I decided to major in comp sci. After a couple months of that, I realized that I really only enjoyed the aspect of programming that let me create stuff for personal use. I understood that putting in time doing "boring" programming would allow me to be better at doing the kind of programming I liked, but it wasn't worth it to me.

I ended up becoming a liberal arts major, but I still do some light programming in my free time. Based on my experience, I'd suggest you give it a try as a career option, but make sure you're still enjoying it.
posted by Espy Gillespie at 10:35 AM on July 27, 2005


You want to compete with programmers in India?

Unless you ultimately desire to start your own company, you might want to focus on a career less likely to be affected by outsourcing.

As to your first question re: programmers - most programmers I know are interesting, if not a bit quirky, people.
posted by caddis at 10:38 AM on July 27, 2005


My opinions on these in order... First, I program professionally, and I have a masters degree. I would say that my undergrad education could mostly have been self taught, but the graduate school work was much more helpful and academically challenging.

As to enjoyment: if it is fun for you it's fun. I know that's kind of a tautology, but if you find yourself enjoying that sort of thing you will probably enjoy programming for a living. If your brain doesn't work that way, you won't.

Spending a large amount of time programming shouldn't change your personality. The comment about perl is much the same as a teacher saying "Try and talk to adults after spending time with 1st graders all day" - it doesn't change who you are, especially if you have substantial interests outside of work.

The work market is tricky. Outsourcing / consultants are risky - you definetly want to find yourself a niche where domain knowledge (business knowledge) is important, it makes you much more valuable, and allows you to move around in the industry if you tire of programming. I work in the financial industry, which is excellent for that.

I wouldn't start in project management. You'll likely be pushed in that direction if you're any good at software development, and you might enjoy it.

To sum up: If you enjoy the work, are good at it, and can find a challenging job in a good industry it can be a fine career choice. Otherwise, proceed with caution.
posted by true at 10:42 AM on July 27, 2005


Most programming jobs are corporate. Most corporate programming is boring and not fun.
posted by smackfu at 10:43 AM on July 27, 2005


Are programer's fun?
I'm a programmer, I'm fun.

How'd that work out for you?
I did my CS degree in the zany early ninties, when overbearing moms were pusing their sons in to becomming computer programmers rather than doctors or lawyers. Today, most of them hate their jobs. For me though, programming is a vocation. It has provided me with gainful employment and I can't really imagine myself holding down a "real-job" in any other field.

Will programming turn me in to a nerd?
If you're not already a nerd, maybe programming isn't for you. I'm using 'nerd' here to refer to someone who is capable of devoting a laser-like focus to one thing to the exclusion of all others. Be that anime, World War II German artillery, or programming. Programming well is really hard it is an art and a skill that requires a fair amount of natural talent and a lot of training. It's a commonly floated meme that many great programmers are borderline autistic. I don't know how true that is clinically, but there's a grain of emotional truth in there.

NOW, that said, most programmers are human beings who have interests outside of work and friends not in the field. It is the most extreme examples of insular nerdishness that are commented upon and parodied, as with anything.

Self taught or formal education?
Formal education gets you in the door. Getting in the door is really important. Furthermore, a critical skill for someone in a field that changes as fast as programming is the ability to learn. A big company might hire you because you have a lot of buzzwords on your resume. But unless you can pick up new technologies, languages, etc, you'll be pooched in 5 years.

Will I have a job in 10 years?
This is just my personal opinion, and there's probably more wishful thinking in here than there should be. In the short term, some programming work will move overseas. Software companies will discover that exporting your core skillset while keeping middle-management in country is probably not a successful stratdgey. Overseas programmers will start to wonder why they're working for for foriegn devils and start starting their own companies and will probably kick a lot of ass. There will be a market for offshore programming houses, but they will only be able to provide "assembly line" programming (since all the really talented programmers are in their own companies).

(this is the longest comment I've ever left on Meta)
posted by Capn at 10:50 AM on July 27, 2005


Wow, lots of harshing on the programmer life. I'm a professional programmer (er, "software engineer") and I like it. It's creative, challenging, interesting, and lucrative. If you are good at your work you're not going to suffer terribly from outsourcing.

The key thing, though, is to be a creative engineer, not a code monkey. Part of the skill required for my job is writing code, yes, but the much more valuable thing I do is figure out what code to write, what products to build, how to shape the technology, what system to build next. Those higher level skills are very valuable, I think I learned them mostly thanks to my liberal arts background. The coding started as more of a hobby, even if it's now my profession.
posted by Nelson at 10:55 AM on July 27, 2005


I'm a professional programmer as of the past year or so. Specifically, the much hated Consultant. I like it, I enjoy my job as it's essentially solving logic problems all day long. I will admit programming can get a bit boring, and I can see how if I were doing this for the next 10 years, the programs I write would get... repetitive, but for right now, I make pretty decent money, and I really enjoy what I do.

As to what sort of market to get into, go into consulting! I know most corporate people hate consultants, but really, it rocks. We constantly get new problems too work on (versus being stuck supporting the same app for 10 years), we get to meet new people all the time, the pay is usually good, and we get overtime! Also, when people talk about losing their jobs, they usually talk about losing them to outsourcing and consulting.

Losing your social skills? Nah, while there is a certain type of programmer that meets that stereotype, I think you'll find in the real world it's rarely like that (although there are a definite dearth of females in this business). Most of the guys I work with are outgoing, entertaining people who have active social lives.

In regards to training, I went to college and learned my skills there. I think that coming from a Computer Science background (versus a lot of DeVry/tech school graduates) gives me some definite advantages in knowing what the hell I'm doing. Otherwise so long as you have the skills, it doesn't matter quite as much what you do with them. Although if you're just starting school, I do recommend picking up a business degree to go with your programming degree. It will come in handy and give you way more opportunities for advancement in the long run.

Feel free to email me (in the profile) if you have any specific questions though.
posted by KirTakat at 11:06 AM on July 27, 2005


My name is ph00dz and I am a professional programmer. I'm completely self taught, but I have a bachelor's degree in Media Arts, so that's helped out a bit in terms of opening doors and understanding some of the larger issues associated with project design and whatnot.

Critical thinking skills count for a lot.

Once apon a time, I dreamed of doing other things. I purposely did not study computer science because I didn't want to be chained to a desk all day at work. Only later did I realize that just about every white collar job will make you live that way...

So, with that said, might as well make work as interesting as possible.

While your mileage might vary, overall programming has been really good. The money is fantastic if you can put together the right set of skillz. It's a creative job, constantly pushing your ability to solve problems, that kind of thing.

Programmers, as a general rule, are interesting people. It's mostly the sysadmin dicks who give computer people the reputation of being an antisocial bunch. We get to do what we want in a lot of ways -- I wear what I like to the office, keep the hours I want, and receive better pay than I could pick up in any other line of work.

I try to compensate for the desk time by getting out to play outside as much as possible... and because of that, I've been able to avoid a lot of repetitive stress injuries I've seen other people get.

After 10 years, you will probably end up as some kind of manager. The people who don't make the leap up the chain generally go crazy.

Me? I'll probably end up in law school in a few more years, as management doesn't particularly interest me.
posted by ph00dz at 11:15 AM on July 27, 2005


OK..I am a professional programmer as well (title is Development Manager, so a little higher up the food chain).

Fun? What is fun? I work in a corporate environment, and I have for the past 9 years. I love it. I love my job, I love basically coming to work and being paid to solve puzzles. I love designing something and then spending the next 12 months directing my team and implementing the solution. I love seeing whatever it is I worked on turned on. I like revisiting companies I consulted with, and seeing what they've done with the product(s) I've developed.

There will always be programming work for good programmers. ALWAYS. The languages may change/adapt.

I went to college for Electrical Engineering not CS. I don't think programming will turn you into a nerd, I just think programming requires a certain level of focus usually associated with introverts.

And just a note, social skills are very desirable for programmers, getting requirements from customers, going to demos and talking up your product, a programmer with exeptional people skills will always be highly valued.

It's a great job.
posted by patrickje at 11:16 AM on July 27, 2005


Programming can be fun. Programming for someone else is often a frustrating quagmire of dealing with inadequate and ever-changing specifications, and demands to meet arbitrary deadlines independent of quality.

I find that being nose-down in code for hours does put my brain in a gear in which I lose social niceties. If someone interrupts me at this point, it might be hours later before I realize that my responses were so curt as to be rude. But it's a local effect. It doesn't take long for my brain to switch gears to being fit to deal with people again.

I doubt programming ever actually made someone socially inept, weird and smelly, at least not anyone who wouldn't have found another route to those things without it. But ditto Capn: if you're worried about being a nerd, it might be the wrong field.

The contents of a formal computer science education are relevant. Having the degree can help getting the first job. As with devilsbrigade, many of the best programmers I know are self-taught. However, these are the people who put in a huge effort to duplicate independently much of the content of a formal CS education. I know many more self-taught programmers who could benefit from pursuing a CS degree.

As for 10 years, well, I ain't got no crystal ball, but this much is clear: large organizations with truly excellent teams developing their requirements and formal specifications can and will outsource the programming. But a huge number of smaller organizations who can't devote people full-time to those things will continue to need software engineers who can work on the whole process from helping to develop the spec to documenting, 2d level tech support, and training. Some of those organizations will think they can outsource, but after a million conference calls to (whatever the hot outsourcing location is in 10 years) they'll regret it.
posted by Zed_Lopez at 11:16 AM on July 27, 2005


Programming = Not really fun.

Seeing stuff work that you wrote = Fun.

Designing software = Maybe not "fun", but it's a nice, very creative job.
posted by trevyn at 11:19 AM on July 27, 2005


This is a not-particularly-edited (two cuts and formatting only) for posting comment made on the Defcon Mailing List. I don't agree with everything that the 'chuck said, but it makes for interesting reading. BTW, I'm a programmer too, and am discovering I'm more interested in being an entrepreneur; I have the skills to code my ideas, but I'd rather pay someone else to do that while building the ideas further.
http://www.msnbc.msn.com/id/8630341/
Gates puzzled by computer science apathy

"Students love to use technology, but aren't interested in programming."
Well, duh. [...] Maybe this is because Gates' lifework has been to make "technology" interesting to chimpanzees?

Anyway, Gates (demonstrating the Hagbard Celine maxim that communication is impossible between unequals, and no one equals Gates) goes on to remark:
Gates said computer scientists need to do a better job of dispelling that myth and conveying that it's an exciting field.
Computer science profs are not "programmers". Usually they are "hobby" coders, no matter what they think of themselves. They could not maintain "commercial" pace -- that's why they're slumbering in academia.
"How many fields can you get right out of college and define substantial aspects of a product that's going to go out and over 100 million people are going to use it?" Gates said.
This is one of the things deathly wrong about Microsoft warez and Microsoft policy: it's a Children's Crusade. [read whole article for other examples of CC]. One question an intelligent M$ hireling might ask itself is this: "If I'm going to be specifying major projects by the end of the year, what the fuck will I be doing when I'm fifty?" I will tell you: you will be either a bean-counting manager, or working in a different profession. And computer "science" *HAS NO RELATED PROFESSIONS*. The "cross training" profession is
"taxi driver".
"We promise people when they come here to do programming ... they're going to have that opportunity, and yet we can't hire as many people as we'd like."
Or it might ask itself "What will I be doing when I'm thirty?" And it might answer, "Training some jerk named Rajiv how to do my job at 1/3 my salary, this training to be performed during part of the 30 hours of unpaid overtime I put in a week."

Perhaps Gates could hire more employees by offering a higher wage? Or perhaps he might tell them more truth about the nature of the crap they'll write.

A second expert was present:
Sharing the stage with Gates, Maria Klawe, Princeton University's dean of engineering and applied science, said most students she talks to fear that computer science would doom them to isolating workdays fraught with boredom - nothing but writing reams of code.
Ms Klawe is wrong. The isolating workdays fraught with writing reams of code are regularly punctuated with inane, stupid, insulting meetings that drag on like a dental procedure, and which are paid for out of the code-writing budget, and which count against your estimates of the time needed to write the code. In addition to writing code and languishing in meetings, the programmer can also be expected to be assigned work, deliberately demeaning, of a janitorial or clerical nature.

All these joys will be experienced in a Panopticon-inspired micro-managed environment called a cube farm, where you'll be killed for smoking.

Being a programmer was not the greatest mistake of my life but it was the silliest. [...]
posted by lowlife at 11:24 AM on July 27, 2005


Oh, are you a girl? Right now tech jobs are about 50% harder for lady-folk, depending on the work environment you end up in. Older managers will treat you like a secratary and you may have to work with the extra-nerdy nerds you mention, who will treat you with equal measures of fear and lust.

It's not fair, but it's something to consider.
posted by Capn at 11:36 AM on July 27, 2005


Well, I have a software degree and I do sometimes regret it a little, not because I don't like programming, I love it. But I wished I'd challenged myself more and become a "real" scientist. Like microbiology or something.

I was deeply into computers and programming as a kid/teen. And I knew more about how to use computers then a lot of CS grads, and by use I also mean programming. Several languages in fact, including X86 assembly, C++ and Java. A lot of the early college classes focused on things I already knew. And in some cases, were incredibly boring.

A lot of the programming jobs out there, corporate programming jobs I could have held down as a high school graduate.

But the fact is, I learned a lot about programming in collage. Not about computers but about programming, about how to design software, about algorithms, about discrete math and the mathematical foundations of Computer Science. It was fascinating, and it definitely both informed my understanding of computers in general which lead me to a deep understanding of how to use computers as well as the abstract thinking needed to come up with good programs.

(The odd thing is, computers totally bore me now. In High school I used to love putting together computers, configuring them, and so on and now I just want the damn things to work. But I still love programming. Solving puzzles and expressing myself in software)

A lot of people here are saying you don't need a degree to get a programming job. That's true, but it will certainly help you get a job. And it will definitely help you program well.

My current job isn't corporate, I work for a small software company (we do internet security stuff) and it requires a ton of low-level understanding and advanced thinking. Games programming is one of the most demanding fields out there, but the pay isn't so great because it's so popular :(

Learning to program won't make you a nerd, and you don't need to be a nerd to like programming. Your personality won't change at all. I'd recommend taking lots of psych courses while you're in school. I found that stuff really interesting and that will give you a real understanding of how other people act and think.

(although, I suppose

And don't buy the hype that programming jobs are moving overseas. There are still tons of CS jobs here in the US and there always will be.

Programmers, as a general rule, are interesting people. It's mostly the sysadmin dicks who give computer people the reputation of being an antisocial bunch. We get to do what we want in a lot of ways -- I wear what I like to the office, keep the hours I want, and receive better pay than I could pick up in any other line of work.

Definitely.

BTW, I'm a programmer too, and am discovering I'm more interested in being an entrepreneur; I have the skills to code my ideas, but I'd rather pay someone else to do that while building the ideas further.

These days being able to program means being able to build a bussness out of thin air on the internet. Case in point: my friends tshirt site (someone NSFW, and offensive) A professional website like that probably would have cost him tens of thousands of dollars, but it didn't cost him a dime.

As far as what "Chuck" said, um, whatever. Sounds like a mindless rant from a crappy programmer to me.
posted by delmoi at 11:51 AM on July 27, 2005


I did computer science as my degree, passed well but tended towards boredom and assumed I would end my days "inn a small room, in the dark, programming in black and white".
As it turned out, I'm a web developer, still programming all day, but I get to work with real people and artists all the time, as well as not wearing a suit and making things that people find groovy.

So it's half good, half bad. I find it fun now, but I may not if I'd chosen a different route. I didn't lose the ability to speak either, which was a excellent bonus!

Pay is reasonable; job security is good (because few companies, after the initial rush, want the hassle of managing 20 Indian workers running several hours ahead of them and not speaking English fluently); if you can keep on learning the entertainment remains and prospects appear.
Fashion sense declines sharply.
So you give a little, you lose a little.

Good luck.
posted by NinjaPirate at 11:54 AM on July 27, 2005


Oh, are you a girl? Right now tech jobs are about 50% harder for lady-folk, depending on the work environment you end up in. Older managers will treat you like a secratary and you may have to work with the extra-nerdy nerds you mention, who will treat you with equal measures of fear and lust.

Is he or a she a girl? I can't tell and I don't want to jump to conclusions. Also, they live in Norway, so there are probably a lot of cultural diffrences in male/female work relationships.
posted by delmoi at 11:56 AM on July 27, 2005


I got my BS in CS and enjoyed all 4 years of it, but aside from a nepotistic summer vacation stint at a now-failed startup I haven't done any professional programming whatsoever, none in the four years since I graduated. My observations:

I really enjoy programming. I like developing a piece of software from scratch. I like designing. I get a big thrill out of Making Things (which falls inline with my general creative bent -- music, writing, photography, etc). I was doing that in high school, and so decided to do it in college and, presumably, a career.

Eight years later, I am without a programming career and haven't really been fighting for one, and a big part of it is this: none of my programming friends seems to be all that thrilled with their jobs, and some of them regularly work more than (in a couple cases much more than) 40 hours a week.

Which is not to say they dislike their jobs; they just don't seem to have any fun programming 99% of the time. The money, of course, is generally good, and they seem relatively satisfied with the situation, but I wonder if I would be satisfied with 8+ hours a day of coding that isn't any fun.

As it is, I code in my spare time, when I feel like it. It's still fun, and when I do it it's always something I'm interested in. The "I can do this 24/7" zeal I had in high school and early in college has very much abated, but the Love remains.
posted by cortex at 11:59 AM on July 27, 2005


I've been a professional Software Engineer for 20 years. Is it fun? For me, most of the time. At my current job, I'm the senior engineer and while that means that I do a lot of design (which I really enjoy), it also means that I serve as the main reference for the other engineers here. It's nice to have that level of experience, and at this point in my career, I really feel like I have a "master's hand" in terms of my craft.

I got a bachelor's degree in CS and don't regret that one bit, even though the first two years of the program was pretty much just putting names on things I'd already invented on my own. The stuff that came later was what kicked me into high gear, I think.

It is immensely satisfying to see applications I've written or helped write being used in the field. I had the fortune of being a key contributor on some of the most prominent applications in the world, and that's pretty sweet.

I've had the opportunity of working at a startup where every one of the engineers was an equal of mine and that was one of the most intense and convivial groups.

Things you will notice about software engineers: there is a large percentage who are very good musicians and a large percentage who couldn't carry a tune in a bucket and not a lot in between.

I see programming turning into a commodity much in the same way that art and writing have been in the industry. I see engineering becoming a diminishing field with fewer people doing more. Engineering, the design of complex systems, is much harder than programming and good engineering is harder still. I spend more time off hours thinking about engineering than I do about programming.

There is no law that prevents you from doing other things once you've chosen a field. I did a stint as a teacher/administrator for two and a half years to see if that was what I would want to do for a career. There's nothing to say you can't prepare to have a flexible career. For example, you could study to be an attorney and if you also build in some good CS work, you could set yourself up to be a software patent attorney.
posted by plinth at 12:03 PM on July 27, 2005


Figuring out then implementing solutions to detailed, complicated, logical puzzles = fun.

Debugging that solution when it doesn't work the first dozen times = frustrating, but fun after it starts working.

Working with other people's code = sucks (50% of the time).

Reviewing the correctly functioning code you wrote after all the changes, reworks, debugging, time and effort = rewarding sense of accomplishment.

I am a software engineer doing ASIC verification (that is, simulation (bug hunting) of custom microchips) for a Silicon Valley Fortune 100 company that makes routers, switches, etc. I have a B.S. in Computer Engineering and have coded professionally for 6 years now.

I've learned 3 themes while working here:
1. Never stop learning
2. Never stop earning
3. Focus

I've had to change my skill set (coding language used at work daily, tools used, methodolgy, etc) 3 times in the last 6 years. I've been layed off twice. Learning on your own is essential, but so is learning in the classroom environment and from other people -there are so many times that I've met someone and *they don't even know what they don't know*. e.g. they think they know most, if not all, the things they need to know but simply don't; they are ignorant of trends and features, etc. Others just think differently and you can learn a lot of things from a lot of different angles by learning from others.

The boring parts exist: reading/writing technical specs, debugging other's code, meetings.

But, despite the layoffs and the requisite boring parts, I love the job: it pays extremely well (within 4 years of graduation I was making 6 figures in salary + bonuses), it keeps me on my toes and I constantly refresh and update my skills. I have flex-time (in to work at 10-11am, leave at 7pm) and get 4 weeks of paid vacation per year. The campus here has wireless internet all over the place and sometimes I do work on the grass, in the cafe, or at home (once a week).

It provides me with lots of interesting puzzles to work out. I feel like a translator at times as I code solutions using the parameters of a particular language (or translate programs from one language to another, C to perl, or perl to vera, etc). Plus I'm online all the time... which has its good and bad parts.
posted by zenorbital at 12:20 PM on July 27, 2005


I almost skipped this because it feels so over-hashed, but I wanted to take a few seconds to agree with some things and elaborate on others.

If you like programming you may like being a programmer, but maybe not. Programming is part of being a programmer just as cooking is part of being a cook, BUT there's lots of other things that go with it. I was (and still am) attracted to programming because I love to solve puzzles and see how things work and make things along the way. Along with that, however, are things that suck to various degrees.

You'll spend an above-average amount of time keeping up with the field, which can be fun - how did I ever live without Perl? It can also suck when the market moves in directions you dislike or ones completely contrary to where you've spend years developing skills. I get calls from headhunters to this day because my resume shows I specialized in Delphi for many years. That would be cool if the positions weren't paying below-average and it didn't mean I missed the early boat on web development and VB.

You'll spend a lot of time in your daily life on documentation, requirements gathering and what I think of as "deck chair re-arranging." As in "on the deck as the Titanic sinks." For good and for bad, software development is different than designing a new automobile, which means people are a lot more likely to screw about with the design all the way through since those changes don't have the immediately obvious effect of costing huge amounts of money.

The documentation and requirements gathering, however, is a Good Thing since it's what's going to keep you employed. The India/etc outsourcing isn't going to go away but businesses are getting hip to the fact that they can't scribble requirements on a coctail napkin and FedEx it to the third world and get what they expected. To some extent the better outsource houses will compensate for this by hiring really talented designers and comminicators but there's also going to be a lot of work here to do that initial design. And I think there's a lot of people like the owner of where I work now who feel like outsourcing is a short term savings that can be a long term expense, both in support and in the depletion of intellectual capital.

As plinth says also, you can do other things and I think you'll also find that if you have other things you're enthuseastic about that have an intersection with CS you can parlay that into good work as well.

So if you're gonna do it, make sure you apply yourself well to the matters of software design and management. The programing version of heavy lifting will (has?) become a commodity but quality thinkers will be valued a lot longer.
posted by phearlez at 12:30 PM on July 27, 2005


i'm another programmer. won't answer everything as people already have, just some personal comments.

i have a physics degree (and astronomy phd) - the drawback is that i'm therefore completely unqualified for what i do, but the advantage is that i have a set of skills that are pretty rare (and so pay decently) and let me occupy a more "vertical" chunk of the job market. in other words, i get to research, design and implement code. that can be unsual, especially in larger companies.

small teams of good people is best, as i've just read in the post above. the startup i worked at was fun. programming in academia is pretty good.

like any job, it's great if you enjoy it and it's a lot easier to get work - and more enjoyable work - if you're good at it.

the social bit. hmm. certainly the programmers i knew in college were, some of them, pretty dire. answering "true" to a question like "do you want coffee or tea?". ha ha. i doubt you would change, but being around people like that can be tiring. no doubt they weren't all like that - i guess it's more likely that it would be similar to the "real world", in which programmers seem pretty normal. the normal bunch of random people.
posted by andrew cooke at 12:31 PM on July 27, 2005


I too am a programmer. I've been doing it fulltime for about four years and have been in the field of IT twice as long. I think it can be a lot of fun (although on preview Trevyn pretty much nails it bang on, that it can pay well and that you can lead a balanced life as a programmer. But like all things in life, it takes a bit of effort to achieve these goals, and vigilence to maintain them. I'll split my advice into two sections, programming related and lifestyle related. You should be able to figure out which section is which.

My first piece of advice is that although you need an education to get your foot in the door, some of the most useful things are self taught or acquired through experience. On that note...

Learn languages outside of the ones they teach you in school (which will be pobably be assembly, c++ and or java). These days useful ones include regular expressions, which as used for searching, parsing and matching and exist in most serious languages, as well as any decent text editor), scripting languages (perl, python, rhino if you like java and javascript) that you can use to whip out quick solutions and automate other tasks, and XSLT for its powerful transformation abilities. Once you start writing code that generates other code, you will earn secret meta powers! Having said that, realize that others have figured out that long ago and so learn to use that to your advantage (see Ruby on Rails).

Work on projects. Start with your own, or go on sourceforge and join an existing one. The goal of this exercise is to learn about things such as version control systems (a tool for keeping track of changes in code), bug tracking, and making builds. These are things they never teach you in school.

Try to make at least some sort of web application. Webapps are where it's at and it's not going to go away any time soon. Find out what the MVC framework is and try implementing a web application that involves a serverside language, a database and a web front end. You'll discover a lot of little headaches (like maintaining state) and you'll be a better man because of it.

Read geek related websites such as Slashdot.org (but disregard the comments) or language specific sites to stay on top of current trends. Better yet are newsgroups and IRC. I came to an IRC channel a few years ago looking for help, after a while I would look up the answers to other people's questions, eventually I'd be able to answer all the common questions, was challenging myself with the harder questions, gained better general knowledge.

Start learning vi now. Find yourself a good text editor (ultraedit, scite,jedit, eclipse, etc...) in the meantime as you learn to hate vi less and less and get better and better at it.

Bookmark all your links and learn to backup everything you do. Play lots of games, download MAME, learn how to ftp and use bittorrent. Run a webserver and build a script that scrapes pictures off your favourite porno website.

Learn not to bore people with technical talk. That really exciting snippet you wrote that uses table metadata to generate code, you're girlfriend won't understand it. She'll smile and node, but she won't have a clue. Even if you dumb it down to the simplest of concepts, it won't mean squat to her. Instead, tell her you just wrote something that is going to save you 20% of your time at work, or is going to generate a lot of money. My girlfriend and I have the "eyes glazed over rule"... after two sentences I can usually tell if her eyes have glazed over, if they haven't I might persever but will still check every thirty seconds or so. This rule really applies to a lot more than programming. I was at dinner last saturday and the girl next to me was discussing philosophy, which I usually like, but when she started talking about how she loves gnosticism of the third and fourth century and started dropping names faster than Monty Python's Philosopher's Song, my eyes glazed over. Don't be that person. Ever.

On a related note, people will come to you with IT questions all the time. Unless your in a one on one situation, demurely give them a reply that says whether this is something you're willing to help them with or not, and address it in person at a later time. In other words, don't let somoeone else force you into glazing everyone else's eyes over.

Make time for other things. I've done 50 hours, 60 hours, 70 hours and 80 hours a week. It's quite a rush. It made me feel like I was a crucial part of a project and that I was going to be a big star. But it's not worth it. I think everyone ends up doing it once in their life anyways, but I'm a better man for leaving the laptop at work. I still play on the computer, I still do my own projects and I still bring work home from time to time, but I also take the gf for walks, go see movies, go camping. Life is too short and too sweet to be spent busting your balls off.

Eight hours sleep is good.

Make sure that your computer chair doesn't start smelling like ass, or else you will too, and people will joke that it smells like you in your cubicle even when you aren't there.

Try not to eat at your desk. 15 minutes away from the screen isn't going to kill you and your brain will think up amazing things when it's focused on something different every now and then.

Experience mind altering drugs at least once in your life. Take a friend with you.

Maintain a culture outside of IT, or you will be trapped in an IT culture (which isn't necessarily a bad thing).

Being a geek is cool these days, being a loser still isn't cool. So don't be a loser.

There's more to clothing than t-shirts, and pleated pants (not to be confused with creased pants) are a big no no.

I could go on and on....

posted by furtive at 12:42 PM on July 27, 2005


Sorry about the bold.
posted by furtive at 12:51 PM on July 27, 2005


IMO it's a good choice if you happen to be really good at it. I've been writing code for ten years, and so far have slouched around in one fascinating and challenging job after another, filled with adventure and excitement and really wild stuff. I'm not sure how much of it to attribute to my amazing talent, and how much is just dumb luck. It hasn't been easy staying (mostly) out of management, but I've found it possible so far.

On the other hand, I suspect that 90% of the programming jobs out there really suck. So I'd say that aiming to become a sort of average programmer would be a rather bad idea.
posted by sfenders at 1:19 PM on July 27, 2005


After 10 years, you will probably end up as some kind of manager. The people who don't make the leap up the chain generally go crazy.

Ah, lest anyone take my example as confirmation of that, I'd like to mention that I was already at least this crazy when I started.
posted by sfenders at 1:30 PM on July 27, 2005


It's a fantastic job, if you're of the appropriate mindset. As has already been opined, there'll always be jobs for good programmers. The key is to build up a good skillset. That means demonstrating good design skills and a range of languages.

I don't have a degree. In some ways, that could have been a problem. Typically, the big players, such as investment banks, law firms, and the like, don't even consider anybody without a good degree from a good university. That can matter in this business, because once you've got a big name on your CV (resume) your value to future employers increases by a disproportionate amount. However, I got a foot in the door because I've got a marginally interesting backstory, in that I served 8 years in the British Army as an Avionics Tech. I schmoozed the agents, then at interview talked about being mortared in a barracks in Northern Ireland, working on the flightline in Saudi during Desert Watch/Storm, pulling corpses out of 'copters in the frozen wastes of Canada. Then, I'd go all watery-eyed about leaving to get married and start a family, and I was in.

Now, after 10 years in the business, I'm in my mid-thirties and have a great job, where I can basically turn up and leave when I like, then sit surrounded by my own and other people's toys, playing with very expensive computers that other people have paid for. Plus, I get paid a stupidly large amount of money. The really great thing is that the people that I've worked with are people that I'd never ever have met in any other walk of life. Quirky, for sure, but interesting, friendly, loyal, and always up for some socialising.

Play smart, get a couple of years each at an investment bank, a telco, and a law firm, and you'll never have another financial worry in your life.
posted by veedubya at 1:45 PM on July 27, 2005


I've got a CS degree that I wish was a biochemistry or physics degree. Throughout the entire 4-year program, I always felt about 2 years ahead, which was frustrating.

The good parts about the life:
the theory: CS is incredibly interesting.

the fun: there is no feeling like coming up with a really elegant hack that does a bunch of work with just 10 well-placed bytes.

the learning: if you really enjoy hacking, you will never, ever get bored. You will never know the machine in front of you as well as you could from assembly, to network, to Windows API, to the web, to raw PostScript, on and on.

The bad parts:

the industry: is complete bunk. Had I realized how many decisions are based on politics instead of technical considerations, I never would have gotten involved. There is no awful feeling like working for months on projects that get trashed because a new manager comes in.

the money: is not as good as they tell you it is going to be.

the deadlines: I'm going gray quick.

Basically, I would recommend programming for fun, and considering a career only incidently. I still read reams and reams of CS papers. The domains you apply it to are the really hard part. 90% of actual work is spent debugging bad code, either your own or someone else's.
posted by sonofsamiam at 1:53 PM on July 27, 2005


smackfu hit the nail on the head. I think there are fun programming jobs but they are the exception, rather than the rule. It can be hard to find work, I guess, but I haven't had too much trouble. I don't think outsourcing will take it all away, either. It's too much trouble for a lot of companies to deal with India, the time difference, language barrier, inability to have face-to-face meetings. Especially smaller companies, or defense industry (where clearance is required).

I've had 4 programming jobs, 1 was fun, 1 was terrible, the other 2 paid the bills.
posted by knave at 2:42 PM on July 27, 2005


I did a lot of programming for fun in high school, so I decided to major in comp sci. After a couple months of that, I realized that I really only enjoyed the aspect of programming that let me create stuff for personal use.

That's pretty much how it went for me. I was always into computers growing up and got into programming in high school. I did really well in my high school CS class, got a 5 on the AP test, and spent the whole summer before I went to college writing a little Asteroids game for Windows. Then I got to school and realized that studying CS meant taking lots of math classes that I hated and working on lots of stuff that didin't interest me. I dropped it after half a semester and now I study music composition and creative writing.
posted by ludwig_van at 2:58 PM on July 27, 2005


Computer science profs are not "programmers". Usually they are "hobby" coders, no matter what they think of themselves. They could not maintain "commercial" pace -- that's why they're slumbering in academia.

I can't bring myself to let this go uncommented. CS profs are often not programmers or are not serious programmers, but this isn't because they're "slumbering" but because programming isn't even in the job descriptions for the kinds of research that are most important right now. Most of the actual implementation is left to grad students, though sometimes professors (esp. younger ones) do participate. What's important is ideas, algorithms, things at a higher/more abstract level than actual implementations; the reason professional programmers often see this as incompetence/"slumbering"/etc. is simply that end-user applications are years down the road.

In fact, to make this a little more on topic, most of the valuable things you would learn in a CS degree aren't about programming per se. They involve algorithms, concepts, etc. - the kinds of mathematical facts and training that don't age, and will be valuable as long as you are programming. This is one reason why most people with degrees are suspicious of those without - they've never taken e.g. a course in algorithms, so unless they are the best of the best, their grounding in actually choosing things that are computationally feasible (for instance) is likely to be weak. In terms of experience, tricks of the trade, etc., a degree will not buy you much, and this is the kind of short-term stuff that people without their degrees seem to often look down on people with them about. But I don't think you'll find a reasonable person who doesn't think that both are valuable. I also suspect that many of the anecdotes about people without degrees who are stellar programmers are about people who are extremely intelligent - the best of the best. The average person (for instance, the average computer science student, in my experience), would not be capable of learning this stuff on their own.

Also, you say you now have to choose what you want to be when you grow up. Perhaps the system is different in Norway (it's even quite likely), but this may not be quite true (though I think everyone feels this way somewhere between 17 and 21 or so). When I was going to college, I was certain I wanted to be a professional computer programmer (or possibly researcher) and get a degree in computer science. Halfway through my degree, I found a field that I didn't even know had existed, which I am now doing, and I think I am much happier now than I would have been as a programmer. There are always choices.
posted by advil at 3:40 PM on July 27, 2005


I'm a high school dropout who never went to college and ended up a software engineer. It's frequently fun, I have yet to encounter a dress code, and if you work for a company like one I work for (with lots of very smart people) you end up learning an awful lot about every aspect of computers.

However, as anyone who's gone through the 60 & 80 hour crunch weeks can tell you: it's very miserable at times. If you don't like your project, you're fucked. The project that you do like? It can be cancelled at any time. The employer might reassign you to a different product group, and you can end up working on software that bores you to even think about.

I'm not sure that a CS degree is necessary these days; colleges hand them out like toilet paper, and a 1/3 of the people I've worked with in this industry have English degrees.

If you do go to college, and hope to be a professional programmer, I would strongly suggest working on open source projects; that'll be top notch for your resume, and if you're really good at programming, you may end up being hired by a fun company simply because you wrote WidgetXYZ.
posted by cmonkey at 3:43 PM on July 27, 2005


I work with a relatively small team, which has been incredibly beneficial. Basically, as the principle interface designer I get to scratch both my design and coding itches. If I was part of a larger team I'd probably be stuck doing one or the other. It is also somewhat true that hobby coding is a different breed than being chained to someone else's project. Still, day in and day out, programming-for-pay absolutely beats the pants off of anything else I did in my previous professional field (paralegal).

I cannot say that the full-time employment prospects in the field are particularly outstanding (it took about six months to find my present position). I can say that in the past year I've had three contract/consulting positions basically fall into my lap based on my interest and study in ontology/taxonomy. I got into the field based on masters work in IA, usability, and knowledge representation. I haven't received any formal training in CompSci but for the most part one can fake this with a lot of effort (to be fair, I was a philosophy undergrad and took every logic course I could find). I do have a problem communicating with my teammates sometimes due to this lack of formal CS vocabulary and am constantly learning the correct labels for stuff I figured out on my own. Based on this then, I would say that if you find programming enjoyable you definitely should consider a CS degree. You should also consider adding a dimension to that degree beyond code monkey. Look at interface design/usability, knowledge representation, project management, etc because these are the ways you can distinguish yourself from the sea of post-millennium CS grads.

As for the social scene, programmers are hella cooler than lawyers (no disrespect to mah bruthas and sistahs in law).
posted by Fezboy! at 4:12 PM on July 27, 2005


One thing I have learned about programmers is that they always have lots of answers and advice.

I'm a programmer (female, if that's part of the question) and have been employed as one for just over a year. I started out self-taught and decided to switch jobs into programming in my early 30s - you should never look at anything as something you'll have to do for the rest of your life.

I love what I'm doing and have never had a job as intellectually and creatively challenging as this one, so if that's something you dig, then it might be a good choice for you.

My employer actively encourages me to take classes and read tech blogs and websites and learn as much as possible. Even the senior programmers that I work with are constantly collaborating and we all learn from each other.

I do think I'm missing a lot of general software development skills that I wasn't able to teach myself. Learning those is at least, if not more, important than learning java syntax or whatever.

As for social skills, I guess it varies. I tend to be kind of socially inept anyway, so I haven't noticed any change in that direction. Our tech group has varying levels of social skills, I'd say, but we have lunch together and all manage to get along well. I've worked with plenty of people in other fields with different levels of sociability, so it's not exclusive to tech.

That said, the geeks I know are generally among the smartest and most interesting people to me personally. If you like to have conversations about things like what is the difference between a meteor and a comet or how could you make a device for laundromats that would send you a text message when your washer stopped, then you'd probably get along well in a tech group.

We like to keep the weird and smelly stereotype in place to keep the non-geeks away.

As for being rich, I work for a non-profit and am a new programmer, so I can't say I'm rich yet. But I'm doing alright, and I may move into a corporate job someday. I think it's entirely possible for good programmers to get rich.

Just a few thoughts - it's release day, so not much time.
posted by bendy at 4:34 PM on July 27, 2005


You think we have a few programmers here on MetaFilter? Wow!
posted by caddis at 6:44 PM on July 27, 2005


I am a USian female software developer and I have never had a problem with any male in the workplace except for once, and he was a business person who would have been a sexist fratboy dick no matter what kind of company he ran.

I have a liberal arts background, got into software development kind of backways, learning stuff on my own, and for the most part love it. Keep in mind that you will spend only a minority of time actually writing code. The rest of that will be involved in boring things like estimates, documentation, status reports, meetings, as well as exciting things like architecture, algorithms, problem solving, collaboration. The money is decent to support yourself with but you can't buy a big house or anything. To advance you probably need to go into management or start your own company. After a while you might end up in project management or consulting. CS background is much less important than aptitude, experience, self-learning, and open-mindedness.

Social skills vary widely. If you have them, you will often get better jobs or more responsibility because you can communicate across teams, including to users. This is a good thing. Geeks are often fascinating people, and you will learn a lot being around them. They often have a great sense of humor, and if you are seen as their intellectual equal, your gender really won't matter.

I never really figured out what I wanted to do for a living, and I feel like I really lucked into this. Yes, it is fun. Like any job, there are days when you get frustrated and want to tear your hair out, but there's nothing quite like the satisfaction of creating a working piece of software that started out just as a wisp of an idea in your mind and has somehow become transformed into a working entity that runs and follows the rules of logic and causes something to happen that wouldn't have happened without it.
posted by matildaben at 10:25 PM on July 27, 2005


The programmers that realize that making software involves a lot more than simply arguing about which language is best and then sitting down to write oodles of code are the ones that have the most fun. The way software is made is changing. In the future, writing code will be only a small proportion of the process, just as pouring cement is only a very small part of building a bridge.
posted by normy at 12:33 AM on July 28, 2005


Oh, one other thought. If you're thinking of seeking academic qualifications, as others have mentioned, a CS or IT undergraduate degree isn't worth all that much these days. Most of the employers I know these days are asking for masters level qualifications, at least for the interesting jobs. Even better, get yourself qualifications, certifications or good experience in a specialization. GIS is hot right now, for example.
posted by normy at 12:43 AM on July 28, 2005


Response by poster: It sucks that I had to post and run like this, but thanks for the great answers. (And keep them coming if you got more!) This is very interesting reading. You can all consider yourself 'marked as best answer'. A few things:

"Oh, are you a girl?" "Is he or a she a girl? I can't tell"

:) I'm a guy. I need to do something with my profile.

"you say you now have to choose what you want to be when you grow up. Perhaps the system is different in Norway (it's even quite likely), but this may not be quite true"

Oh, no, you're right, it's not quite true at all. But as you say, it certainly feels like I'm making a monstrously big decision, even if I realize that I've got all my life deciding what to do, and all my life to do it.

"If you're not already a nerd, maybe programming isn't for you."

I certainly am a big-time nerd in the sense that, as you say, I often devote "a laser-like focus to one thing to the exclusion of all others". Even to silly things. And I love it when I see other people who are really devoted to and really good at something. That kind of nerdery usually comes from the people I find most inspiring, and I love them for it. It's really the socially-inept part I'm afraid of. And this thread has been quite reassuring that it's not much of a problem.
posted by cheerleaders_to_your_funeral at 6:02 AM on July 28, 2005


« Older "Bright eyes, burning like fire ..."   |   How to excite my child about learning...? Newer »
This thread is closed to new comments.