What's an IT career path for me?
September 26, 2009 5:47 PM   Subscribe

How do I advance my career in IT? If I were to move to a software developer position would I have to start out at the bottom?

I currently work in IT in a consulting agency that works in a niche industry. We have about 50 employees at 3 sites around the country and there are no expansion plans. It appears the current partners do not wish to grow anymore. I am my department, I am in that weird state where I don't really report to anyone but the president, but I do not manage anyone. I really enjoyed setting up the various systems like e-mail, phones and the accounting system. These were actually very challenging to setup and get working, yet I don't know if I became an expert in any particular category. It is fairly clear I am a non-billable expense and I'm seen as expensive. I'm also getting bored of merely maintaining the system which is taking up increasingly less of my time.

The president of my company recognizes my plight and recommended that I setup a consulting business and manage the departments of several companies of similar size, that for day-to-day help desk work they would hire an intern. Two years later and some aggressive networking with my contacts, I've yet to find another company.

I've taught myself programming and I've built several internal web applications. I've thought about perhaps moving to a software company and becoming a developer. Would I need to start at the bottom? I don't know any software developers or anyone else in IT, so I'm sort of unclear of how to advance my career. My pay is currently $70k/yr. and starting at the bottom, below $50k is sort of scary. I've been writing these little applications in Java Spring framework. They've been things like vacation requests via an internal site and making accounting reports accessible via the web. I don't know if those are enough to get me out of entry level work, or even what I should be applying for on Dice. Thanks for your help.
posted by anonymous to Computers & Internet (11 answers total) 9 users marked this as a favorite
 
The experience you describe is not enough to get you something more than an entry-level job. It's actually first-year kind of stuff for comp sci students. If you really want to be a developer, I'd suggest pursuing a certification or two, and make sure any job you apply for is for legitimate software development (requirements, design, testing, etc.), as opposed to the sort of one-off things you've done before.
posted by mpls2 at 6:04 PM on September 26, 2009


I develop software for a living, but I have formal training (M Sc in Computer Science). The short answer to your question, from my point of view, is that it really depends on what precisely you want to do in terms of developing software. There's a big gap between, say, linux kernel hacking and writing small web applications.

If I were in charge of hiring software developers, and you came to an interview and indicated you were a self-taught programmer, this would strongly indicate that you probably aren't suitable for anything other than entry-level positions. Simply put, that's a skill every college sophomore in computer science possesses (at the latest in their academic careers). I can hire someone in India to build me little Spring apps for a lot less than you're probably willing to work for.

What do you know about (classic, standard) data structures and algorithms? Computational complexity? Concurrent programming? Do you know anything about operating system design principles, or the networking protocol stack, or how an RDBMS query optimizer chooses its execution plans? You've built little apps inside the Spring framework, but do you know how to design a larger, more complex software application, anticipating how the various pieces will fit together? What about testing?

In fact, testing may be a way for you to break into the business. Software development companies also employ QA people to test the software they build. Your skill set may qualify to find a position in QA, from which you might eventually be able to move more into a developer-type role. You would also learn a lot about software development through your interaction with both professional developers and their code.
posted by axiom at 6:08 PM on September 26, 2009 [1 favorite]


Everything axiom says above. Many years ago I used to be an engineering manager in software development. (I decided management is not really my thing and I've gone back to writing code; I've been in the industry for about 20 years.) Back then one of the QA people we had was interested in development, and ultimately she moved over to us. Before joining the company she had been a civil engineer so she probably knew even less about software than you do. But she was smart and a fast learner, and with her 2 years in QA she worked out just fine as a developer. Get some CS texbooks and study the things axiom mentioned, and start thinking about QA.
posted by phliar at 7:23 PM on September 26, 2009


Yes, you would be required to start over.

Switch to a software development company, sure, but going to QA would be just as significant a reboot as going to development, and would take even longer to get into a viable development position. You're starting at ground A instead of ground 0.

QA used to be considered the "junior software developer entry point" at a lot of organizations sure, but in modern organizations it is its own career path, vitally important to making great products, and a different discipline than software engineering that requires a different skill set and a very different mindset.

A large corporation is going to have more opportunities for lateral shifts and more opportunities for training. Smaller companies are going to have a lot of openings for many-hat sort of people where you can fill in a split IT/developer role that benefits from your experience in the one discipline and benefits you by learning about your new preference.

I am not currently responsible for hiring people, but if I were I would be much more inclined to hire an experienced IT person looking to do IT work while learning development than an experienced IT person looking for a QA position as an in to a development career.

