Interesting Computer Science Jobs?
mattskent writes "I'm currently a junior in college working towards my Bachelor's degree in Computer Science. As such, I'm starting to look pretty seriously at jobs in the IT/Computer Science field. I've spent plenty of time working entry-level IT jobs doing various kinds of help desk type work, and so most of the exposure I've had to the field is related to support of other people's computers. I enjoy helping other people out, but I'd rather not be plugging things in and restarting computers the rest of my life. Although the possibility is growing on me, I don't think I would particularly love to write code all day for a living either. What are some interesting jobs that you've had or heard of that I could look into fresh out of college with a Computer Science degree?"
Let's see. You'll get a CS degree but don't feel like writing code for a living. That's a tough one.
Are you a "people" person? All those introverted geeks need to talk to each other, make decisions and agree on stuff. Something that they (on average) do very poorly. You would have a career in product marketing, since you understand the geeks and can talk to them.
If that makes sense to you, then short-term, your best bet is to join an open source project and volunteer to *organize* stuff. Not code, but organize. You'd be amazed how badly needed it is for most projects.
--
the elephant in the room: How to Make Money with Open Source?
If you're any good, you'll spend a lot more time understanding problems, designing solutions and finding good techniques for factoring code. If you do nothing but "write code all day", you're a shitty developer.
With the current state of the industry and the world economy, have you considered taking Chinese? It might be useful since so many jobs are being outsourced to that region of the world.
Don't become a sysadmin.
Rather than tech support, there are other non-coding IT jobs out there.
A lot of these could be junior-level in a big enough organization, or in a company where you're a junior consultant sort of person. Usually you work up to that type of position by doing helpdesk first, so it looks like you're ready to move on to something similar.
I claim first use of "Error No. 0B" - or "No. 0B error." It'll be the new ID 10T!
Get a double major or minor in biology. People who can handle bioinformatics or the computer side of structural biology are in really high demand. Not saying it's moreso than other fields, but I do know you can write your own paycheck with that crossover.
I also don't know if you'd find that interesting. I do, and knowing that your job is working towards the cure for cancer or whatever the goal is I think makes some of the more menial tasks more interesting, but that's just me.
If you're not looking to add a major or minor, you can still likely get into that field and learn whatever you would need on the job about bio. They're that desperate.
If you don't want to code, then you're in the wrong degree program. There's really only 3 entry level jobs for CS people- programming, testing, and system administration. All 3 of those require at least some coding (the first being all coding). Testing breaks down into low paid monkey work and SDET positions where you're expected to code almost as much as a programmer. There's various types of management and liason type jobs that require a technical background, but without at least a few years experience you aren't qualified for them. If you really hate coding, your options are really sys admin or a quick change of majors.
I still have more fans than freaks. WTF is wrong with you people?
Most people go for CS degrees because they want to work in IT, or write code.
You may want to take a step back, figure out what you *do* want to do with the rest of your life, and switch majors.
Gonna save some people some time here
CS is no more about computers than astronomy is about Telescopes.
There are many accomplished IT admins who use their CS knowledge on a daily basis, I am one of them.
CS is not Coding.
CS is more about Math.
If you want to stay pure CS you need to find R&D departments or go for your PHD.
CS is a great degree but isn't going to get you far when getting a job because most managers don't understand its purpose.
Find out what you love doing and do it, chances are, CS prepared you to do that thing.
CS: It is all sink or swim...oh and did I mention there are sharks in that water?
This may sound crazy given the current times, but what about the financial industry? There are a host of interesting problems to work on: high volume, low latency transaction systems for the stock market, low latency network applications for information feeds between various parts of the financial world, high reliability systems and so on.
And when you grow tired of coding, there are always a spot for a coder turned project manager (they are rare and seems to be treasured).
I ended up in the financial software trade by accident and I've never regretted it.
(Elegance is not an option)
With web development you are coding but you also get to spend a lot of time with various departments and people organizing various aspects of the site you're designing. Web development has a lot of creative aspects too for things like creating images, interactive media, and user interfaces. Just my two cents. -djv
I enjoy helping other people out, but I'd rather not be plugging things in and restarting computers the rest of my life.
As a junior-level CS major, do you really think that's what CS grads typically do?
Although the possibility is growing on me, I don't think I would particularly love to write code all day for a living either.
Then why are you majoring in CS?
Since I majored in Spanish, I heard plenty of jokes like, "So, do you want fries with that?" and "What are you going to do when you graduate, go to grad school?" Therefore, when I met an engineering student one time and asked her what she was planning to do upon graduation, I practically fell out of my chair laughing when she said "I'm going to grad school." (Which totally spoiled my chances at dating a very pretty woman, but the laugh was worth it, in retrospect.)
But the McDonald's thing might not be such a bad idea. If you work in a job as an end user, you learn a lot about how not to do things in computer system design. But whatever you do for the first few years of working, you will be doing something else a few years later. It's a lot easier, though, to go to a support job from development than it is the other way around (which is the route I took).
"Who controls the past controls the future. Who controls the present controls the past." -- George Orwell
I'm a sysadmin right now... had done a bit of desktop support... a bit too much that is.
as a jr sysadmin you'll be exposed to a broad range of hardware, software and networking equipment as well as the entire range of users... developers, sales people, execs...
From there you could figure out which of these directions you'd like to move towards.
Desktop Support is a dead end... I learned that along the way.
I'll tell you what, no matter what job you are working, it's still going to be a job. I like my job, I get to figure stuff out, I try new technologies all the time, but at the end of the day I am still doing it because I need to pay the bills (eat, rent, etc). There's always going to be an element of misery (dealing with coworkers, getting up in the morning when I'd rather sit at home and play Smash Brothers, debugging......that's a big one. Can't finish your code without debugging it).
Working isn't about 'fun' or 'entertainment' or 'what I want to do.' If you really want to work, then something is strange about you. Working is about surviving in a cold hard miserable world, it's about being self-sufficient, it's about producing something of value. Those all feel good, but you aren't working to have fun (even though work can be fun sometimes!), you are working to survive.
Don't confuse work with your dreams.........what do you REALLY want to do? Only in rare people is it something you can make money doing. Do you want to help starving children in Africa? Be a beach bum? Travel the world? Live the life of an eternal frat boy? Get married and live a quiet life? Whatever it is, focus on that, and your job will help you with it. Otherwise, if you make your job your life, it will just weigh you down and make you miserable. Work sucks, but you can still be happy. Life sucks, but you can still have fun.
That's my advice. YMMV
Qxe4
..and that is IT technician at a call center. at least the company i work for, i am solely responsible for keeping 500 pc's, all associated switches and servers etc up and running - and i am surrounded by people with double digit iq's - or to put it another way, i'm astonished that i havent brought my kalashnikov to work yet. almost anything is less stressful than dealing with hundereds of idiots that cant figure out that a mouse wont work if it isnt plugged in, or elderly hillbilly management from oklahoma that thinks thousands of dollars worth of equipment grows on electric trees, and that months of work can be done in 2 days. i hope they fuckin fire me. at least then ill be able to look for another job and still have a govt check to pay rent while i do so.
I always thought that the people who got to add urls to the kiddie / work filters would have an interesting job.
It's been said before. There are things you just can't un-see. How much would you pay someone to surf the nastiest content on the net? Would you really hire people who enjoy it?
-B
Wha... Oh, you're just a troll.
If you think you'll be bored writing code for other people, start your own company.
The downside is you will almost certainly be poor for a fair while until things get established, but the mere fact that you are working on your own company can make that easier to cope with.
I've started a consultancy myself, rather than go for a standalone product. I'm not sure if I'll keep it up, I may go to work for a rather good company I know (great guys) and branch out on my own again later.
I have to say that setting my own timetable, and working when I want is pretty nice, even if I do work rather hard.
A learning experience is one of those things that say, 'You know that thing you just did? Don't do that.' - D. Adams
I just got my BS in CS in May and have been writing code all day for the last 4 months. It's really not bad (at least where I work) and it's nowhere near as difficult as doing real CS. CS homework is hard, but implementing business rules after you already "get" CS is no problem.
One thing to keep in mind when job hunting is that recruiters don't know what they're looking for in a developer. They ask for all kinds of scary qualifications that don't mean shit. Bluff your way through a phone screening and keep in mind that 9 out of 10 people they're interviewing can't write a simple factorial function, let alone do it recursively.
If you've never used a relational database before, learn about those. It's not difficult, but you need to know about it because you will use it.
... and think you're able to get a security clearance, the US Department of Defense is looking for CS types to work information operations. Recommend talking to a local recruiter to see what might be available.
I'd recommend you focus on the server side of the house and think about managing large applications and/or databases - both careers are suited for your degree type. I've personally worked in both fields and like you, I hate working on PCs. Just my two cents!
"I don't think I would particularly love to write code all day for a living either. " You may be in the wrong major. Computer Science is no more IT than automotive engineering is auto maintenance. Without that love of coding, which by the way, you should already have by now, I can't say you'll get very far. Perhaps you should be taking IT classes (if offered) or MIS or some variant, but then your faculty adviser should have pointed this out already.
Non sequitur: Your facts are uncoordinated.
During my junior year of my computer science degree, I picked up a job working for some chemistry professors at my university. We've worked on everything from new drug discovery algorithms, force field simulations, and smart statistical analysis methods. This kind of work developed software that can wind up in the hands of every pharmaceutical company on the planet, make huge breakthroughs with hydrogen fuel cells, and math code that can play the stock market. I am the world expert on linear algebra based recursive partitioning algorithms for predicting the tight binding properties of compounds to the 2c9 enzyme. This all was an incredible exercise in everything from software design to calculus to organic chemistry. As the only computer scientist in a group of chemists and mathematicians, I was the expert in my field which gave me a lot of freedom in how I went about my work.
There is a surplus of jobs on your own campus, and it's well worth it to stick around for a few months after graduation to do some amazing work and get some great references. Best of all, if your work is viable and marketable, you may form a start-up company out of it.
I have a strong IT background in addition to being educated in Engineering Physics. My last two positions have been "crossovers". My engineering background allows me to participate in product development. My IT background speeds up the product lifecycle by giving me the power to effectively communicate project needs to the IT department. This makes the cost of product development go down and helps engineers/developers get what they need to do their jobs well.
My CS degree has proven itself useful more for the math and science background than for the programming. Sure, there's a lot of code punching involved, but setting up the problem to write programs for have all involved understanding what it is I'm supposed to do. When you end up working regularly with various types of scientists and engineers, your job is more that of a digital blacksmith, to hear what someone wants and to design the tool that will do what they need ... and then either hammer it out, or look over what they've done and hammer it into a more efficient and accurate piece of software.
Employers do NOT want mechanical code-punchers. If you want to get a good CS degree, you need to be able to either comprehend complex problems and figure out solutions for them with the assistance of engineers who HAVE the problems, or you need to be good at designing programs and understanding the design of projects you get tapped for. Code becomes where the rubber meets the road, but it's a smaller part of the whole picture.
Just a note, any major that has to do with math and/or logic opens a lot of doors. You can program or do sys admin stuff (since you seem to like computers though your CS degree need not apply - but it won't hurt either).
You can also chase a law degree. Focus on Intellectual Property Rights if you want to stay on top of tech.
Otherwise, you sound like you're just starting out. IT jobs range from sys admins in small companies or departments in large companies (or colleges) but can also be more focused - mail admins, database admins, cluster admins, security (whole other ballpark there), networking, auditing, etc etc.
Not that you'll read this, but from my own (similar) experience, you will have a more rewarding career with a better company than with a "better job." Get a list of good companies (like the Fortune 100) and start at the top and work your way down. The way companies treat their employees will affect your happiness level much more than whatever it is you actually do for them.
As a professional developer with about a decade of commercial experience, I can assure you that you won't be writing code all day in many jobs. You'll spend at least half your time writing TPS report coversheets, attending meetings, writing reports about attending meetings, attending meetings about reports, and occasionally meetings about meetings or reports about reports. Figuring out how to answer the latest hare-brained question from the suits with the shitty data to hand (abortions of SQL and/or one-off hacks with a scripting language go here) takes up another twenty-five percent of your time. Twenty percent to thinking about lunch, eye-balling the hot MOTAS in Accounting or HR, sneaking in the side entrance so Lumbergh doesn't see you, and you're looking at five percent of your time going to real actual coding/work.
You may think I'm pulling your leg, and you also probably laugh rather than cry when you read Dilbert. Don't worry, by the time you graduate you'll probably be old enough to legally drink and that really helps take the edge off.
Hope that helps! :D
News for Geeks in Austin, TX
Working isn't about 'fun' or 'entertainment' or 'what I want to do.'
It isn't? It sure is for me. At least "What I want to do". Sometimes it's not fun or entertainment but those are very different things. Anything else is putting yourself in a cage 50 hours a week, a cage for which you have the key but few people chose to leave.
I don't even think it's all that rare or hard to be able to do "what you want to do". The hard part is figuring out what that is... but if you think you know that should be at the TOP of the list of things to look for in a job.
Also consider that thinking that companies are the only source of jobs, is a great way to limit your options and your own potential. Leave nothing out including the prospect of starting your own company.
"There is more worth loving than we have strength to love." - Brian Jay Stanley
While you are still in school you should take a few statistics classes. Data analysis tends to be a specialized thing, but I find it interesting. More and more things are being stored in databases. More companies are starting to use all the information they have on their customers to classify them into categories. For example, I recently found out that I was a low retention priority to Bank of America. Any time one of their customer service reps pulls up my account they will see what i mean to the bank and probably wont try that hard to keep me as a customer if I threaten to take my money elsewhere.
Some links to point you in a direction
http://en.wikipedia.org/wiki/Data_mining
http://en.wikipedia.org/wiki/Bioinformatics
Exactly. If you really enjoy computing, but have found the industry isn't what the hobby was, and you're a people person (which it sounds like you are), then you might enjoy a different application of your skills, like teaching IT (or even teaching math). But for god's sake, get out of the subject altogether, if it doesn't interest you. Sometimes it's hard enough to enjoy when you have a passion for it.
I'm a senior in a five-year Computer Engineering program, so I'm not sure how much help this will be for you.
I just recently finished a long co-op assignment doing business analysis, and if you are not one that likes to do a lot of coding, but likes organizing big technical projects and talking with many different areas of a business, then this might be a good route to consider.
I personally did not like it because I'm the type that likes helping out in what I do best and love most: getting "down 'n dirty." I've also dealt with a lot of people who only understood technology and computing from a surface-level standpoint, which is often just right for a business analyst (not too technical to sour the project setup, but not too business-oriented to be lost in the way of things).
Good luck!
we thought that scam was over, with some of the perpetrators on the way to jail. what a difference a day makes? eye gas it's all about your perception, combined with the greed/fear/ego catalyst, that makes us keep doing (the same) less than useless stuff, whilst ignoring our purpose for being here/anywhere.
System administrator/Network administrator - if you like playing with hardware Sales Engineer at a software company - if you like to travel and interact with customers Software Development Management - if you like telling people what to do.
Although we don't need any more of them, the answer to your question is the Project Manager path to IT management.
You would add a PMP certification and for fast track an MBA, then talk enough Java buzzwords to get by. Being able to prototype Windows screens with VB or C#, lay out web pages, and SQL query databases like your problem log will make you a star.
Before you know it you'll be a CIO.
rd
I've spent plenty of time working entry-level IT jobs doing various kinds of help desk type work, and so most of the exposure I've had to the field is related to support of other people's computers. I enjoy helping other people out, but I'd rather not be plugging things in and restarting computers the rest of my life.
of why I decided to become a mechanical engineer and not a computer engineer or computer science major. Of course, here I am, sitting at a desk writing code all day.
One of our competitors trademarked the term "hypothesis". From now on, we will call them "boneheaded ideas".
If you're not into the trenches of hardcore coding all day and have good customer service/documentation skills, maybe consider System Design (often called Business System Analysts in places I've been). You'll probably need to be good at Visio or other charting tool. In my experience you're taking the customers goals and designing the structures to meet their spec and some screen layouts and passing them to the software developers to implement them. You'll probably have some QA/testing responsibilities too. This can incude the database structures, hardware resources, visual/UI, etc. I haven't gone down this path because I am infinitely better at reading scribbled code off a napkin than a use-case or anything like that. I have friends that like it and are gunning for Project Management gigs in the long run.
If you're really good at desktop support and have any experience or are a fast learner, a Jr. system administrator role is a good choice too; managing mail servers; SANS, etc... other more traditional operations/IT gigs. You'll have minimal programming generally other than some scripting which you'll do mostly out of trying to minimize repeatitive tasks.
The biggest thing is that there is no right-or-wrong answer, and you're not married to it forever. I started in desktop/helpdesk to may my way though school, then went to system administration and quickly realized I don't like getting screammed at when poorly written IBM software we purchased doesn't give us 100% uptime on aging hardware with poorly written integration by hack programmers. I've always liked programming and had done enough "on the side" to land a programming gig and am much happier though my code isn't landing spacecraft or anything. Whatever you do, don't settle for something you're not happy with; and if you find a really good working situation (stable, good boss, good co-workers, not too bad of a commute) think long and hard before jumping ship for an extra 10K a year.
Forgive my spelling from time to time. I'm often posting during short breaks.
Download 4oD, and watch series 1, 2, and 3 of the IT Crowd, online. This will make you laugh and make you want to commit suicide instantaneously, unless you are a ginger good looking bird, or are Irish, or a geek with an afro with a parting. They even feature Slashdot in their shows! See if you can see which one!
I think that would be better than sales for you, but then again, if you're a people person, technical sales can be very lucrative.
Read, then apply.
Let us not become the evil that we deplore.
Actually worked for an Adult Entertainment company for about 18 months. Great experience - high-demand web programming is like Broadway for coders. Where else can you have an audience of a few million every day?
"Beauty is the ultimate defense against complexity." - David Gelernter
If you do not think you want to code all day (which is why I went to school to get a comp. sci. degree), then perhaps a 'supporting' field, like project management?
Then you could work in I.T. of almost any company, and work with programmers, software, and such.
Uh, Linux geek since 1999.
The positions which are out there are generally these in a large organization -
The lowest end position would probably be help desk. This is a "level 1 position". If you have a BS in Computer Science you should avoid this position if possible. The position that is a step up from this is a Windows Systems Administrator. This is a "level 2" position. There are also UNIX Systems Administrators. This is a level 2 position as well, although it is generally considered a little bit above a Windows Systems Administrator. There are also more esoteric systems administrators like Mainframe administrators, but I'll stick with the more common positions. Years ago, there really were not a lot of storage administrators as it was considered just a function of a sysadmin, but storage administrator nowadays is 80% of the way to being a real, common position like the others (only 80% because 95% of ads for storage admins ask for some Windows and/or UNIX sysadmin experience).
There are other administrators as well. Network administrators deal with switches and routers. DBAs deal with administering databases.
Then there are programmers. While there's a lot of talk about how a good programmer can program in any language, they are pretty much divided by language. I would say Java is #1 right now. The #2 language would be C# (and from the little I know, most ASP.NET is done in C#, but my familiarity with this is limited). Then there's other languages as well - C, C++, PERL, Python etc.
Then there's security people. They usually sit by themselves and no one knows what they're doing.
At level 3 are engineers. They usually do engineering and architecture, have a decent amount of experience and know a lot. They can be found on the administrator and programmer side of things.
As I said, this is at larger companies. At a small company with few IT people, you can wear many hats. I am mainly a UNIX sysadmin, but I have been a Windows sysadmin (from NT 3.51 to now), a network admin running Cisco switches and routers, I have done security, putting access lists for network access. I have also installed and managed databases, and even done some programming, although the programming I've done has been automation scripts you'd expect a UNIX sysadmin to write.
There are pros and cons to each position. Sysadmins generally work from 9 to 5, but are more or less oncall 24/7. Programmers usually don't get called in the middle of the night, but unless you're lucky you often have to put in long hours at the office, especially if they're near a deadline of going live on a big project milestone. Choose your poison.
I have been writing software since the 1970s, and there isn't much left in the field for "work." There may be "research," into things but the average "job" is tedium.
"Computer Science" as it were, is nothing more than a craftsman tool belt. There is no "science" left. It is all the fashion of end-user application. Web sites, social networks, e-commerce, etc. No one in the field is producing great work (and making great money) any more.
I've been interviewing candidates for the last 15 years and "computer science" is a joke. The universities are teaching a trade, not a science. Kids barely understand the mathematical basics of how a hash table works. Don't even get me started on twos-compliment arithmetic or how to evaluate algorithms.
Sure, the desktop processors and environments do a lot for you, but maybe you'll want to do something interesting some day with different types of devices like PICs.
In the end, you'll have to learn about something else, like banking, medicine, civil engineering, accounting or some such to be able to write software for those fields, but since those fields currenly pay better, why not go there first?
You say that you don't want to write code all day. I'm also guessing that you would like a job that is interesting and varied, with a minimal amount of seemingly unnecessary and boring stuff. Try getting an sysadmin job at a university or college, preferably a large one (many students and employees). Universities and colleges do a lot of varied work/research, and if you're lucky you'll get involved with many interesting projects. They also have a tradition in using open source software. You may even get paid working on FOSS. In my experience, universities can also be in the forefront in using new technologies. The work is important, but not important enough not to try new stuff. This type of work often attract smart, interesting people so it's a fair bet that your colleagues will be smart people that can really learn from.
Get an entry level programming job and work on a computer engineering or software engineering masters degree. Or try for an MBA.
Getting into IT can be a one way trip. It is hard to get back to programming/cs aspects after you get labeled as a network tech or help desk person. See previous threads on topic here on /.
My experience was working for several years while struggling to get an MS. I did work IT/support (got stuck) and it was only happy serendipity (and good connections) that got me back into software development. Getting my masters was more for the resume build than learning. I did learn, but the MS was a lot more important when it came to finding contracts and working DARPA projects.
Coding should not be more than 30% of a job. We need people than can read specifications, turn them into requirements, design an architecture, model solutions, code, integrate, document, and debug. I am sorry, but the talented and rewarded people are the ones that can do it all. The ones that can't code and prefer to administer systems are the easiest to replace.
Where I work, we do embedded software that runs close the hardware, operates in critical environments, must work every time, run for years, and be secure. The guys I give the highest performance ratings (raises) to are the ones that can design, code, re-use code, and solve problems.
I haven't coded in 5 years and miss it, so I came up with a project for home to keep me current and have fun with. I can see not wanting to do it 8 hours a day, but any true CS geek deep down enjoys it like solving puzzles and playing games. Coding is problem solving. It should be enjoyed and done well or not at all.
Take a look into SCADA. You can get into programming PLC's, working with dataradios, programming control software like wonderware or inillusion, networking, sysadmin....
Check out jobs with water treatment plants, companies with assembly lines, prescription drug makers, etc.
CS is no more about computers than astronomy is about Telescopes.
You forgot a couple:
CS is the hole in the doughnut.
CS is the whole doughnut.
CS is Dijkstra yelling "surf's up!" to submariners.
Schroedinger's Brexit: The UK is both in and out of the EU at the same time!
I've been working in the visual effects industry since I graduated (~10 years ago). I started for a small studio writing scripts to automate common tasks. Since then I've:
- built a distributed render system on top of open source software
- written animation tools for artists
- written software for animating, simulating, and rendering fur
- learned Houdini, Maya, RenderMan and many others
- written shaders
- written many, many plugins and tools in various languages
I'm now managing a team and have discovered that it's hard to find talented software developers with a solid grounding in mathematics and computer science who have the skills to work in VFX. There are plenty of hackers who can put together a MEL script, but few who actually understand the underpinnings of the systems involved.
If working on VFX for film and TV shows sounds interesting to you, look into developing your skills as a Technical Director (or TD). The skills I look for in a TD are:
- understanding of the 3D pipeline (modeling, texturing, rigging, layout, tracking, animation, lighting, rendering, compositing)
- technical competency in the software used (Maya, Shake or Nuke, Renderman or Mental Ray)
- solid background in programming (scripting, understanding of OO design, C++ desirable, Python especially)
- solid understanding of Unix as a technical user
- ability to learn and master new technologies quickly
- ability to empathize with artists and understand their perspective as a user
- strong mathematics background is highly desirable
- experience in digital or traditional filmmaking also highly desirable
The people I've worked with in the past usually fall into one of three categories:
- have a degree in computer science (or related), minored in fine arts (or just had the interest), and then took a college program in 3D
- smart people from a completely different background who taught themselves both 3D software and programming
- artists who took a college program in 3D, who then taught themselves programming
I recommend the first option, or if you're persistent enough, teach yourself the software at home and start networking online.
If you have a masters in computer graphics, mathematics, or physics, another job open to you is that of the Shader Writer. Shader writers build either complete shading systems or components that model how light reacts with materials. These models are not usually physically accurate (although that is becoming more of an option now). Things to look into:
- BDRFs
- ambient occlusion and color bleeding
- subsurface scattering
- procedural texturing and modeling
- shader anti-aliasing
- global illumination techniques
- shading languages such as RSL, GLSL or Cg
Competent shader writers are HIGHLY sought after and very well compensated.
Check out the job postings at Pixar, Industrial Light & Magic, Sony Imageworks, Rhythm & Hues, and Dreamworks Animation for more info. Also check out the forums at cgsociety.com and odforce.net.
Some nonprofits, for instance, are near the cutting-edge of social technologies and outreach and/or graphic design.
Others, for instance, are building and maintaining robust and impressive virtual communities with expansive software packages that need development.
In all cases, instead of feeding a corporate machine, you're supporting a cause - either directly (by working with people) or indirectly (by programming a piece of software, for instance, or maintaining servers). These causes really, really need support from CIS-capable individuals.
We see a lot of every kind of organization - one way to get involved in a small way is to take on volunteer projects we have listed at http://www.codekindness.org./ Just now, for instance, NPR listed some help they need - http://www.codekindness.org/index.php/projects/details/87 .
But there are other ways, too, to get a foot in the door - check out Idealist and Craigslist for job listings at most major nonprofits -- and the best of luck! --Dave / CK
First and foremost: DO NOT ACCEPT CAREER JOBS YOU WILL NOT ENJOY. I made the mistake of grabbing a VisualBasic 6 job when I'm a Linux and C++ guy. Now I've 4 years experience (3 in VB6+DB2, 1 in Linux/KSH scripting + Netezza Database warehouse) and I'm having a VERY tough time using that experience to land anything that I might actually enjoy. Your first couple of jobs define the path of your career in both the short and mid-term which then makes it easier to steer it the way you want in the long-term.
I suggest a sys-admin role. In the right place, you'll do some shell scripting, update hardware and (politely) smack the occasional end user. I'll let others speak on this as I've only seen it from a distance and don't have much hands-on with it.
Another possibility (and I REALLY really hate to suggest this, although it might be better suited to you than me) is go into a consulting firm under the Consultant or Solutions workforce. As a consultant, you'll do some paper pushing (eventually you'll help design how major, high volume applications) and some coding. As a Solutions Consultant, you'll be mostly coding.
The advantage of both types of consulting positions is that you'll do something for 6-12mo. and move on to a new project. The disadvantage to both is you'll find yourself with twice the number of bosses (Office space, anyone?). One set of bosses for The Client and another for Your Consulting Company. Personally, this drives me crazy. Also, you don't get a whole lot of say on what client you'll be working for which can be a big problem (e.g. non-smokers working for a major tobacco company ... nothing like your boss lighting a stogie in a meeting).
As a Consultant, you'll have to travel (plus or minus, depending) and make quite a bit of money. On the flip side, you'll have longer hours and more stress.
As a Solutions Consultant, you'll have less stress and it'll be easier to stay at home, but you won't make as much.
My final suggestion is Application Support. You'll do a little coding, a little debugging, interact with users who are knowledgeable about how the process should REALLY work (assuming the organization is well structured) and get the occasional amusing service ticket like, "Have the magical elves in APP-land fix the claim again."
Seconded! If you're ok with doing some coding but want a very technically interesting line of work, take some classes in bioinformatics or, better yet, systems biology if you have the math background (typically at least one semester of differential equations and possibly some linear systems). You could easily get a job as running a lab's high-performance computing requirements. If you're interested in further studies down the road, that kind of work experience positions you very well for a masters or doctoral program in a multidisciplinary field of study. If taking those classes isn't an option for you, find a faculty member that does that kind of work (look in CS, EE , bioengineering/biomedical engineering department, biochem, microbio, or bio for faculty) and get into their lab. Most of these guys will do anything they can to get someone with a CS background and you'll almost certainly be able to get full-time work with that lab or many others like it once you graduate.
Here's some advice someone gave to me.
First decide what you like about CS/IT more. Coding, Admin, Servicing. If you don't like the applicable side, look at the theoretical side and continue your education by doing a masters by research (or something).
Then decide on a subject you enjoy. Eg: Math, Billing, Astronomy, Making Cheese, Etc. And if you could do it for fun.
After all this, think about what you could do with these two things and see if it's available. If not: Rince, Repeat.
... such as http://en.wikipedia.org/wiki/McMurdo_Station McMurdo Station, or http://en.wikipedia.org/wiki/Kerguelen_Islands the Kerguelen Islands, both of which need CS people for interesting scientific opportunities (and are way, way out of the way). Check out the employment pages of both for more info on their jobs.
Newsflash: You are not going to be hired into an Ultra-Cool Managerial role at some NASA-come game-studio straight out of college and with no experiance.
Given the chance get into a good development role bite their hand off to accept, if you pass these up you'll only end up doing some crappy support role, and thats a few years wasted.
Once you've proved your metal as the best god damned programmer in the place (great personality too!) then you'll find yourself in a position to go in whatever direction you want, only now with the respect of your peers and the experiance needed to really do the job well.
During your year or two as a programmer, you can decide what you want to do next based on the first hand experiance you'll gain of each respective role, it is a win win.
You feel sleepy. Close your eyes. The opinions stated above are yours. You cannot imagine why you ever felt otherwise.
I don't know of ONE good sysadmin that doesn't have programming knowledge of some decent degree.
Do you want to run everything you do manually? Do you want to go into tedium on a regular basis to do regularly scheduled tasks? The whole point of a GOOD sysadmin is that they don't do SHIT, they just automate the hell out of their environment and let it go.
That goes for Windows as WELL as *nix.
If you want to be a good sysadmin, learn how to program. Whether it's bash/perl/python, or VBScript or Powershell.
The price is always right if someone else is paying.
I went into system verification (e.g. testing). At the right organization, this is a really interesting and challenging job. When your company makes a system that sells for a few million dollars and consists of dozens of racks of equipment and is expected to have 99.999% uptime, testing is not something that you hand off to interns. My field was telecom equipment, but there are other fields that have highly complex products where testing is just as hard as product development.
The thing I liked about the job was that I was able to understand the product and its application much better than the software developers because each developer only had a narrow view of the product. I was also able to use my software development skills to develop automation tools to make my testing easier, but I never had to spend all of my job only programming.
As a tester, I had two views of products and the business. I could understand how customers use things and what their expectations and needs are and measure how the product meets that. I could also see the development side and understand the engineering tradeoffs being made and help do low level debugging of system failures.
While in school, I had no idea that there were jobs like this. Most test jobs are crap, because it is considered grunt work and given very little respect. But at the right place, it can be a great way to use your technical skills without just hacking on code all day.
I enjoy helping other people out, but I'd rather not be plugging things in and restarting computers the rest of my life.
Then technical training might be perfect for you. However, you can't get there straight out of college. You have to pay your dues (get some experience) first. I think that as long as you know what your goal is, you can treat it as part of preparation and enjoy it, whether it is QA or tech support, or netadmin.
Technical trainers are sought after, reasonably well paid, travel (sometimes too much), mix with a lot of different people, and rarely get bored.
Sounds like something you would enjoy? Well, then start earning your stripes. It will be worth it.
End anonymous moderation and posting on
You're right because you're more likely to find people who don't like to code working at MS which explains the quality of their software.
Have you thought about a career in computer forensics?
It is a field that brings a lot of new challenges on a regular basis. People are always trying to find ways to cover their tracks on computers; you get to do the opposite.
There are specialized schools that you can go to for this kind of training. You'll likely end up working for a law enforcement agency, or for a company that specializes in forensics (which will in turn be hired by law enforcement or lawyers).
There's worse things in life that you could do with a CS degree. (o:
Love sees no species.
The reasons you stated are exactly why I decided on electrical engineering instead of computer science, and my alma matter has one of the best CS dept's in the country.
It's incredible how many people think being able to stitch some crap together, likely barely-working and in Java, is a skill set these days. Without understanding the mechanics behind what your code is doing, what's the point? (Speaking of which, I've met "developers" who don't know what a pointer is. WTF?)
Albeit, it's not that often that I need to delve down to (or below) the opcode level, but it's sure nice to know that I can when necessary.
**AA: a bunch of mindless jerks who'll be the first against the wall when the revolution comes
I hold a B.S. in Computer Science.
Computer Science is basically the science of converting mathematics and logic into a series of instructions that a computer can understand. This is known as "algorithm development". The physical embodiment of this process is programming, or "writing code".
In spite of the fact that it involves "computers", Computer Science is not about computer tech support.
If you do not enjoy algorithm development, Computer Science is not for you.
A work that expires before its copyright never enters the public domain and thus enjoys eternal copyright protection.
Sounds like you don't want to provide support or code. I'm sure someone said CS was good for high paying jobs but unless you love what you're doing then you won't get far.
If you're not willing to code or provide tech support there isn't much you're going to be able to do at the bottom.
To an extent alot of jobs are going to be about customer support. Whether you're having to reboot someone's XP desktop because they've complained or reboot the server at 3am because someone's complained.
As well what exactly don't you like about coding? I know writing scripts to run server tasks isn't exactly like coding a desktop application but it's still coding to an extent. So server administrator might not be an option.
There's always project manager but then you have to deal with being the first in line to receive shit when things aren't going well and if you don't it well then you'll also get no respect from those you're managing.
if you're considering continuing your education, you might want to look a bit into the "information" aspect of a "master of library and information science".
find a library school that's heavier in the tech aspects of the field. some schools even have the option of combining the MLIS with a MBA.
a computing+information+business education could have you set to become the founder of the next "google" type of company, or at least a corporate CIO after just a few years.
Consider a sales job and work for a software company or professional services company. Becoming a sales engineer is also an option. You can use your technical skills and abilities to work with people with a big potential financial upside. Some of the most financially successful people I've known have been tech-savvy sales people(and not a used car sales type in the group). Some people claim that sales is a high pressure occupation. It can be, but what isn't these days. There are plenty of books and tutorials out there to get you started and help you succeed in the long run. I was a computer science major 27 years ago and have had the fortune to try many different software-related job functions during my career, including sales and marketing. Many consider these two as "where the action is". And the best part is that (good) sales people are always in demand (good times and bad). My two cents.
While I would never want to do it, the PM role (misleading in that it has the word "manager" in it - you don't actually have any control over people) might be for you. PMs do a lot of things from managing schedules, spec'ing features to inter-group communications. At a place like Microsoft, some teams have as much as a 1:2 ratio of PMs to devs. I imagine you'd mostly be looking at large companies that have a large number of nodes that need to communicate to reach that ratio.
You get to:
1. Travel
2. Work on new projects (i.e) not get bored
3. meet new clients (not stuck with the same PHB)
4. Work with the latest tech.
Beware of those who profit off the docile and persecute the unbelievers.
How about applying for an editor job at Slashdot? :-)
The MS thing is pretty clearly a joke, but I have to honestly ask (showing my ignorance as to open-source), how do open source projects get paid? I thought it was mostly volounteer work.
If by IT you mean working for an IT department I suggest you get out now and stop picking up IT jobs. IT departments are notoriously inefficient and run by lazy morons who realize they fail at life and whose one hope is to deceive their technological illiterate higher-ups into feeding them more resources. There will be a day of reckoning (read: downsizing) for IT.
I was a CSC major just doing lowly help desk support just like you. But then I realized that I didn't enjoy studying CSC at all. So, I switched my major to religion and quit coding for a year or two. Then, I got another desktop support job where I eventually started coding small projects here and there and worked myself into a Jr. Systems Admin role and I love it. Play around with VMware a lot and learn about admin. You get the satisfaction of helping people but without the boring reformatting of computers all the time. Also, keep in mind that you are paying to go to school to study stuff that you enjoy and you are not totally restricted by your major like they make it sound.
If you like to work with people, customer/application/sales engineering might be for you. There's always lots of openings for people who know what they're doing because many in those areas are not very technical. Also these jobs often pay better than beginner/midlevel IT and programming jobs because they're closer to the revenue stream.
thegodmovie.com - watch it
Web development is a nice and diverse field to get in to. The direction web development is heading should provide good job security... you will just need to learn how to use javascript/ajax, some server side language, SQL, and HTML/CSS. By having to handle multiple technologies in web development, your job doesn't seem as monotonous as going through some C# code all day fixing bugs or writing modules. You can also dive in to doing some graphics/ui design in the web development field if you're in to that sort of thing. I have a B.S. in computer science degree at Purdue University and I enjoy web development much more than working on desktop/other standalone applications all of the time.
You could go to a consulting company. Most slashdot readers aren't going to recommend a company like Accenture, but I was in your exact same shoes and really like consulting. I was a CS major who didn't want to code. At Accenture, I got into the architecture side of things. Today, I help enterprise (big) clients architect their systems correctly. No coding needed. The people working for me are typically a few years out of school and are already doing architectural work. Extremely valuable experience.
What isn't an "Interesting Computer Science Job"?
Reminds me of that old mathematicians' joke about there being no such thing as an uninteresting integer. The proof? It's evident that many small integers are intrinsically interesting. Zero is interesting because it can't be used as a denominator. One is interesting because multiplication and division by it yield the same result. Two is interesting because it's the first prime number. We can therefore state that for some n, the first n integers are interesting, and n + 1 is not interesting. But that makes n + 1 the first uninteresting integer, which makes it interesting.
Parity: What to do when the weekend comes.
They'll have to lobotomize you, of course, on the off chance any useful knowledge has been imparted to you in the past couple years, but that's SOP for an MBA anyway, and the fat paycheck generates no complaints. Moreover the lobotomy will insure that you don't need to worry about whether the work is interesting or even useful.
I'm trying to teach myself to set people on fire with my mind... Is it hot in here?
Until India and Pakistan destroy each other in their impending Mutually Assured Destruction, don't count on finding a job in CS outside of the usual areas (e.g. Sillicon Valley, New York, Boston, Chicago). Its been two years since I've had a job. I have better chances of getting carpel tunnel syndrome than finding an entry-level CS job in the St. Louis area. With no money for a car or to move to those popular locations for CS jobs, I'm S.O.L. until the economy recovers, or until American companies stop outsourcing.
The Rapture is NOT an exit strategy.
besides programming and PC level work. Server admin (Email, Database etc) Firewall/security specialist, Router/WAN specialist, VOIP. Usually one starts off in the PC level/printer repair work, and works ones way up as their abilities allow. If you are suited (eg have the aptitude) to the higher level stuff (WAN, firewalls, servers etc) then you can learn it and move into that area. Certification tests help, both manufacturer specific as well as generic ones.
Companies having buildings full of specialized programmers are no more. Unless you have a vast pool of polished programming technique and a polished portfolio, you're competing against a horde of recently laid off programmers with way more experience than you do. You're better off learning some Indian language and translating between the workers and managers or moving to India to get the programming job.
As a student meteorologist, I have come to learn that meteorology involves a LOT of computer programs, more than I had assumed. There's computer modeling of all kinds, there's the maintaining of public servers, there's the supercomputers, etc. I have 3 CS graduate friends that work for the National Weather Service's radar office in Norman. They do many things with the data, including new algorithms for better analysis and filtering. If that's the government, then realize there is also a big field in the academic and private sectors relating to weather also.
I graduated with a bachelor's in CS in December, 2001. My first job was for a huge manufacturing company. It was like a three-pronged fork: I did training, development, and support. We had a custom in-house application: an enhancement or "plugin" to a solid modeling application (Pro/ENGINEER). I was on a team of three, taking support calls, developing enhancements, bugfixing, and even going on-site to give a two-day training class.
That job was pretty fun, at least for the first few years. Towards the end of my five-year tenure there, I became less of a coder and more of a "project manager". Getting a step closer to management revealed more bureaucracy to me, and it started to get frustrating. I started thinking about some kind of internal transfer, when a friend called with an opportunity: come work with him at the trading firm he and another guy were starting.
So here I am, two years into the trading gig. In the parlance of this industry, I am a "connectivity developer". As our business grows and expands, I basically write the same programs over and over again: one to provide market data to the trading logic, and one to manage orders. I more or less "code all day".
I took the job because I wanted to do more development---in my previous job I felt I was getting too far away from the code, and wanted to stay more technical. What I found when I got here, though, is that spending the first five years not doing "hard core" coding (i.e., only spending about half my time actually programming) made me a weaker programmer than I thought myself to be. Perhaps another perspective is that the trading industry simply demands better coders---I have definitely improved since working here.
One of my points in all this is that you said, "I don't think I would particularly love to write code all day for a living either." I interpreted that as some coding is OK, not just all day every day. And my first job basically was just that---some coding.
Get a Phd and do real Science. AI. Intelligent agents. Autonomous space exploration robots etc.
Otherwise you'll end up a glorified high tech janitor burned out and bitter.
putting the 'B' in LGBTQ+
... was a job with NOAA. They're usually looking for young college grads with science degrees. It's considered a branch of the US government and is organized like the military, so the pay probably isn't that great, but the benefits should be good and there are plenty of travel and learning opportunities.
I regret not looking into it further, but by the time I had finished my degree I was married with kids and couldn't just go away for weeks or months at a time.
You can find out more here: http://www.careers.noaa.gov/
On this line of thinking, any deep knowledge in a niche area can be very useful. It's usually rare to come across computer programmers who are also experts in , and as such, in the right place, they are in high demand.
Generally you'll find an expert in a given field, who needs some software to do a task, but has *NO* idea about how to write software, at all. Quite often, these people hire programmers who know basically nothing about the field, and the expert ends up designing the system and being the manager, and often the result is exactly what you'd expect to get when a non-developer designs a system.
Being the person that bridges the gap is incredibly useful. Just make sure that the field is something you have an interest in anyways.
I've personally worked in a few fields like this. To give you an idea, I spent a few years building SCADA software for control systems. This meant I also spent time physically wiring up motors and sensors and such to I/O hardware, and setting up networks and then writing software to communicate with and control all this stuff.
I've also been involved with some open-source voip projects, so a lot of that programming involves talking to voip phones, which meant I had a desk full of hardware to play with, instead of just staring at a screen writing code. It may just be me, but I find a certain satisfaction when I can interact with code I've written using objects in the real world, and not just as interfaces with a screen and keyboard.
Speak before you think
I get quite a lot of money for integrating open source tools to specific client needs. It's much cheaper, and more flexible, to pay my salary to provide access to a huge range of tools than it is to specify, purchase, and implement one closed source project that turns out to be complete vaporware or where the company goes belly up and the software can no longer be supported.
It is a great joy of an open source developer's career when, during the time that a closed source company or consultant is writing their bids and release schedules and Gant charts and Powerpoint presentations, an open source developer has already found a compatible tool, tested it, modified it for local use, and put it in production. This has happened to me repeatedly throughout my career. On occasion, I've been overruled and the closed source tools used for 'business support' reasons, and on several of those occasions I've seen the closed source toolkit thrown out a year later and the entire system rebuilt from my notes.
That is an event to warm one's heart on those long, cold nights sitting in the server room repairing a mess.
I have been coding biz apps for even longer, and I sympathize. I recently transferred to a group that produces back-end serving software, which is a really different challenge. There is no UI, no RDBMS, and we are using a new programming language to boot. These opportunities are out there if you are willing to change.
Unfortunately most Computer Science degrees these days are at least half IT. If you do not understand the following sentence then you probably did not really get an education in Computer Science:
Computer science does not require a computer.
Apparently "CS Degree" has become keyword for "Tradeschool" these days. Fucking disgusting.
"Strangers have the best candy" -Me
You could work in neuroscience research labs or other non-CS labs, all over. Most of them require a specific hardware/software manager who also does programming. You end up doing about half as much as you otherwise would. What programming you do would get done according to very specific parameters, so it's not that stressful. There's even wall street firms that hire newb CS guys. You start out assupport, but you get your chance to move up.
"I may be synthetic, but I'm not stupid." -- Bishop 341-B
As a professional developer with a little over a decade of commercial experience, I can assure you that the jobs where you have to write TPS reports, attend constant meetings, write reports about attending meetings, attend meetings about reports, and occasionally meetings about meetings or reports about reports are toxic worthless environments. About 5 years ago now this trendy thing called "Agile" happened to the software development world as a way to put a bullet in crap like this.
One of four things is going on with software companies now 1.) Agile is understood and people will find creative ways to fire anyone who want's to build a Dilbert empire 2.) Agile is being adopted and the toxic environments get transformed into livable ventures as Agile practices get successfully adopted and the toxic people are pushed out, 3.) Agile is subverted by PHBs and the toxic sources kill it's adoption while all the worthwhile people leave it to fester 4.) Agile is ignored/blocked - the environment is already dead AND toxic.
You can fight like hell to get into or stay in company #1, pitch in to help company #2, avoid or flee from company #3, and short sell the stock on company #4. Also, as a programmer, you should be writing code that either makes money or reduces costs in a niche or market that is growing. If the market isn't growing, move on to another domain. If there is no revenue associated with the lines of code you write, go where there is. As a buddy of mine says, "NEVER be part of the cost center - ALWAYS be in the profit center!".
At any rate, if you don't want to write code - no offense, but get the hell out of the way and make room for those of us who do.
*** Sigs are a stupid waste of bandwidth.
I can't quite figure out how to reply to this without sounding snarky towards the parent, who clearly has a different view of the field than I do and who am I to say which view is right? But feel I need to say- we're NOT that desperate anymore. The boom in bioinformatics was about 10 years ago now (pause while I shudder at realization that I have been out of grad school for that long....) I work in this area, and have since leaving grad school. When I graduated in 1999, there weren't really any bioinformatics grad programs, and the field was populated by a mix of biologists learning computers, computer types learning biology, and some physicists. Now, there are plenty of grad programs churning our bioinformatics MS and even PhD graduates. The only people I know working in bioinformatics w/o some serious bio background now have either been at it for many, many years or are pretty much pure coders.
However, as one of the previous replies said- there is a career to be made by being the interface between a specialized customer set (in this case, biologists) and the software developers. I've done that quite a bit, and have managed to keep myself employed. But you need to have credibility on both sides- which means a strong bio background (an advanced degree helps) AND an understanding of how software development works (it helps if you've coded).
You could also look at project management. Lots of folks laugh at project managers, but that is usually because they've never worked with a good project manager. Once again, though, I think it helps if you've done some coding, both for credibility with the team and so that you can make reasonable estimates about how long development tasks will take, etc.
There are a few different "tracks" you can take with a CS degree. What you find interesting is largely subjective.
* Software Engineer
Pros: Get to design, code, and support software
Cons: Constant threat of being outsourced
*QA
Pros: More structured than engineering
Cons: Not as glamorous as the software engineer (is that glamorous?), have to deal with engineers that don't unit test. Constant threat of being outsourced
* Support
Pros: Get to interact more with people
Cons: Dealing with irate customers. All of them are irate.
* Services
Pros: Lots of travel, interaction with customers. Unlikely to be outsourced.
Cons: Lots of travel, interaction with customers.
* Software architecture
Pros: Just design, less coding and little support.
Cons: Usually much longer hours, more meetings than a regular software developer. You'll need to have been a developer for a while first.
* Engineering manager
Pros: Get to kick around your underlings.
Cons: Have to deal with lots of management issues. Lots more meetings. If you're more "hands on", that means putting in a lot more hours.
* IT/Operations
Pros: you get to deal with cool hardware, usually will have a fair amount of downtime.
Cons: Your ass is the first in the fire if something goes wrong. You may have to do deskside support as well.
All of these also include dealing with company politics and corporate BS; the ratio of which is determined by the company.
Developing is only a small part of the computer science world, there are a lot of other areas that may interest you that's not on the conventional "CS" path.
I remember when I was in college, everyone around me saw the only professions they could have evolves around some kind of developer job. The truth is, if you have a good solid foundation in Computer Science, you can excel in other areas such as networking and systems engineering as well. I got myself into networking, and my coding skills came in very handy. There are some very bright network engineers out there that have not been formerly trained to write code. They can do their job very well, but need to delegate writing a script or fixing a short piece of code in an open source project used to someone else. I became that person that could do it all, thus distinguishing myself from the others.
During my holidays I work for a engineering consulting company that has its own semiconductor group (and I just identified it for anyone who knows it ;), and sure, I end up writing code (python, assembler, c, ...) / documenting stuff most of the time, but the sort of low-level problems you deal with working with a small group of people developing a processor / ASICs make every day interesting.
I'd say look for a company where you will be working with a smallish team, but in a wider engineering context, with scope to work on something that varies, rather than something monotonous, in other words, maybe look for a job in the research and development group of a larger technology company, even if you just start of testing things. Or find some small startup company doing something you find interesting, and don't necessarily expect to still have a job with them 5 years down the line, but go out on a limb and do something interesting.
On Friday, I was cooking BBQ in Central Texas.
On Monday, I was sitting in an HR room learning about big corporate American benefits before I started learning to write GN&C software for the space shuttles.
It is hard to believe. The odd thing is that CS majors didn't do well in that highly structured environment. Most felt is was too controlling and left the job quickly - after a few weeks. I stayed for 5 years.
I really should have pointed out that I am not myself in bioinformatics or structural biology. You were actually less snarky than need be as someone IN the field correcting someone who is not, so thank you for controlling yourself!
I have an interesting job:
I provide business intelligence for health services.
It requires my CS degree to perform the analysis and make reports people can understand.
It requires the whole of my brain because I have to learn a whole new industry and know it better than many of the players - because I have to know not only what one hospital does but how other hospitals do it differently.
It is constantly varying, because once you produce analysis, it's a few button presses to repeat it in subsequent years, so you have the time for future creativity.
It gives me a "warm cosy feeling" because I'm doing my part to save lives, and most people in the industry are here to do it too.
I hope you find something you want to do. I had the feeling I didn't want to "write code all day". I decided that meant for me that I didn't want a coding job, despite, as people say, the coding being only a small proportion of a day's activities.
If you're a U.S. citizen, try try the Navy or Air Force as a commissioned officer. Lots of technical jobs, and the only coding they'll let you do is on your own time. If you're really gung-ho, add the Army and Marine Corps to your list. They're hiring.... And there is life (and work) after the service. Been there, done that....
You get to apply CS concepts ranging from algorithm design to machine learning to systems architecture, and at the same time learn about a whole new field that covers topics like evolution, population genetics, biochemistry, and the genetic code. Software development can be enjoyable when you work with interesting data.
Computer science is a big field, although a lot of different areas involve some programming. In the business world programming is probably one of the widest used skills. Network and System administrators often automate common task st hrough programming as well.
That said, a lot of developers I have met have degrees in other things like Music, Mathematics, Physics, or even something completely unrelated like art (or even no degree). Though the more unrelated a degree is the harder it is to get your foot in the door. You have a degree in computer science, that degree involved a lot of math and problem solving. Other fields with strong math and a large amount of problem solving would also be a good fit.
In particular you could teach yourself accounting and get a job in the corporate accounting department. You could work as some type of analyst (not just business, but analyzing numbers). You may be able to get your door in at an insurance company or something and eventually after acquiring some business knowledge go for actuarial training. Basically it really depends what you like.
A lot of research papers in computer science involve very formal math and no programming at all. Others do possess programming behind them. But to get into the more theoretical aspects of computer science and research you really need a PhD. The typical CS jobs are those that have been enumerated already by others and they do tend to involve programming because automating things is where companies find a lot of value.
The thing to think about is how much you dislike programming. If you hate it, think about a PhD and going for a more theoretical side of computer science. Or think about getting into some other job. A Masters degree can often be used to change careers. And because computer science involves a lot of math, you can often change to a lot of the quantitative disciplines relatively easily because you have the background. So it may be something to think about. Also, often if you program well for a few years, you can get yourself into a non programming role (like management...MBA wouldn't hurt either).
Basically you got a degree in computer science, the think to do is ask yourself what you like and then try to use that to shape your career. If you are really excited by the theoretical stuff maybe you will want a PhD (although some research is pretty practical and contains quite a bit of programming, so you may have to forge your own path here too rather than getting thrown any which way). If you just like the math, maybe you want to do something non CS related or even data analysis (just analyzing a bunch of data from a SQL database in spreadsheets and stuff). Based on what you say about helping people, I'd say look into IT Support, higher level help desk people often make a decent salaries (the help desk manager at one of my employers seemed rather well off and she wasn't married).
Prior to going into computers, I worked as a (non-technical) consultant that got thrown into a wide variety of jobs at different firms in the area. Later, while studying computers, I went to the school's career fair and was completely freaked out. It was pretty much all of the same employers I had seen from my consulting days and there was no way I wanted to work for any of them. Luckily, I ran into one of my prof's shortly after and mentioned my reaction. The response? "Oh yeah, those places are pretty abysmal...but don't worry, there are places out there that will fit you. They really do exist, but not at the career fair."
I found that to be definitely true. You just need to look around, perhaps off the beaten path. I ended up in a science lab writing software for research. It involved being a DBA, dev, and project manager all rolled into one. I didn't have to stick with one technology too long (to avoid boredom), I got to interact directly with the end-users every day (which was fantastic), and I had the ability to jump into a bunch of different things. The job was fantastic.
After some time at this job, I started to out grow it a bit and wanted to push myself further. I left to go to one of the bigger tech places and have found that I really enjoy what I'm doing here as well (and I don't have to work at those stuffy corporate places that I saw at the career fair).
My point? Get a job that will get you exposed to a bunch of things to help you figure out which way you want to go. I was able to figure out that I really value the human interaction piece, so I went for a job that allowed me to write code and interact daily with a business team of non-tech people.
Anyway, don't believe the hype that you won't be able to find anything that suits your needs or your interests. If you get discouraged, look at smaller companies in your areas and you mind find jobs that are interesting to you. I had some friends that found jobs at museums that needed programmers. Others go to the bio-tech field or the university setting. There are a lot of options for ways to go, despite all the negativity you get from tech sites (including user comments) about how tech people are undervalued, treated like crap, and live in a dilbert-like world. It's bull. Don't be fooled.
It totally depends what you are into, but you can get a totally unrelated masters degree. A CS degree is similar to a math degree in that it compliments unrelated fields very well.
A good friend of mine did his undergrad in CS, then got an MBA, and now works at a consultant firm optimizing and tweaking business hierarchies.
Ok, a molecular biologist*(titles may vary)-computer scientist that can hold their own on both sides of the table, it's a bit harder for people to give you the idiot look. But having a crossover skill does give you a wicked edge, the further from math-centric fields get, the stronger it gets. People will do an amazing amount of work by hand rather than figure out a good solution. For instance, a friend was looking at her data from a device, which spit out excel spreadsheets, and determining what readings were junk, and which were legit, about 20 minutes per run with a few hundred runs. After figuring out the parameters of what she wanted, I popped up a spreadsheet that she could cut and paste all her data into, and get her results in about 15 seconds. It took about an hour to get it set up. Still with a cosc degree your employable, the biology degree allows you to request some major cash for some projects, and most of the job is going to be explaining what the bio people are really looking for, rather than what they were asking for. And explaining back to the bio people why something is infeasible, and how to make it more feasible. For instance:: Biologist.. take this soup of thousands of chemicals, and do binary combinations on them in all conformations to determine the possible agents which build up the other molecules in the soup. Computationally this is a mess, 100k *100k * (400 conformations per molecule) * (ln 100k(search for molecule))) == a whole bunch of work. However if you invert the problem, it gets much better results.. Break each molecule apart in a binary fashion, and determine if the left and right side molecules are in there. computationally 100k * 20 * ((ln 100k) * 2 ) Anyway, your garden variety biologist isn't going to find these optimizations. It's not their way. Baseline is that bio folks need computer folks more than they realize, and the amount of incoming data isnt something that can be handled easily anymore. Anyway, this rant is brought to you by a tech that fixed machines for 10 years before going back to school for degrees in Molecular Bio, and Computer Science. Figured fixing machines all my life would be a waste.
The main way in which you're going to find a job that interests you is having a friend in that line of work. A personal contact is often an advantage, even over more qualified people. Failing that, study as long as you can until the previous falls into place.
Software engineering is a relatively cushy job - good pay, sitting comfortably and thinking and writing. Of course it has its annoyances (meetings, bad managers, ridiculous deadlines, some coworkers more motivated while others get in your way, etc.) I used to think when I was starting college that I didn't want to spend my life sitting in front of a computer - even though I'd already seen by that point that writing software was one of the things I was best at, had a real aptitude for. So I got an electrical engineering degree, thinking it might lead to some slightly more physically active work of some sort (I had no idea what) and less carpal-tunnel syndrome. But my grades were disappointing at times, so maybe it was not right that I was doing something a little to the side of what I really loved most. I liked the digital stuff but had a hard time with anything too math intensive (semiconductor stuff, e-mag etc.) CS would have been so much easier for me.
Then when I graduated, I happened to land a software job. After that got my career started, there didn't seem to be any point in going back (look for an entry-level job in a different field, or get a big raise by taking the job in which you already have experience... hmm tough choice). So it might turn out the same way for you - you tend to get sucked in, because there are so many software jobs and it's kindof fun and pays well. Unless you are really determined to do something else... but then I guess you will have to think of those ideas yourself. If you were more entrepreneurial by nature I guess you wouldn't be asking here "what do I do now".
You could always go on and get an advanced degree while you figure out what else to do. I wish I had done that, but my financial situation was bad (came from a poor family, had to work my way through the university) and I was so ready to go get a real job and make some real money. :-) Then after getting sucked in like that you don't feel so inclined to go back to academia, although it sure would have been a good idea. (Maybe I still will, but it's so much easier to procrastinate. And I tend to think my time might be better spent starting a company... something else I procrastinate too much.)
If I had it to do over (and could somehow figure out how to afford it), I'd have gone to MIT or University of Indiana or some other place that teaches in Scheme. And I'd go right on and get a master's or PhD after that.
Of course take every advantage that you can, of summer internship opportunities. I didn't do much of that: wish I had been able to find good ones. I have worked with interns in my career and seen how they tend to be sucked in too, which can be an awesome thing if you get the right internship at a company where you'd really like to work.
By all means put off getting married as long as possible (or maybe never do it)... as emotionally satisfying as it is, it really does slow you down from whatever you planned to achieve.
if you want to make money doing something interesting, consider going into the finance field. i know, i know -- the industry has been much maligned over the past few months (and likely for some time to come), but while they have been shedding plenty of front office jobs (ie. the traders/structurers/sales ppl) these firms will continue to be building, or at least redeploying, their IT departments. the fact is that in finance, building out IT departments is like an arms race, even in down times like these, as calculations on complex financial instruments (like CDOs, natch) become more and more intense. shaving minutes or even seconds off a calculation can literally mean millions of dollars, and that will be reflected in your compensation. CDOs may be gone from the current landscape, but surely there'll be different, and more complicated, instruments to come -- you don't even want to know the kinds of things my group is working on, but it involves many monte carlo simulations that span large server farms.
other benefits include working with the latest and greatest hardware (you should see the rigs the programmers get in comparison to front office staff). also, you'll often have a lot of latitude in whatever platform/design you wish to use. the overwhelming desire of the higher-ups is simply to get something working quickly and correctly. how it's done is usually up to you. finally, you'll often be working on some pretty interesting and challenging problems, though it helps if you are interested in financial topics.
downsides? it's a very demanding environment and the hours can be bad -- but if you're driven, this is usually not a problem. also, for the amount of work you put in, your compensation (though still very generous) will always lag behind that of front office personnel. however, if you're any good, it's not difficult to parlay an IT position into a front office gig, which is what i did. yeah - true, that job market has seen better days, but IT is a great place to stay dormant (yet, visible) until the industry recovers (it will) and the pay returns to exorbitant levels (ditto).
if you don't want to make money tho, doing something like engineers without borders sounds pretty interesting.
The US Patent Office is always looking for Computer Science people to examine patent applications. No coding or fixing other people's computers involved. Plus, there is no more direct way to keep out bad software patents.
Sounds to me like you're more happy in working with the people; the human factor.
There's a DESPERATE need for IT geeks that can talk normal. That can understand a customer's need.
Try to get some extra courses from economical engineering. Try to chase information architect-style profiles; try to deepen your knowledge of use cases, domain models, ... 90% of IT projects fail because of bad communication; if you *are* able to communicate, your career will skyrocket.
Me, I look for IT problems freelance, and offer help. This is the real fascinating problem, because 20% of my job is coding, and 80% is talking with the user: what do you need, what is the problem, ...
You'd be surprised at the difference tech-savvy social people make for a project.
And if you don't enjoy talking to people: stay in academics, develop your own programming language and don't bother me again! :P
Related to that, learn to do automation for big pharma etc - a lot of drug development is now automated screening and data analysis, looking for lead compounds. When I was in industry, the guy who understood the automation left (got headhunted IIRC), and I suggested a buddy of mine with no post-high school bio apply (brand new master's in robotics) - he didn't expect to get it for that reason, but he got the job and they taught him the bio on the fly (and after a few years, he got headhunted too).
Find a job where the people there are into technology. Some places, the developers consider software to be a job, and when they go home they watch TV and go to sporting events. Other places they go home and collaborate on projects, build Battlebots, and read Make magazine.
Talk to the developers. You might think that the company where they build robots with lasers would be staffed with industrious geeks, but it might turn-out that the corporate environment stifles such people.
You might want to talk to people in user's groups. Find your local LUG, IGDA chapter, ACM meeting, or IEEE charter. See where those people work (or don't work, if they aren't your type)
The Russians have won. They have made the world a cesspool of distrust, greed, fear and hate.
Community colleges do not teach problem solving skills. They teach skills in using software. This cannot lead to any good job. Problem solving skills, mathematical background, graphics, Operating Systems, Data Base, AI and a whole array of courses are needed to create a super guy who can ask for sky. Without an excellent degree, at least MS level and hands on experience on heavy coding, forget about IT jobs. Why jobs are moving out of US, is most universities collect money from students+ govt. but give you an illusion of quality education. Your simple degree is useless. Russia teaches real Engineering/Science courses and are producing best problem solvers. But they are doomed because of their lack of English language skills. So, go and find a job in movie industry to share your people skill. IT is not for you unless you have deep passion for IT and aptitude to assimilate qualitative knowledge to excel..
The best thing I ever did was to go write code for a while. Not long, mind you, but a solid year and half of writing code does wonders for your programming skill (provided you /really/ get into it). You'd be amazed at the number of CS grads that haven't a clue.
After 25 years working in software, I discovered a few years back that programming the same old thing in yet another language just didn't do it for me any more. I need to work on new and different kinds of problems. After a few early years in commercial programming, I wandered into R&D where I've worked on AI systems for the military, then supercomputing problems for the government and then for scientists and engineers in academia. Lately, I've found myself analyzing medical images as part of drug design. In addition, I've become intrigued by vision systems on robots as well as computational biology, perhaps elaborating gene networks or modeling disease. Maybe that's where I'll go next.
However, I'd recommend a different path than the one I took (part-time graduate study ending in a MS in CS). To work independently in R&D, you'll want at *least* a MS, preferably a PhD, with a full complement of math courses through diff eq, statistics, and possibly PDEs. To work in engineering areas like communication or imaging, courses like signal processing, image processing, and perhaps 3D graphics will also help to open doors.
Here are a few more applications for computing that sound like fun:
- graphics, game design/implementation
- networking, new services from cable companies/telecoms, new wifi products
- secure systems, computer forensics
- embedded systems (real-time O/S, low-level software or high-level hardware)
- robotics, semi-autonomous systems
- hand held computing (IMHO, soon to be much bigger)
- data mining, social network analysis, machine learning the datasphere
- searching through or indexing of media or large content (e.g. web, communication streams)
Personally, I'd stay away from building low-level software like compilers and O/S's. This kind of work is likely to be outsourced by the heavy hitters like Intel/M$, since the needed skills are readily available in low-wage countries, and most of the infrastructure is open source (VCs seem to believe that its hard to make a profit by attaching your IP to free software or competing directly w/ the tech oligopolies).
Randy
Perhaps even special effects...
You're living in the right time and the right place.
Weasel your way into the most fascinating graduate level courses you can. Go to SIGGRAPH. Find good internships. Code for peanuts for a while, just for the experience. Mess around with a bunch of different technologies for fun.
With a bit of luck, it might pay off...
There's a job sometimes called System Engineering that you might like. At its simplest, it deals with gathering, understanding, organizing, and solving customer requirements. The type of problem solving involved lies along the lines of figuring out the best prioritization of potentially conflicting concerns (e.g. size vs performance vs cost vs supportability vs logistics vs vs vs VS!!!! oh it's so maddening.)
A lot of software-only houses typically expect the programmers to also do the system engineering so the distinction is not always clear. (In fact, the Agile/Extreme Programing crowd get mad if you talk about system engineering and requirements, but in fact they're doing system engineering too, just in a way that is arguably more appropriate for rapid software development.)
But there are a lot things in this world that need to be built which include but are not limited to software: aircraft, military systems, factories, robotics, militarized flying robot factories, etc. Basically, it it used in the development of any complex system, whether or not it's called System Engineering. Being a System Engineer with a CS background is very valuable, because you better understand what's important, say, to define as a a managed interface within a software architecture, and what to leave to the software developer to solve according to the performance requirements.
System engineering can eventually lead into System Design (often called System Architecture, but that's insulting to real Architects, and illegal to represent yourself as one in Texas).
In general, no employer will start a new college hire as a designer, because they'll want you to have the experience of implementing someone's design first By the same token, system engineers aren't the only ones who go on to be System Designers. Any experienced engineer, including programmers, find it a legitimate career aspiration in, say, the second decade of their careers.
For now, "interesting" is anything that pays money. If your paying job is dull--join a open source project for fun. Now, If anybody has any Interesting PAYING JOBS, Please let me know. Stubby.
Nah, you already have a monopoly, but maybe he can sell tickets to watch you perform.
If you go into research, you don't spend that much time coding (your deliverable is a research paper, not a program). There's also product management (though that's fairly high up the tree in most companies), and many companies have a growing interest in "user experience". Realistically, the user experience work in most companies is a bit of software engineering that people had forgotten about in the past ("hey, I've got a bright idea -- maybe we should check the specifications actually produce a product that the users can work with!") but that has come storming back into fashion. Pre-sales work is also a little different -- trying to check that your technology could deliver for a customer (or persuade them that it can). Or if you like playing with toys, embedded devices and control is a good area -- not just writing code but playing with geeky bits of hardware (like, if you're lucky, self-driving tractors).
Go into Controls Engineering especially if you like to fool with electronics. It's a nice hybrid of programming, basic electrical engineering in the office and going out to sites getting your hands dirty and making everything work. I have a CS degree and picked up the electrical engineering rather easily through on the job training.
Not only is it excruciatingly condescending, it's quite wrong, even if a computer scientist was the one who originally uttered it. Computer science is very damn well about computers because there would be no computer science if you took away the computer.
It's not wrong. It's substantially correct, even if Dijkstra takes a little license by introducing a bit of hyperbole. He *didn't* say computers have no place in computer science or anything ridiculous like that. He's explaining, roughly, that actual computers are really only tools and that the concrete tools themselves do not encompass the field of computation.
Of course, that changes if your definition of "computer" is wide enough to include, say, something between its original meaning and the entire universe in which we live. And having a rather application-oriented viewpoint, I do think the concrete tools are one of the most interesting part of the field. But I also think Dijkstra's comment is extremely useful for performing perspective inversions among people who haven't understood the field is wider and deeper than the conventional set of Von Neumman architectures we've managed to make so far.
If there were no digital processors, data storage, or networks, there would be no reason to develop solutions to problems that are unique to information systems alone. No reason for someone to sit around all day dreaming up the optimal programming language for a given application. No reason for teams of graduate students to work tirelessly in search of the best human-computer interface.
As it turns out, the field is bigger than these things too: even if you eliminated every last one of these things, theoretical computation would probably remain interesting to some people, and indeed, you can find a significant amount of theoretical work done back before most of these things existed in digital form.
I'll agree that there's a great (almost overwhelming) amount of math in studying the theory of computer science, but you can't honestly say that a computer science graduate is merely just some sort of specialized mathematician and leave it at that.
As a Math grad and a programmer of 20+ years, I'd agree that CS is best served as a separate discipline drawing from mathematics, physics, chemistry, EE, and more. And yet you could in fact devote yourself entirely to studying specialized mathematics, never writing a single line of code, and still be working in computer science.
It doesn't do justice to those in the field and it misinforms those who don't understand what the field is all about.
I'd agree it's hard to do the entire field justice in a single sentence, but far from bounding it badly, this phrase invites people to look outside of preconceptions about the field and potentially see something beyond the boxes and screens on their desks.
Tweet, tweet.
I wish I had mod points; Easily the best comment in the discussion.
Of course, it's too bad what you say about compilers... really, that's where my interest lies. I guess I'll just have to make my own way there. Of course, my interest in compilers is optimizations not the standard parser -> IL -> machine code route (which, yes, is easily outsourced).
I finally found my calling. I have been a helpdesk support tech, hardware tech, network admin, webmaster, software developer, systems admin, business analyst, IT systems manager, technical consultant, business owner, etc, and finally found a position that combines all the above: Sr. Systems Integrator. This position allows me to design complete systems, play with the hardware, write code, and make off the shelf hardware and software work as one integrated system. This is not one you're going to master right out of school, but might be a goal for down the road...(it took me 20 years to get where I am)
... try getting a job in the computer game industry. Seriously. You'll be stressed alot, you'll do alot of overtime, but you cannot beat the job of a game programmer when it comes to (1) having fun (2) learning ALOT. Been doing it for a year, and I don't regret it at all.
I'M NOT ANGRY!
I am a software developer, with a CS degree and I only spend about 20-40% of the day writing code. The rest is sitting around in front of the white-board with the team actually developing the software, talking with customers about requirements, a few meetings, attending conferences, giving and attending presentations, preparing reports, researching.
I did have one employer once who thought that software developers just sat at the computer typing in code all day. I didn't stay there very long.
A software developer spends about as much time typing into a pc as the typical office worker, and about as much time with people as your typical office worker too.
Actually, Asia Carrera has a slashdot account.
********* sig: If you don't like the law, get filthy stinking rich, and buy a better one.
Since when did computer science involve coding? A CS degree and $3.50 will get you a cup of coffee. To anything useful or fun you need to pick up a lot of domain specific knowledge. If you don't want to be bored, pick an interesting domain. When you get bored with that, move on. In the last 30 years I've worked on climate modelling, aerodynamics, astrodynamics, electronics design, air traffic control, open source encryption, mail transfer agents, relational database implementation...
Most of my job isn't coding but understanding my clients' needs, and working with other people to meet those needs.
Most computer science jobs right out of school involve either debugging some one elses code and adding small enhancements (so I suppose that technically speaking you wouldn't be writing code all day) or testing some one else's code which on a good day means writing automated tests (a task good developers with short attention spans are well suited for) or pushing buttons like a trained monkey.
With some good experience, you'll go through design-implement-debug cycles. If you're creative, write good automated tests which catch bugs early, write robust code, and use tools well you'll spend most of your time writing code. If not you'll spend most of your time debugging.
With more experience, you may spend a significant fraction of your time providing technical leadership so you can get a team to write more code than you could personally. The rewarding things are helping less experienced people grow and getting your work done faster, but it's a lot like actually writing code because you spend a lot of time figuring out how people should be doing what they're trying to do.
You could also detour into project management (once you know how it works) or technical sales support.
If that sort of thing doesn't interest you, you probably want to look at graduating with a different or dual major. It'll be a lot easier now when you have relatively few commitments (no mortgage, children, etc) than later even if you don't get used to the lifestyle that a decent job provides.
Do what I did: code for some time like an idiot for stupid bosses, then realize you are being exploited, and become a monk. I'm serious.
Religous speak to God. Insane are spoken to by God. When all shut up, one can finally hear Shostakovich in peace
I just graduated a couple years ago, and now I work for a game development studio. Contrary to most of the stories you hear, it hasn't been particularly stressful, and I'm paid decently. (Your mileage may vary depending on where you work...)
I work as a "game programmer". We also have core tech programmers, infrastructure programmers, QA engineers, etc. so there's a lot of flexibility.
If you decide you're totally sick of programming, you could also go into QA, Design, Production, or even technical writing. There are lots of different types of jobs where a CS degree is considered useful.
I strongly agree with a previous poster who said, "CS is about HOW. The fun stuff is WHAT." Sure, I get bored writing code sometimes, but most of the time I'm focused how I can make the game better and how awesome it would be to just get one more cool feature in... the code is just a means to that end.
(One caveat - you have to be really good.)
If you enjoy explaining things to people, maybe writing technical manuals, help systems etc. is worth looking into. And not just for software; a CS degree is a decent start for writing documentation for appliances and industrial machinery as well.
The company I work for provides tech writing services, but also the IT infrastructure to support those (we build e.g. databases to store documents in, and XML manipulation scripts and application extensions to support the writers).
We can't tell you what you will enjoy, you will have to work that one out for yourself. Explore the options within your course. Plan your paid work to give you broader experience. If you are also interested in another area, look at taking a joint major or at least a good chunk of courses there. Taking a road less travelled can result in less competition, or at least give you an advantage over fellow travellers who just strayed onto it.
Talk to your academic staff -- it isn't that difficult really! Discuss doing a masters -- better qualified people don't get used for repetitive jobs.
[And some people only really latch on to coding when they find a language or paradigm that is a better fit with their way of thinking, your time may come.]
I was like you. I graduated in CS, and by the time I finished, I hated it, but it was time to end school.
You can find other work using your skills that don't require much (or any) coding. I work as a Measurement While Drilling Engineer (downhole telemetry) in the oilfield, and make killer money. It's an interesting job, I get to work with my hands (outside) every 2-3 days, and you meet the most interesting characters out here. Oh, and all the environmentalists will hate you!
Opportunities are almost everywhere, but don't chase the job. Find out where home is, and live there. Then drive to where work is, because work moves around the country.
Find something you're interested in, and see what jobs you can do in that field. They're sure to have some tech need.
It's totally not the traditional IT job
For example, my wife loves animals. She worked for a while as a software developer at a Zoo working on Conservation Biology programs - applications to determine things like "how do we maintain sufficient genetic diversity?" and "given this reproduction rate, how many animals can be released into the wild to try to repopulate this endangered species?"
If you don't like CS just for the "CS-ness" of it all, find a field you do find interesting, and then find out who's making software for it. You will be valued, but feel like you're doing meaningful work.
Though not having been a CS major myself, I agree with philspear. Application makes a big difference in the enjoyment of ones job. Another area that sorely needs employees with excellent programming skills is Geographic Information Science. This degree is usually offered in geography departments and as a result of being a social science does not always attract those with programming experience. Consequently, the field is littred with employees that do most tasks manually that can be automated. Typical places of employment include environmental engineering firms, scientific agencies of the government, military (big employer), mining and oil companies, universities, and more. If your university does not have a geography dept couses may be offered through earth sciences depts or environmental sciences depts. This may offer a wide array of alternatives to typical CS routes.
Hey mattskent, welcome to the field. I'm 43 yo, been working this field all my life, and I have good news and bad news for you: the good, as others have pointed out, is that there's a big range of things you could be working on.
You don't have to develop all the time or to do support all the time. I've done a lot of those things myself, from crawling under people's desks to developing (not in the programming sense) products for my own company. The bad: you will always be doing some amount of support (and coding for that matter). Can't get away from it.
At entry levels, it's just expected. As you move upwards on the ladder -- and if you're any good -- there will be things only a very few people understand and you're one of them, in each case you will have no choice but to do some support, just because there are not a lot of people who can actually do it at that level.
This has led me to realize that ALL CS jobs are somehow related to support because the machines, programs and systems we create/develop/program are actually there to perform some work for somebody else, who usually knows a lot about that work but not necessarily about the machines they use.
AFAIK there's only one way out: get a PhD and become a researcher. That's the only way you will eventually get payed to play with computers, which is what most of us want when we pick CS as a major. But then you'll be required to teach also, which wouldn't work for me.
As I said earlier, welcome to the field...
I've come to a similar realization in my life.
I'm in my second year of undergrad study, and have some solid programming experience (summer internship) and have come to these conclusions:
- I can write code
- I can talk about code
- I don't just want to write code every day, but it doesn't mean that I won't just write code for an entire day.
From looking at internship and what I've done, I'm switching from pure CS to a combined CS/MBA program to solve my problem -- Work on code, figure out if you can do it, then figure out what you can pair with it (documentation, UI design, management are just some ideas) Good Luck!
I understand your statements perfectly. I obtained my CS degree in 1995 and went straight into heavy coding and later to Project Management. I was burned out in a matter of a few years. I did various work from Network Admin, Systems Admin, Network Design and Web Development looking for my happiness. By gaining basic knowledge in several areas of IT work I unknowingly positioned myself for success down the road. I now happily live in the beautiful Caribbean working for small businesses and hotels. My work varies widely such as: Network design/development and configuration, Web Development, Wireless Networks, Remote Systems Admin and basically anything else based on needs. My advice. Gain experience and then follow your heart. Dean
Would you like fries with that?
I'm going to get my MSc. in CS in a few months, from a 3-tier Italian University.
I've done an internship in a big IT corporation in Switzerland, so luckily I stand a bit out of the crowd, but I still have to compensate in some way the fact that, for many reasons (family, bad advices by former friends, lack of entrapeneaureness, etc...) I did not go to study in a better University than the one I did. I'm quite competent in the fields I've chosen (Network security and anonymity protocols), but thank to me, not to the education provided by my University.
I have some money I saved in all these years, when I was not able to travel as much as I would have liked (same reasons as before...). So, I don't need to start working the next day after graduation, also because I started to send some resumes, to big IT corporations, with negative answers (or no answer at all). I mostly look for jobs as a sysadmin/security admin.
So, to get some competitive advantage in my resume, and at the same time seeing the world, I was thinking, after graduation, of going to Germany to learn German, for a few weeks, and then spend the summer in China to learn Chinese.
What do you think of these ideas?
Expecially the China trip, which would cost me thousands of Euros, is it worth it? Is it better Japanese, or Russian?
Thanks
It is strange no one mentioned sales. Salesmen in the software industry make the big bucks. Most systems are built by hundred of programmers during years. That means the software costs tens or even hundred of millions. It must be sold at a profit, therefore the price tag can be very high.
The best salesmen work on commision. Once you become competent at selling big software projects, you will do a few good sells and then deposit your commisions in a bank and live from the interest paid every year. (At least find a bank that won't go bankrrupt).
Wait...you're taking the course already and now you're wondering what the "interesting jobs" might be?
If you didn't think any of this was interesting before, why are you in that program to begin with???
No, I'm serious.
Hi, I have a similar problem. In a few month I'm going to take my MSc. in CS from a 3-tier Italian University. Now, I'm quite good in the fields I've chosen (Computer Security and anonymity protocols), and I've done an internship in a big IT corporation in Switzerland, so luckily I stand a bit out of the crowd. But I still have to compensate the fact that I'm graduating from a not well-known university. For a series of reasons (family, bad advices from former friends, lack of entrapeanureness) I did not go to study in some better University, despite I wanted. So, I was thinking, after graduation to go to Germany to study German for a few weeks (I already can read it to a basic level, I need to improve my existing knowledge), and then spend the summer in China to lean Chinese (which I don't know neither a word). I can financially afford this: In the latest years I saved some money, mainly because I still live with my parents, and I've not had the opportunity to travel a lot (for the same reasons as before...but that will change soon). But, is it worth it, expecially the trip to China? Would this really boost my resume? Maybe it's better to learn Japanese, or Russian? Thanks a lot
I think you have other issues to work on before you can assume you can hold any kind of job.
I second the notion that computing in the sciences can be reasonably lucrative and give daily interest beyond what you'd see in, say, biz-admin applications (I've done both).
CS and traditional sciences are pretty compatible (people into one can usually make their way in the other). This cuts both ways, however -- you will encounter scientists who think they're software engineers because they've written thousand-line Excel macros. Or who are impatient with your craftsmanlike approach to coding -- you do have one, right? -- and just want you to knock something out quickly ("It's not all that hard!"). Resist them -- but diplomatically. This also adds, um, interest to the job. Yeah, interest, that's it.
Of course, none of the scientists *I* work with are this way. Honest, guys (I know some of you read Slashdot :-)).
Yes, yes, "guys". We do have women too. And as a group, they tend to assert expertise in their own domains, and assume I know what I'm doing in mine. So there.
Software development in academia is a great place to start; at my university, it's not a place to make big bucks. For me the job satisfaction outstrips that -- I'm actually doing something about global warming and pollution, for example. And if you want to move on later, say into managing dev teams, it looks terrific on a resume.
Pick a business that you find interesting and research the typical technology solutions. If you don't think you can code or deal with hardware all day, then you better like the business with which you work.
-fragbait
I recommend doing research field work. There are lots of science support opportunities. I work on a NSF-funded research vessel, working next to scientists, supporting science missions all over the oceans. There are dozens of ships operated by world-class institutions that are constantly in need of talented technical staff. Typically field techs do some programming, some systems and network administration, some data handling, and a host of other stuff you've never dreamed of. World travel, interesting problems, and interaction with smart people are standard.
To be a good programmer you must absolutely love coding. If you don't, you will just be a bad coder and hate your job!
My best advice (based on my own experience):
Look for a job description that offers variety
(and/or)
Work for an IT Department that supports a small organization. Preferably in an academic institution.
The reason:
When you're working in a small IT department, you're much less likely to have to specialize in only one thing. Your job description may cover one or two main areas, but you will be more likely to be pulled in to help solve just about any problem touching on those areas that comes up. This guarantees you variety. (Actually, this applies to other kinds of organizations, too; I have a friend who works in purchasing who moved from a very small organization to a larger organization -- same job title, but in the first organization, she was involved in the entire process, whereas in the second organization, she was limited to working with just one part of the process, which she found more tedious.)
I work for an IT department that supports a small organization within a larger academic institution. My title is Programmer/Analyst. Recently, my duties have included a pretty wide range.
For example, in the last year, I've:
- troubleshooted worktickets that come in
- occasionally answered the helpdesk phone
- created and managed user accounts
- managed our backup system
- helped program software
- written batch files to install software
- tested and implemented software
- written technical and end-user documentation
- trained end-users on how to use our software
Now, a lot of this leans toward my particular niche, which is learning new programs and systems quickly and then training others. (Technically, my job description was written to have me assist the Windows SysAdmin and Database Admin; that's changing this year as I take on different duties.) But other Programmer/Analysts in my department have similarly diverse tasks, and because we have so few people, there's a lot of overlap. (Everybody has to know how to cover at least part of someone else's field of expertise, or else we'll be in trouble when that person is sick or goes on vacation.)
This is my second real job out of college; my first job (with the same organization) was as a Computer Resource Specialist in our Network and Desktop Support team. (In other words, installing and troubleshooting hardware and software and answering the help desk.) A person with a CS degree (I didn't major in CS, by the by,) would probably have a better likelihood of starting as a programmer/analyst if he or she wanted.
Incidentally, if you do take a help desk job, I've found that even with all of the resources available now for providing remote support, I greatly prefer to have the option to be able to walk over to the person's desk and help them there (another benefit of working in a small organization). Just something to think about.
Hope some of this was helpful to you!
1st -- you're not going to be a computer scientist. You'll be a software developer, unless you're going to a research university with a Phd. I worked for a major robotics company while in school. After graduation I thought I'd try my hand at developing other software. I returned to robotics about two years ago after a few years away. I've never found any other software development that affords the same level of challenge, excitement, and personal reward. Besides, I get to spend at least 10-15 hours of my week testing on things (away from a desk).
Get a double major or minor in biology. People who can handle bioinformatics or the computer side of structural biology are in really high demand. Not saying it's moreso than other fields, but I do know you can write your own paycheck with that crossover.
I call bullshit. Show me one high paying job in bioinformatics. Just one.
J
But currently hold a Bachelor in Economics... with a concentration in Information Technology.
I have been a self-taught programmer and somewhat geeky before University but _really_ enjoyed economics in my last two senior high-school years. It made sense to me to combine what I enjoyed/was interested in with what I could do already.
The only thing is that one may not 'fit' within what employers would expect from a retainer of that degree. I often had to look for a position that fit closely or make one for myself.
If the College/University you go to allows flexibility to engage in other disciplines (Geographic Information Science like above, Social Sciences, whatever) it can be _much_ more interesting.
The jobs I have done span pretty much my interests.
With perspective I can tell you that is probably won't matter what your degree is in.
When I was in your situation I tried, like all of us do, to solve problems with what I knew today, what I had experienced. And try to predict or control the future based on the tools I had today.
Sometimes people try to even control the future more by getting a Masters degree. I think its a waste of time, and a mistake.
The truth is it all comes down to "right time, right place" and how you interact with people.
Which has nothing to do with your grades in the 8th grade, or the 12th grade or your choice of College Major.
What did make a difference was having a solid degree in a field you have more than a passing interest in and almost autonomically keeping it up over time.. through hobbies, or self interest.
Because sooner or later, you'll get a chance to stop doing whatever your doing and try that for a while.
Credentials are useful by way of introduction.. after that people will give you a chance.
Sometimes you'll even get that chance without the credentials.. but when the times get tough, people will also use the lack of them to separate you from the people they want to keep.. so if your looking for stability.. an edge could be to have the credentials for what your doing.. otherwise just consider it a temp job.
On outsourcing.. that's just another form of people politics.. the thing is, there are bits of culture in software writing that don't translate well over seas.. consider tech support.. should an email icon look like a basket, or a postbox? How do you say Hello.. Howdy? The smallest things add up to a successful product.. or ones people just get tired of and won't buy.
My view is that Outsourcing is a fad.. and the financial reasons can evaporate as fast as a Subprime Mortgage.. its just something new they're trying this week.
Bottom line is a start up anywhere in the world based on software, or netware, will generally start with local people.. not trusting a person in a far off land, be it New Dehli or New Jersey... remember we tend to try to solve problems with what we have on hand or know.. not with what we don't have or don't know.
There's been a tremendous slow down in the last fifteen years in solving software problems.. we've tended to get bored with the problems we know.. and settled into a pattern of learned helplessness.. and that has been outsourced... confusion or frustration feels the same be it bought at the local store or a big store down the street.
But the new problems, the new startups.. are still occuring here in the US.. just look at all the Venture Capital between busts.. they are investing it here.. not there.. and that perspective is not US centric.. when an AntiVirus company based in Israel or Russia starts up.. they look for local help.. not foreign help.
So its all people politics.. just like the ones you know.
Customization of software, and turnkey solutions also tend to be stable.. for as long as there is not a generally accepted solution. They're really a lot like Plumbers in that the software has to "fit" a customers unique situation.. and big companies like Mercury, EDS, IBM, HP seem to know that and make a lot of money at it.
Speed and Experience is very important and tends to get you into a job faster. People want to pay for experience.. not your futher education. There aren't a lot of companies that invest in their employees anymore.. they tend to consider them infinitely replacible.. or start to look towards outsourcing when they can't find enough "experienced" employees.
Buying a "team" is also very popular. Why invest all that time putting together a good team out of Leggos.. when you can "acquire" expertise from a startup? That's also a good place to look for a job.. at a startup.. though after a couple they can feel like a series of temp jobs.
I say these things not to put you off about your chosen Major, but just to put it into perspective and
Uh... that one?
Shoot for some kind of software development in medical research, medical devices or medical IT. As long as you live, there will always be people and they will need health care. It's a safe bet.
On this line of thinking, any deep knowledge in a niche area can be very useful. ...and incredibly risky. The idea with a double major is to REDUCE your industry risk, not increase it. It may not feel like it, but your decision of your career direction is one of the riskiest decisions you will make. You have no real control over whether your industry will grow, disappear altogether, be outsourced, become obsolete, see demand drop due to economic forces, be legislated into oblivion, be taken over by the government, be disadvantaged by the tax code, etc.
Not to get philosophical, but capitalism requires agility. It requires businesses to fail, industries to disappear, jobs to be outsourced, etc. And it requires you to be able to switch gears. I think we would ALL be much better off if everyone assumed that one or more career switches in their lives is a very real likelihood.
Capitalism is not very compassionate to the minority of individuals. Some people lose their jobs to India; some people end up making less than they did before; some people have to change jobs to something they enjoy less. At some point, we did understand that these unfortunate realities are necessary to advance the economy as a whole and improve the average standard of living for the community, nation, and world.
I say this as a double major myself. I studied Systems Analysis and Neuroscience. My approach was to study things I was very interested in, NOT to find a profitable intersection that may or may not be there when I graduate (and believe me, most people who asked me about my choice in majors had a hard time understanding this and did not agree with my approach).
Quality assurance testing or bust!
If you aren't from India, your precious little "Computer Science" degree and $1 couldn't buy you a value meal at Mickey D's. If you are lucky enough to land an interview with less than two Indians in the room, then you'll simply be undercut by a paper-certified hack or a high-school drop-out who's been freelancing for three years who will under cut you by almost half.
I hate to sound like an asshole but that's the state of affairs in IT at this point. IT is seen as an expense by CIOs and IT managers who are mostly bean-counters at heart. When you interview for a IT position, the hiring manager doesn't give a fuck about your experience with .Net or Java (let the technical guys in the room grill you for a couple of hours), he sees you as an expense. How cheaply can he get you? When it comes to the new CPA in Finance the guy has to be a whiz with numbers, they'll pay him whatever he wants. But the IT guy is just an expense with the rest of the IT crap (why do we need to spend $4,000 a piece on servers every three years any ways?).
I'm a hardware guy (Sys Admin) and I don't have to worry about Indians as much as I worry about paper-certified hacks still in their Applebees outfits who spend 3 grand on a bootcamp and then call themselves "Engineers" (see, their "Cisco Certified" polo shirt proves it). They'll undercut me in a heartbeat.
$40k a year might not be alot of money to a kid fresh out of college with a B.S. in CS and a 3.9 GPA, but it is alot of money when you're used to making $15k waiting tables or you transfer American dollars back to India.
IT as a career is dead. Your B.S. degree is useless. I would suggest that you minor in business because that's the future of the American CS graduates: Business Analysis. All of the programming will be offshored and all of the hardware stuff will be handled by people with vendor certifications. A CS degree alone will be useless.
Expect CS programs to get a major overhaul and be consolidated with Business programs. So instead of a B.S. in CS you'll have a B.S. in Business Analysis which will be a more math and computer-oriented business major.
Get with the program and cast away your obsolete viewpoint. The IT of the 90's is dead...in America at least. In India it's booming.
Keyloggers are useful for lots of things.
John McAfee 'It was like that time I hired that Bangkok prostitute; to do my taxes, while I fucked my accountant'
I graduated with a CS degree 6 years ago with no interest in coding. So I didn't. I spent some time teaching myself video editing, took a part-time job during school where I got to use those skills, and after I graduated I took a job as a video production manager at my alma mater. My job was a lot of fun- mostly project management for various video assignments, many of which I got to be very creative with. I also got to teach myself how to solder broken equipment, and I taught myself some electrical engineering to retrofit some new equipment with our old systems. My CS degree taught me more about understanding problems, designing tests/solutions than anything, and those problem solving skills have served me very well.
What I loved most was managing all facets of what I was doing, and so I left that job nearly 2 years ago, and I am now finishing up my MBA and plan to get into brand/product management.
Ultimately, when interviewing, I told the story of how my CS degree translated into a general understanding of technology and device troubleshooting to help me get into video, but one of the guys that I hired and who replaced me after I left had a degree in German. Bottom line: Your undergraduate degree doesn't matter for MOST jobs. Can it help you get an interview? Yes, but experience and demonstrated interest matter more. I was interested in video, so I taught myself editing. I had examples of videos that I had produced to demonstrate that interest.
Instead of figuring out what kind of interesting jobs your degree can get you, figure out WHAT YOU WANT TO DO, and then figure out how you can get yourself some experience in that area. Find a way to get a work-study or unpaid internship while you're going to school to help demonstrate that interest to potential employers.
Quite frankly, you can do whatever you want with just about any degree. Its a matter of demonstrating to an employer that you provide value to them.
I've been trying to get a job in bioinformatics for about two years now. I'm coming more from the biology end myself (BS in biochemistry and MS in Molecular Biology) but I do have some programming and database skills and I completed a graduate certificate in bioinformatics. It's a certificate and not a full masters because the university hasn't developed the program fully yet. Just about all the jobs I have seen posted as bioinformatics are actually just looking for an entry level programmer without any real biology skills. There doesn't seem to be any premium for these positions (over other programmer jobs) and the pay grade is less than I make in my current position as a sysadmin. I guess what that means is that coding is what bioinformatics is all about and all the rest is secondary.
This article makes for very good related reading to the subject of work and happiness:
Two Kinds of Careers
"There is more worth loving than we have strength to love." - Brian Jay Stanley
Lot of "I" comments coming up, but hopefully it will give some ideas to someone who finds they can relate.
I spent more time at university than I needed to because everyone told me I was intelligent (and therefore going to university), and was "good with computers" (hence I must go in computer science, even though the people who told me this don't know what the hell compsci is). It took me a while to figure out that coding isn't something I like *that* much in of itself, and that my university often did a poor job of preparing me for a "computer science job" anyways.
Some time off made me realize the main problem is I like "computer stuff" but my interests and natural skills are too varied to be sitting any *only* doing coding for 12 hours a day. I'm more of a "jack of all trades" person. Network admin/sysadmin is a much better fit - some coding (which has a much higher "instant gratification" factor), problem-solving, management, people skills, even getting dirty and playing with hardware and toys. I've pre-learned some material, and sat down and figured out some Linux skills, and am planning to setup some more stuff this winter and spring. I am going to a great college this fall which teaches real practical skills (despite the bs Canadian students are fed that smart kids must only go to university).
I've found investing time in learning these things comes much easier because it's a natural interest, not forced.
Dabble in different fields. Join a higher-end computer user group and see what topics and opportunities arise (that's exactly what helped me to see what *I* actually want).
A CS degree may seem mundane, but the skills are in such demand you can do just about anything.
After graduating, I got sent overseas for six months to work for an AIDS-related organization in sub-Saharan Africa. The challenges were enormous and often unforeseeable; and while the job description suggested I would be doing nothing but programming, most of my job involved interacting with people.
For any white person volunteering overseas, the experience is extremely stressful and not at all glamourous--you won't save any lives, you won't earn bucketloads of cash, and congratulations will be few and far between. But overseas volunteers experience and learn things nobody else can possibly understand: your life would be changed forever.
Starting your search? In Canada, begin by looking for the CIDA internships page (the place to look); in the States, maybe investigate Peace Corps; in both, flip through CUSO-VSO and the myriad search websites Google will find for you. Organizations that pay you a stipend or salary are likely to provide both you and the recipient country with a much more useful placement (not to mention, they won't break the bank); unfortunately, though logically, those organizations are stricter about whom they interview and hire.
Watch the ground for snakes, and don't drink the water; why don't they teach this stuff in Computer Programming 101?
ugh where were you when i was trying to explain my CS/Bio Double major or bio minor to my student advisor...ugh the blanks stares in '95
I see that there have already been some posts about going into law. I'll try not to repeat what's already been said. Here's my own advice, based on good experience:
(1) Work for a few years doing something CS-related. Whether coding, sysadmin work, user interfaces, or software design, pick something and stick with it for at least a few years. The benefit of doing this is that you'll get invaluable real-world experience and you'll learn what you like and what you don't like. If you're lucky and good at what you do, you might also get some exposure to the business side of CS.
(2) If you're happy with what you're doing and you believe that there's a high potential for growth, stay in your field and look no further; you've found your dream, why break it?
(3) Keep yourself informed about legal issues related to CS. These may be intellectual property, privacy, computer security, computer crime, or even HIPAA/FTC/FCC/securities regulation. Think about how the knowledge you've gained from work has help you understand the issues better.
(4) Take the LSAT. Apply to law schools. As much as it pains me to say so, you MUST be aware of how a law school's ranking affects your ability to get a good job out of school. If you go to Yale, then a good job is virtually guaranteed. It's certainly possible to get a good job out of St. John's and Brooklyn, but the risk is also higher. For some schools, you must be at the top of your class. (FYI, the more technical your skillset, the more likely that a patent prosecution firm will overlook your grades in favor of your experience -- one of the few exceptions to the general rule that LSAT/undergraduate grades/law school grades define your future.)
(5) Again, think LONG and HARD about the financial risk you'll be taking by returning to school. You may not have an income for 3 years.
With all that said, I personally find computer law to be an incredibly fascinating field. A CS background allows me to talk with computer professionals and ask the right questions. It's my job to translate computer knowledge into plain English for a judge and jury. I love the logical puzzles -- both technical and non-technical -- that I need to solve every day. I have the ability to see much more of the "big picture" that CS programmers rarely see, and I hope to eventually apply that knowledge to important policy questions.
That sounds awesome, but how on earth do you go about finding a job like that?
Start working as an intern in a big company, so you'll be able to experience the different paths you could choose... At first you'll have to code, later you will acquire specific valuable knowledge about the domain, you could develop from a programmer to a businness expert, or you could choose project management.
Just get into some big corporation, and then everyone finds his place...it'a a kind of darwinistic process.