views:

476

answers:

15

This is sort-of in response to a question posted earlier. Almost all programmer's I've met seem to enjoy writing business software, esp. doing web development. A friend of mine said he would never go into game development because there's too much math in it (I love math - to me, it's just like programming. I couldn't understand how someone who likes programming also hates math).

Anyway, unlike them I've loved studying for my CS degree. I loved the theory and algorithms (favorite courses were Artificial Intelligence, had lots of propositional and first order logic, and Computer Graphics, which delved deeply into the theory behind 3d rendering). In fact, I recently wrote an interpreter for a prolog-style programming language, just for fun, in my spare time. The classes I found boring were the ones most people would say were the most practical - "service oriented computing" and "software engineering", which went mostly into software architecture, team building, requirements gathering, use cases, writing documentation, etc...

Now, I'm working in the "real world", in the IT department for a state agency. I never realized how much I f'n hate working on websites. I simply don't care about "business-y" software that I would never use myself. I would certainly have switched majors if my school focused solely on vocational rather than academic skills.

It seems that almost all programming jobs in my area (phoenix), are just boring IT positions. Should I start thinking about going back to ASU to earn a Master's or PhD? What is the likelihood I'd find a position requiring only a Bachelor's in CS, in the sort of fields I'm interested in (game development is intriguing, but people in that field tend to work serious overtime - 60-80hr weeks! I'd go crazy if I had to do that)? And most importantly, are there any other programmers out there who feel the same way I do? I feel kinda alone on this.

+1  A: 

Work IT for a job to pay the builds and strike out on your own project on your own time? I feel the same way, but at the same time, one thing I notice about business sites vs. AAA quality games is AAA games take huge teams, which very useful business apps don't. A much smaller group can make software that is useful and is used by many people, which is a nice reward.

scubabbl
+1  A: 

I'm the exact opposite of you. I love the website, business logic stuff and I couldn't imagine making games. Not only are you a slave in most places but it's just not interesting to me, which is pretty weird but it is what it is.

Anyways, I don't think you should have a problem finding something closer to your heart with a BA's, just do some shopping around in the many job websites out there. You could always do what you love on your spare time.

Paolo Bergantino
+2  A: 

The fact of the matter is, 90% of the jobs out there are for working on boring "business-y" software. It's also where you'll make the highest salaries.

I think the thing that drives the interest of most programmers is the technology that they're using to write the boring software.

Whether it's C++, C#, Javascript, Java, or even Scheme - most programmers enjoy programming and that's why they do what they do.

17 of 26
+1  A: 

If you have enjoyed CS courses so much, then you should definitely consider getting a Master's. This will allow you to do something cool for at least another couple of years. :) Then look for a job at a startup, which does something cool, or apply to Google. Yes, it does mean long hours. There ain't no free lunch, unfortunately.

Dima
It doesn't get easier to go back to school, only harder as your life gets more complicated. Do it now!
Donnelle
+1  A: 

If you want to do serious math, but avoid games, aim for analytics, optimization, or operations research fields. There are a number of companies that are developing software to apply heavy-duty statistics and algorithms to solving business problems. I was aware of one in your area, Khimetrics, but they were purchased by SAP a few years ago (although they may still be operating in Arizona).

Relevant education would likely be a degree in operations research, or a CS specializing in algorithms.

John Stauffer
A: 

You could try working for the military - I'm sure they will have more cutting edge stuff for you to work on. My colleague at work used to work for them and they were making image recognition software and that was back in the 80's or so - imagine what they're doing now.

I'm sure you can also find a busyness-y kinda company that will allow you to use most of your knowledge to design software - just shop around.

Other than that if you want purely theoretical work in algorithms and math - you should go with academic career. I also know Microsoft have a pure research facility, but to work for a corporation with pure research you'd have to have an academic background I would guess.

Svet
+1  A: 

On the other hand, you may want to consider teaching. If you dont like the application of programming, then why not consider teaching it to others? Or teaching math?

Optimal Solutions
+4  A: 

Brother I feel your pain :)

But seriously, I dont know what kind of answer you expect to get as I am sure every person can only make a suggestion based on his own experience. Sure people will write here all kinds of stories and advice, what to do, what not to do, and etc. But I think that in the end nobody really knows whats best for you except YOU.

The bottom line is, you must take a step back and consider all the cards laid on the table. If your unhappy about your current job consider alternatives that will make you happy, not alternatives that made other developers happy as im sure you have your own set of skills and needs.

In any case id suggest this article for further reading, as it also contains a lot of cross refferencing to other related material in the "identity crisis" issue :)

Cheers, Roman

Roman M
You're right. I'm just looking for ideas, not hard answers. Graduate school is a bit difficult for me now financially, but not impossible. Anyway, much thanks for that article!
Your welcome, this article and some other ones it links to got me seeing the bigger picture on the whole industry as well
Roman M
A: 

I feel exactly the same. Since I live in Minnesota and like living in Minnesota, my choice of jobs is a bit constrained. If I were in my twenties and felt free to move anywhere, I would try to find a job at a game company or at a company making interesting math-oriented software (such as Wolfram Research). But, since I'm not...