I think the real challenge in doing what you're trying is the fact that your current employer is not growing. Find one that is, lateral shifts are much easier.
posted by cCranium at 8:31 PM on September 26, 2009


I came in here to write everything axiom did. Except he said it much more tactfully and supportively than I was gonna.

Frankly, your experience with programming is basically on par with what I and most of my colleagues were doing in middle and high school. Compsci majors really don't take four years to learn to code (80% come in knowing basically how to do that anyway); I have as many credits of math as a physics major (they just aren't the same maths). Coding is so not the point of software development.

If I got your resume as you've described, and you were applying for even entry-level development, I probably wouldn't even interview you. You need the degree. And if you don't have the degree, you need to have been working in programming since before every cow college had a compsci program.

As for your career: can you not simply look for a new sysadmin job that's more challenging? You might get better pay as a manager somewhere, if you can swing it; but, if not, $70k is pretty fucking respectable for IT and you might not actually do better. If you don't want to leave your current employers in the lurch, offer to continue to consult for them at some mutually-agreeable price.
posted by Netzapper at 10:24 PM on September 26, 2009


Nthing axiom. Again, he is way more polite than I am.

Why? Because, although I'm sure your intentions are good, this is one of those questions that pisses me right off. Because it's one of those "I can work with computers, and I can sorta piece together little apps in my highly controllable little sandbox, therefore I'm a developer! I can I make the big developer bucks!" Um, no. I spent 5 years getting the degree (co-op work experience included), and other 8 years working in the industry, and you just want to come along and swap your hardly related computer experience for mine, and not pay your dues, not learn the theory and building blocks and all that, and just step in and do my job, or even what my job was 5 years ago? Sorry -- without the degree, you're starting at best at the bottom with everybody else. You might be able to convince a hiring manager that your IT experience is the equivalent of a degree, but it's still an entry level job, competing with the idealistic 22 year olds just finishing school who are willing to work 60+ hour weeks just to get their foot in the door.

And to be honest -- chances are you have a highly idealized idea of what a job of a developer actually encompasses. There's actually relatively little code that's being written -- and this is, by far, the best part of the job. The rest is farting around in others code, bug fixes, testing, dealing with managerial bullshit, and a whole bunch of other things my weekend mind refuses to think about until monday. It's a great hobby, but like any other hobby, when you do it to pay the mortgage, it becomes work.

You have good IT experience. You can definitely work with that and apply it into another quasi-related job. I just don't think development is the answer here, unless you're willing to start over.
posted by cgg at 10:50 PM on September 26, 2009 [1 favorite]


Yeah, what Axiom said is pretty accurate. In theory, there are some jobs you could maybe do. I mean there are a lot of terribly written, horribly patched together internal apps out there and you could probably make them worse.

I don't think you need a degree to be a real programmer doing internal apps for businesses, like the vacation time requester you mentioned. You would definitely need to know SQL.

One avenue you might want to look into, actually, might be being a DBA.

I think it should be possible to learn most of what you would get out of a CS degree on your own, but it's hard to say exactly what you would need. A good place to start would be this book. Learn how to write stand-alone java programs (rather then web apps) and then try to implement the algorithms in that book. Also, write programs that do low level networking. For example, implement an HTTP client and server using Sockets and Io streams and nothing else.

Learn more then one programming language. Write programs C and in Assembler. Write programs that create images using the Graphics2D object in java. Try to write your own OS and run it in Virtual Box. You probably won't have to do those kinds of things on the job, but having done them you'll have a deeper understanding of how computers, and the programs that run on them actually work.

In my view there are really three things you need to be a programmer:

1) A deep understanding of how computers work (including operating systems, IO, networking, databases, and the rest of the 'environment' you'll be programming in) work.

2) Knowing how to express your ideas in code.

3) Being smart enough to have good ideas to express.

But number 3 is probably not as important for an internal type job, and based on my experience there are a lot of programmers out there who are pretty weak on number 1 as well. Another important skill that a lot of people lack is the ability to write code that's easy to read and easy to make local changes too later on.

To be a programmer, I think, you should be able to look at any program and say "given enough time, I could write that from scratch" and be correct.
posted by delmoi at 11:26 PM on September 26, 2009


Hello, I asked this question. Thanks for your responses, I have a few more comments on seeing some of the answers:

1. I don't look to work for a well known software firm. I enjoy the business side of programming, or business automation.

2. Given that, If you want to build small internal apps, that is great too - lots of people make a career out of it. this sounds really ideal to me. At the risk of sounding naive, is this easy? How do you transition to this?

