How does a history major get a job in IT?
July 18, 2009 6:30 PM   Subscribe

How does a history major get a job in IT? If you work in IT or as a programmer, but have a degree in an unrelated field, how did you transition into tech?

In 2006, I graduated summa cum laude from a small liberal arts college in Illinois. My b.a. is in history, with specialties in economics and political science. I majored in history because, at the time, I wanted to be either a history professor or a lawyer. My instructors' warnings about the state of the academic job market, however, talked me out of going to graduate school for history, and an internship at a law firm made me realize that I would be miserable practicing law.

Over the past few years, I've developed a strong interest in computing and the internet. I'm proficient in Windows and Mac. I read sites like ArsTechnica and blogs like Daring Fireball daily. I'm running the Windows 7 RC. I started learning web development on my own earlier this year, and am really enjoying myself. I've also startied to dabble in programming, specifically C and C# (I really want to write iPhone apps), but I'm still very much a novice. Although I've largely been working since I graduated, I've also taken a few courses at the local community college, including Calculus I and II (I got A's in these.)

So my question is this: given my educational background, how do I get a job in IT/technology? Do I need to go back to college? I've been thinking about applying to the University of Chicago's m.s. program in Computer Science. It's very expensive, however, so I'm wondering if getting a master's is even necessary. (I also have no debt right now, and am uneasy about taking out loans.) Will getting a master's make me overqualified? If I get a master's, should it be in computer science or should it be in something else, like information science? Should I get an mba?