...I work on my own little personal, open-source, fun and interesting projects in my own time. It's called having a day job. My day job writing boring business software gives me a certain measure of financial security and I write fun stuff on my own time.

But, still... It's not an entirely satisfying compromise. If you can find a job doing interesting programming, that would be the ideal solution.

Paul Reiners
+1  A: 

You can look at it another way as well. Some people love "getting paid" for what they love to do, whereas other do not. Turning a hobby in to a business (or profession), for many, is a perfectly good way to ruin the hobby. The business side can take away a lot of the freedom and expressiveness that goes along with the hobby. For example, as a hobby, you can write your prolog interpreter to the point where you got the "interesting" parts working and the "hard problems" figured out. As a business, you'd have to actually finish, optimize it and (horrors) document it. That can get un-fun very quickly.

So, consider working on the "business IT" projects as the mundane part of the equation. It pays the bills, keeps a roof over your head. But when you get home, you can still embrace your hobby of functional languages, advanced algorithms, "games", whatever.

Finally, IT programming isn't so much about grabbing fields from a screen and stuffing it in to a database. IT programming is about higher level systems. Stuffing fields in to a database is simply a means to an end, the actual end is the overall system.

Many find that aspect quite interesting. Both at an abstract view (just getting the data flows figured out) and at an implementation view (how do I get system A to talk to system B, and how do I get it to perform).

Others like the human side of the system. Because, in truth, as much as "we hate them", all of this comes down to the users. The smart ones, the dumb ones, the pointy-haired ones.

When it all comes down to, in the end, is that a Business IT system is about communication. Using the system to communicate measures and numbers from the field to management. Using the designers to communicate between the coders and the users. Using the website to communicate from the corporation to the public.

As you may have noticed in your travels, Communication, in general, is hard. Coding, that's easy. Talking, that's easy. E-Mail, AIMs, Blogs, all easy. Getting information from A to B, simple today. But Communicating -- that's different. Conveying understanding, that's real hard. And that's what this is all about.

Like it or not, despite how much we have tried in the past 40+ years, IT is still Hard. Despite all of our work, all of our advancements, all of the technology and the growing numbers of technologists, you'll notice that we have yet to put ourselves out of work. We still haven't made trivial the task of communication. People complicate that part, and as long as there are people in the mix, we'll have work to do.

So, sometimes it's better to keep what you love at home, as a hobby to enjoy rather than as a grind you need to get done by Tuesday. Working all night as a labor of love is different from working all night as a labor of "The client needs this done or we don't get paid".

Still, I've always found ways to use exotic techniques and technologies in to the mundane business of IT. From Lisp based rule languages, Scheme based websites, to Python based report writers, all to support a system that's written in Java or a 4GL or whatever. Debits, Credits, Invoices. The whole stuffed shirt thing. Always an interesting ride.

Will Hartung
A: 

Unfortunatly all the things you found boring in school are what take computer science from hacking to a profession, which is what you are looking for. The good news is it doesn't have to be as boring as school. Some of the best parts about being a developer are the people I get to work with and designing the code. But regardless, if you "f'n hate" your job what are you doing there? Cueillez des aujourd'hui les roses de la vie.

A: 

Vicodin. Or Codiene.

Mostlyharmless
A: 

I think you oughta find a good problem that you'd love to solve, and needs your kind of knowledge to solve, and put a startup for it. No need for a VC yet: go and write a prototype, see how it solves your problem, see how it clicks. I'm sure you'd enjoy that.

Otherwise you might be interested in working for scientific organizations that crunch huge volumes of data. Think CERN.

Goodluck! :)

Jon Limjap
+4  A: 

Follow your passion--look for work in something that interests you, even if it means a pay cut. Your 'work product' will be dramatically better when you are motivated and interested in what you are doing. (One of the reasons why the oft mentioned productivity gap between coders can be 10:1 or even 100:1, IMO.) Financial and professional success will follow.

I am of the belief that programmers who spend their working days working on stuff they don't like will a) do crappy jobs, b) start to hate programming in itself, and c) do not progress well professionally. Side project you groove on are akin putting icing on a rotten cake.

Stu Thompson
100% agree with your 10:1 productivity gap.
Guido
A: 

It sounds like you've stumbled over the standard dilemma: not everyone is like us. I also loved computer science, though I went all the way through so I no longer worry about getting more schooling.... ;-)

Here are some quick Bob-career tips:

  1. The fact is that many / most of the jobs out there have an IT component, are web commerce-related or something similar. If that's not your bag, you're going to have to make some choices.
  2. Use your time at your current job as a starting point. You're getting experience on your resume, making some personal contacts, perhaps getting some recommendations.
  3. Start thinking about the future and what you do not want to do, places you do not want to live. In my case, for example, I knew that I never wanted to work for a gambling company nor did I want to live west of the Mississippi (family stuff).
  4. Keep up with technology, write code for fun, ask / answer questions on Stack Overflow. You never know who you might connect with.
  5. If you really truly love computer science and are interested in working in the Northeast and are a US Citizen, let me know where I can send you an email (perhaps in a comment). See point 4 above.
Bob Cross