My favorite part of my job involved going through the accounting database and figuring out the flow of the data. I have a degree in Economics and I respect that a computer science degree is not earned through O'Reilly books. I am definitely not looking to program the next operating system or writing video games.
posted by anonymous3 at 12:33 AM on September 27, 2009


1. I don't look to work for a well known software firm. I enjoy the business side of programming, or business automation.

Ah. How about business process reengineering? Or quality assurance? Plant operations? There are lots of places you can put an analytical and technical mind to work in business.

2. Given that, If you want to build small internal apps, that is great too - lots of people make a career out of it. this sounds really ideal to me. At the risk of sounding naive, is this easy? How do you transition to this?

Here's the problem: it's a sonofabitch to make a living doing that. Each app is tiny (maybe a few days' work), and nobody wants to pay substantially. You're talking $500 jobs. What's worse is that people who need a internal vacation app, and can only spend $500, are going to go to rentacoder or elancer and hire an offshore developer for $6 an hour.

The way you get these gigs is networking. So, if you think you have a good network of business contacts, you can maybe make a go at it. But, given that the gigs are so tiny, you have to hustle like hell to get volume.

The other problem here is the issue of support and bug fixing. These gigs can get real tedious real quick. Say you agree to work for $500, and you whip out the app in two days; $30 an hour ain't bad. You deploy it, everything is awesome. And then, two weeks later, they discover a show-stopping bug. So you spend another day chasing and fixing the bug: down to $20 an hour. This nickel and dime shit can wind up costing you money.

My favorite part of my job involved going through the accounting database and figuring out the flow of the data. I have a degree in Economics and I respect that a computer science degree is not earned through O'Reilly books. I am definitely not looking to program the next operating system or writing video games.

Part of the problem with this thinking is that, more and more, everybody programs. Anybody who crunches numbers or deals with data has learned how to program well enough to enhance their work: economists, 3D artists, scientists, engineers, etc. So what used to be a a great career path of finding people with naturally computable problems, and then computing the answers, has dried up. You can't even get lab analysis work, 'cause all the biologists know python.

At a company large enough to require internal applications, there's usually somebody in the IT department who can code. At my last job, the sysadmin was actually a better programmer than a couple of the development staff.

This means that the bread and butter of low-experience hackers in the 80's and 90's has largely disappeared. What's left for software engineers is work that's too computationally difficult to leave to domain experts. This is exactly the work that can't be done by uneducated programmers.

If I were you, I'd be looking for fields that weren't obviously and directly related to computers, but that do have strong computer requirements.

I saw a lab tech listing last year that wanted somebody (no exp. necessary) to run the NMR and to generate reports, knowledge of Python required. So, they were willing to hire somebody who spoke Python and train them to run the NMR, just so that they could get the reports they wanted.
posted by Netzapper at 2:14 AM on September 27, 2009


Here's the problem: it's a sonofabitch to make a living doing that. Each app is tiny (maybe a few days' work), and nobody wants to pay substantially. You're talking $500 jobs. What's worse is that people who need a internal vacation app, and can only spend $500, are going to go to rentacoder or elancer and hire an offshore developer for $6 an hour.

That's not true at all. Lots of companies have internal IT/programmer positions where one person will write the app, and then essentially maintain it. Yeah, you could hire some guy in india to write an app for $500, but will it integrate with all the other garbage apps you have? How long will it take to learn the database schema you're already using? What about fixing it when things go wrong (which will happen all the time)

You're right that this would also be an "IT" job, not a pure programming job.
posted by delmoi at 3:22 PM on September 27, 2009


A bit late here, but... I tend to agree with axiom, but I think some others are overstating the difficulty of this a bit. I think the best approach is something like what cCranium suggests. That is, find an IT position in a software company (preferably a smallish but growing one) and then try to move to development inside that company. In a smallish company, you're more likely to have regular contact with developers, and if you're genuinely interested in their work (and seem to know what you're talking about when you discuss it with them), then you can eventually talk to them about whether they think you'd make a good developer. Of course, there's always the danger that they'll think that you're not cut out for being a developer. But if they think you actually would be good, then you'd probably have a good shot at being seriously considered the next time there's an opening for a junior developer. Once people know you and what you're capable of, the details of what's on your resume become much less important.
posted by klausness at 2:55 PM on October 8, 2009


« Older Cultural appropriation or 70's pop culture?   |   Why did tar and nc not play nice? Newer »
This thread is closed to new comments.