Given my background, can I get a job in IT now? If so, what types of jobs should I be looking for? Should I move to "the Valley" (I'm near Chicago now)? I have solid work experience, but nothing really related to computing. I'm really interested in start-ups and would love to work at one (I have entrepreneurial inclinations). I don't care about getting rich--I just want to be able to make a living doing something that I actually enjoy.

I've read past questions on metafilter related to my question, and I've found that there are a lot of people on here who work in IT or programming, but got degrees in unrelated subjects. If you're one of those people, please advise me on how to make this same jump. How did you get started?
posted by capitalist.pig to Work & Money (21 answers total) 14 users marked this as a favorite
Your degree is irrelevant. I've been in IT for almost two decades now, and the overwhelming number of people that I've worked with have non-IT degrees, if they had any degree at all. I could probably count the number of people with IT-related degrees that I've worked with on the fingers of one hand. You should be thinking about developing an IT skillset, and it certainly seems to me like you're on the right track there.

The one piece of advice I would give you is to think about what you actually want to do within IT as a first step, and talk to someone already doing that kind of job about their skillset - then get to work on developing that, either through vendor-type training, or independent work, or whatever.
posted by deadmessenger at 6:43 PM on July 18, 2009 [1 favorite]

Seconding deadmessenger.

With your history background, you can write. Get your foot in the door by doing technical/proposal writing.
posted by apartment dweller at 6:48 PM on July 18, 2009 [1 favorite]

Well, there is a huge range of "IT Jobs" on one hand you have people who setup PCs in offices, do network cabling, manage file servers and simple databases, and maybe setup web pages and web forms (or stuff with MS Access and the like). On the other hand you have people who write low level device drivers, operating systems, 3d graphics programming, database engines, do AI stuff, etc. You could probably get a job on one end, but obviously not the other.

The higher-end jobs like working at a start up in Silicon Valley you'll really need to do more then "dabble" in programming. But there is a need for "lower end" IT people all over the country, including in Chicago, obviously.

If you want a fun job, I would go for the masters degree.
posted by delmoi at 6:55 PM on July 18, 2009 [1 favorite]

Oh yeah and getting certifications is a good way to "prove" you know what you're doing if you want a most non-programming sys-admining type job.
posted by delmoi at 6:56 PM on July 18, 2009 [1 favorite]

First: Computer science is not IT. IT is not programming. Computer science is what programmers study. It's the study of producing new programs. Information Technology, as used in the business sense, is the department of the company responsible for managing and maintaining the various computers used in the business. This may involve building complex systems which require some programming (scripting) work. But, for the most part, does not require the creation of novel programs from nothing.

If you want to program, you need to learn computer science (either on your own or through university). I would not recommend taking the Master's. The prerequisites will, I absolutely promise, amount to almost a bachelor's degree in and of themselves. There's simply no way that a pre-law history major took all of the regular math, computer math, and programming classes necessary. If you want to program, go take a second bachelor's. It'll take you less time, and will probably be cheaper.

If you don't want a job as a programmer, but rather as an IT technician, I really don't think your degree matters. Lots of folks do have compsci degrees, but it's by no means the rule. The field of study designed specifically for IT techs is usually called "Information Systems" or "Information Science"--at Temple University, it was called "Information Science and Technology". Some of these programs are really excellent, turning out excellent network engineers; some of these programs are going to be more basic than the books you've already read.

So, assuming that you want to do technician work, I'd just start interviewing for jobs. If you have the chops, you can prove it. And a degree in history is no real detriment.
posted by Netzapper at 6:59 PM on July 18, 2009 [2 favorites]

I'm a programmer and I studied English in college before I dropped out. I suppose I got into the business by doing small projects for clients, and one of those eventually turned into a full time position. It's possible to become a programmer without a degree in CS. I don't recommend that you try it though. I'm good at what I do and I have over ten years of experience and there are lots of employers that won't even look at me because I don't have a degree.
posted by chrchr at 7:33 PM on July 18, 2009

I have a tester on my team who was a History major at Stanford. I think he got the job by just showing up at the right party at the right time and saying "yeah, I can test software."

Find an IT-job-dense part of the country and you increase your odds quite a bit.
posted by jeffamaphone at 7:56 PM on July 18, 2009 [1 favorite]

I have a bachelor's degree in Studio Art with a concentration and I'm currently a one-man IT department for a private school, so this question relates very closely to me. Here's how I did it:

I've always been a computer nerd and knew more about them than others around me. But I like design and art so I combined the two. However while I was still in college I decided to become a student technician and help other students with their computers. This was a specialized program my college offered. Through that I also began work under the same supervisor as a student employee in their helpdesk. I did all this for 2.5 years while I was a student. As I was about to graduate a job opened up in that IT department. My wife (then girlfriend) was taking masters classes so I applied and I was a shoe-in because of all my past interactions with these people. We stayed in the area. I worked for that University for 3 years, then got offered a position to run IT for the private school I'm at now.

I realize your situation is vastly different now and the only reason I tell mine is to pull these key facts from it:

1. You do not need a degree to do this. Do not pay an institution who is selling an IT degree unless you plan to be a director of a large IT department one day (and even then it's debatable).

2. You have got to get in the game and start volunteering or doing grunt work in the area you want to be. This applies to any field. Pay your dues by volunteering or ask around for low level positions working at an IT call center. In my case the school was the best outlet and I think even in yours Universities will likely be a good fit. A low-level call center tech absolutely would be hired without any "formal degree in CS or IT" if you can prove your stuff in an interview.

3. Know people. Do any of your friends do this? Anyone you know? Even that remote acquaintance on Facebook? TALK TO THEM. It doesn't always lead to job opportunities but in this field, as with any area, knowing people goes a long way. I knew my supervisor from being a student tech and got a helpdesk job, which got me a full time IT job, which allowed me to meet people in that department, one of which got a lead on a one-man IT department type job, which he referred me, and here I am. Work your contacts and you can do this.

Good luck, and in case you're wondering, I have no regrets working in a field I don't have a degree in. At least two of my classmates are unemployed because design work is scarce at the moment. I am blessed and get to do something I love, that's all that matters.
posted by genial at 8:00 PM on July 18, 2009 [3 favorites]

As others have pointed out, it depends on what kind of IT job you want. If you want the kind of IT job that has more to do with maintaining systems, no, you don't really need a college degree in CS. But if you want to become a software engineer, you do.

I have both a bachelor's and a master's degree in Computer Science from a major university. In my opinion, you really need a bachelor's degree in CS or a (closely) related field to be properly equipped to take on earning your master's. I wouldn't recommend jumping into the U of C's master's program without that kind of equipment.

I work as a software engineer, and I'm good at what I do in part because I have a good theoretical background (experience doesn't hurt either, of course). This type of understanding isn't something you're ever going to get from dabbling in release candidates or programming, no matter how much of it you do. If you want make a living designing and implementing software systems, you need to do more than treat your interest in computers like a hobby. You might start with some sub-master's-level courses and move on from there if you like the direction you're going in.
posted by axiom at 8:02 PM on July 18, 2009 [1 favorite]

I disagree with those saying you need a CS degree to be a programmer (or a software engineer, depending on how that is defined). Certainly there are areas where you do. You won't be designing new operating systems with out at least a CS BS. However I'd say that the majority of programmers I work with in the business programming area have no degree; and the majority of those that do have a degree are not in CS.

So, if you want to get a c or more likely c# business programming position, I'd recommend this:

- Find out the major IT recruiters in your area.
- Call them and tell them your situation. Give them your resume.
- Take any entry level position you can get. Preferably programming, but you will likely need to do support most of the time to start.
- Get some experience and go from there.
- IF you find out this won't work right now in this economy or for whatever reason, look into getting the degree.

(You won't make very much to start - but the recruiters could tell you what to expect)
posted by Bort at 8:26 PM on July 18, 2009

Oh and as to transitions into IT, I can tell you my experience and that of my buddy.

I got a BS in CS. I took a Co-op position for credits during which I worked for a local printing company as a software dev using VB 5 + 6 for $11. At the end of the co-op, I was offered a fulltime position (contingent on my finishing my degree) which I accepted and finished up my degree while working fulltime.

My friend went to Drexel and took the 5 year program during which the middle three years alternate between classes and a co-op. After the second co-op position or so, he was offered a fulltime position that was NOT contingent upon finishing his degree. He took it and has not finished his degree to date and probably won't. He makes about what I do with almost the same amount of experience without the cost or lost time of finishing school.
posted by Bort at 8:42 PM on July 18, 2009

BTW, to explain the IT recruiters a bit, since you probably do not know about them or how it works:

There will be various IT recruiting companies in your area. These companies find the programmers (me and you) and match them up with potential fits at openings in local companies - typically either contract to hire (something like $xxx/hour for 3 months with the expectation of coming on fulltime for $yyy / year if everything works out) or just contract (fixed length at $xxx/hour). The recruiter will likely take $zzz / hour for the work you do from the company and you will likely never know what this rate is - it can vary considerably. The recruiter will likely also get a fixed amount if you end up going fulltime.

To start out, you'll have to take whatever the recruiter/company offers, but with time you figure out your worth for you skill level and experience level and ask for that.
posted by Bort at 8:51 PM on July 18, 2009

One entry way into IT for non-CS majors is to learn to support legacy systems. Many large systems are still in active support phases in so-called "obsolete" languages like COBOL, RPG II/III/IV, and require familiarity with CICS or JCL (IBM Job Control Language or a subset like CL). Jobs involved in such system environments range from daily operations (IT management), to customization of existing programs, to creation of new programs, to writing interfaces from legacy systems to databases and to graphical clients. You can work directly for client organizations using such systems, or you can work as an independent or third party contract programmer doing project work for the end client organization.

As an example, there are still thousands of customers world wide running Oracle/J.D. Edwards World software suite on IBM iSeries (as of April 2008, now IBM Power System) machines, which is a code base of several million lines of RPG III and IV, with a subsequent interoperable version called EnterpriseOne which is written in various MS tools for operation under in the Windows ecosphere. Some organizations actually run mixed environments with World backends and EnterpriseOne functionality for clients.

The pay, especially for contract personnel at the top consulting firms, can run to the low 6 figures a year ($150,000 to $200,000), but this also involves heavy travel commitments, and a thorough knowledge of business processes and software features, as well as good client relationship skills, that take years to master. Independent journeyman RPG coders can generally command $40,000 to $60,000 a year, with experienced senior system developers going into the $80,000 to $100,000 a year range.

You generally learn RPG or COBOL these days through independent study (lots of books, IBM Redbooks, etc.) or by attending paid training, as few college programs offer such. One way of getting the toolset is to simply buy your own used, entry level "baby" Power System, which will come complete with a licensed copy of iSeries software, which will include an RPG IDE (Integrated Development Environment, which includes various compilers for RPG, C, and even COBOL, various editors and screen build tools, some Windows middleware to use a PC as a terminal, and some documentation for development), the Power System OS (used to be iSeries or OS/400), and probably DB2 and Websphere tools. You can get an older, used developer box complete with system software, for as little as $1500. You'll pay extra for an annual software subscription license to keep your software up to date.
posted by paulsc at 10:18 PM on July 18, 2009 [1 favorite]

My degree's in History. I got a job as a tester. Two days in, I got told, "if you can learn Language X in two weeks, you can program". I knew C++ really well, Language X was like brain-damaged C++, I got three raises of about 10% each the first year.

Now I'm a "Senior Software Developer" (or whatever).

Learn a language really well, then apply for jobs. Even better, learn a language really well, and contribute significant code to an open source project.
posted by orthogonality at 1:32 AM on July 19, 2009

There are actual interesting and useful things to be learned in CompSci grad school, assuming you attend one which will teach you those things, but they are expensive and treat you like a student. You may be able to talk your way into getting a fellowship. Do you know the trivial things that any undergrad Comp major knows, or at least recognizes, like, what is a stack, a doubly linked list, a top down parsing algorithm, garbage collection, regular expression, two's complement, Boolean variable, dynamic scoping, underflow exception?

Many companies won't even look at you without degrees or certifications. This wasn't true a few decades ago but the hiring culture has changed and the degree programs have become more standardized. So called programming methodologies now exist where once coders merely tried to make things work. There is also more competition for technical jobs than there had been in the past

So, you need to either get degrees, or experience. I disagree with the JCL/ COBOL/ CICS approach unless you just want to make money since that kind of experience will only qualify you for more of the same.

How to get degrees is obvious. How to get experience is less so, since you'll need to get hired to get it. You need to figure out what you're interested in and what you're good at. System administration skills are very different from development skills, for example. At your stage, you probably don't know how much you don't know. As a beginner, insight works better than knowledge. You can find the bug that more experienced but less intelligent techies would have to work at the slow and steady way.

Support or assistant sysadmin work is probably the easiest area to sneak into. If you work in a small office in some other capacity, there's always some of this to be done and no one else immediately available to do it. You can get a reputation by "fixing" your co-workers' machines or unwedging the server when the person who's supposed to do it is busy elsewhere. You may get to write some simple scripts or SQL queries. Maybe, when some techie quits you can argue that you can do his/her job.
posted by Obscure Reference at 8:10 AM on July 19, 2009

I concur with no degree being needed. I used to work for a major search engine. One of the brightest and most pleasant programmers there joined with a sound engineering degree and hobbyist experience of programming, to work on one of the most complex and highly-tuned pieces of software in existence. Degree doesn't matter much if you're just good at developing software. No need to move to the Valley, at the moment it has a lot of unemployed developers with good professional experience, and is probably a worse place to be than Chicago.

On the other hand, it's not unlikely that you'll be offered a salary inferior to that of an equivalent degreed developer. You'll need more on-the-job training, and there are concepts in, say, system architecture or databases that you won't have been exposed to. It's only temporary. Some firms also accept only CS masters-level developers as a matter of principle, and won't even consider you. These firms are prone to use words like 'best-in-class solutions' and 'enterprise-grade infrastructure' in their blurbs. You can spit politely at their faces. Last, without a couple of years experience or a very good portfolio, you'll be more likely to find work at a larger company than at a start-up, unless you accept a trainee-level salary. Most start-ups just don't have the resources to train someone, especially now.

Things that help:
- Write a library-sized piece of software that does something useful, even if it exists elsewhere, e.g. a database abstraction layer, a webshop front-end, or a small iPhone app (no idea if you need to buy a kit for that, though). Research how they've been written before, make considered design assumptions, write entirely new code, polish it, document it, make sure it is well-structured and understandable. You'll be asked for examples of code. Technical intricacies matter little, showing a professional approach to software-writing will put you above 80% of everyone else. If the functionality/app already exists, and people ask why you reinvented the wheel, 'to train myself' is a perfectly excellent answer.
- Try out as many tools, IDEs and frameworks as you can that are relevant to your field of interest. It will give you a feel for what you like to use, what people think are important problems to solve, and cut on the training time needed for you to start being productive in a job.
- Apply directly to companies if you have difficulties with headhunters. Most of them have no experience in the field, and simply tick boxes. Know C#? Check. Two decades of experience, but know Java instead of C#? No good at all. It's all a bit amateurish.
posted by Spanner Nic at 8:26 AM on July 19, 2009 [1 favorite]

My husband has a history/english degree and he started working in computer lab in college, and stayed there afterwards. From there he did QA and testing and these days, he does release engineering and process work.

I took a different route. I have my BA and MA in history and one thing I know I can do is write. After spending some time in a completely different field (immigration paralegal), I went into technical writing. While I never got into programming, I did a lot of testing and usability work at one small company I was with and could have gone that way if I'd really wanted to.

If there's a subject matter you're an expert on, you can also consider becoming a business analyst and going that way. I used to work for a company that made car dealership software. They had a number of people who'd grown up around dealerships who became software installers (people who went to the dealership to set up the software) and database converters and got into programming that way. This was another route I could have taken from tech writing to get into programming if I'd wanted. It involved a lot of travel, though, so keep that in mind.
posted by immlass at 8:36 AM on July 19, 2009

"... I disagree with the JCL/ COBOL/ CICS approach unless you just want to make money since that kind of experience will only qualify you for more of the same. ..."

Exactly! If you really want to program without getting covered in filthy lucre, you should remain entirely above the commercial fray, and get going with Ruby/Rails, Java, or Python so you can volunteer on an open source project, for the personal satisfaction and intellectual glory of it. Those who need the 9 to 5 legacy work and fringe benefits will surely appreciate your selfless forward thinking, and commitment to software purity. Have you read Eric S. Raymond's The Luxury of Ignorance: An Open Source Horror Story or The Luxury of Ignorance Part Deux? The CUPS project can always use well meaning volunteers... Or check Joesph Betz's report to Eric Raymond about trying Ubuntu, if you don't think there will always be plenty of room for the enthusiasm of newbies volunteer developers, on the bleeding edge...
posted by paulsc at 10:59 AM on July 19, 2009

I really found the Stanford Engineering Everywhere's Computer Science I, II, III an amazing resource. I watched them on Academic Earth and followed along in the book by Eric Roberts. I even did the assignments. I found the first two courses easy, but I approached it as if I knew nothing about computers and found it almost essential to dispense with anything you have previously learned. Programming is relatively easy and they take you through Java to C, and more importantly, in a context of you just taking the previous course. In fact the first course is actually meant for non-engineering majors. I think you are one or two courses away from a CS minor if you take those three courses?

Stanford kind of cuts out after the basic cources, but Harvard has a lot of their courses online. Right now I'm going through their XML course. I've been doing about a semester ever 3-4 days, but that's going on some marathon sprints.

This isn't answering your correction directly, but you mentioned getting a master's in CS so I assume you're looking for a more rigorous academic approach to learning.

Really I think there is a huge market for competent developers in mid-level to small businesses. Paulsc really hit it with legacy ERP systems. Your degree doesn't matter and the problems can be very challenging.
posted by geoff. at 12:23 PM on July 19, 2009 [1 favorite]

Definitely check out the stanford CS courses. I was a classics major, but i took those 3 classes while I was there, and along with some discrete math they will really teach you pretty much everything you need to know to be an effective self-learner of almost any programming related topic, or to jump into coursework at another school (which I have since done).
posted by Hello, Revelers! I am Captain Lavender! at 3:09 PM on July 19, 2009

I did almost exactly this. My degree was in communications, and after college I became a full time IT worker and that is what I do now.

A LOT of the advice above is what I did.

First, I started in a low position, the help desk. For the help desk you need fair knowledge of the operation of the various Windows operating systems (Control Panel, registry, etc.) and a good ability to communicate. WHERE you work the help desk is irrelevant, be it a local internet company, a computer house, software house, etc.

Help desk doesn't pay a ton, but it's an entry level job that exists to give people experience so they can move on. More, even those who graduate with degrees in IT/CS usually start out there.

To get higher requires a few things: Experience, knowledge, and education. The experience is simply the duration which you've worked in IT. A couple of years is usually needed for higher positions. Knowledge is needed to actually be able to do the higher jobs, and you can get that by self-teaching, online courses, certifications, or formal education.

The education part is different. For a lot of higher jobs you will need certifications, a degree, or both. After working in IT for about five years out of college, I went back and got my masters in CS (notice, I didn't need a bachelor's in CS to get the masters, at least at my university). I didn't do this just for the degree, I did it to learn some of the basics which I missed specifically related to programming, which after five years I learned was my favorite part of IT.

I then went on to teach IT classes at a local college and have worked in IT for 14 years.

So you can do it. Good luck!
posted by arniec at 9:06 AM on July 20, 2009 [1 favorite]

« Older What's normal for a bee sting?   |   Texting from PC Newer »
This thread is closed to new comments.