Programming career?

Advice on Someone Interested in a Programming Career?

  • As someone who is in their mid-thirties, what are some realistic alternatives for me if I want to learn and eventually get a career in programming? Background: liberal arts major, working in the service sector. I'm pretty happy with my job, but not passionate about it. I've always enjoyed tinkering around with computers to the point of obsession. I'm thinking I might take the plunge and learn programming. Here are my questions. (Apologies in advance...I have quite a few!) 1. I'm in my mid-thirties. Kind of worried about being the "old fogey" in a very young and dynamic industry. If it helps, I have no kids, and not planning on having any, and have a lot of time on my hands. Is a programming career viable for me? 2. I'm not a fan of 9 to 5 jobs. I'm even a less of a fan of 40+ hour workweeks. I _will_ and _can_ stick with a project until it is done, but I'm opposed to endless weeks of overtime, with no end in sight. Are there any programming or coding jobs that fit the bill? (Or are all you veteran programmers laughing your asses off right now at my naivete?) 3. I have no idea what path I need to take or language I should learn. Learn web development or C++? I like problem solving, I'm anal, and for better or worse, am slightly obsessive compulsive. I love creating procedures that lets the computer do repetitive tasks instead of users (something I've done in past jobs, using very simple VBA commands and applescript.) I've been told I have above average to excellent people skills. I would prefer not managing anybody, however. Or dealing with irate customers on a day-to-day basis. 4. Should I consider going back to school for a CS degree? Do I REALLY need a degree to be considered employable? Should I take classes at the local college or get trained online? My schedule is pretty flexible. Thanks for reading this. Any input appreciated.

  • Answer:

    1. You can learn to program. You can probably even teach yourself. If you're willing to take entry-level pay, you can get a job. But, don't for a moment think you can apply for "Software Engineer IV" right out of the gate and not get laughed at. 2. This is a big problem. For every programmer who comes in here and says, "I only work 40 hours a week", there are probably fifteen who work more than that. And each of those people who says they don't do unpaid overtime... well, even they do it at crunch time or during emergencies. It's one of the reasons I left employment in software (and started my own firm). That said, it varies by company and personality. The last place I was employed, I simply refused to work more than 8 hours in a day unless my boss could articulate, to my satisfaction, how the current situation constituted an emergency. I got evil looks, but nobody really said anything--expectation management. The place before that, my fuckhead boss screamed till he was literally beet red in the face about how I still wasn't putting in enough time with 10 hour days. But, the trend is toward more work, not less. I've never met an employee-programmer who claimed to be in the office fewer than 40 hours a week. I mean, none of us work all that time, but you know... 3. Don't learn C++ at first. The days of its ubiquity are coming to an end (since nobody likes it), and it's by far one of the worst languages for beginners I can imagine. It is huge, byzantine, arcane, and, most damning, inconsistent. To learn to program (which is separate from learning a language), I suggest Python or Ruby--both of which have consistent design philosophies, and are excellent for beginners (plus, lots of very real projects are written in them). After you learn to program, learning the syntax of any particular language is the work of about a week. The web is the hot platform at the moment. So are mobile devices. Personally, I hate the web as a platform... and many other people consider it harmful as well (none of them are marketers). Also, frankly, I find that people whose only experience is web programming make terrible native programmers... they have to learn all over again. 4. Don't do an online degree. We'll laugh at you. Either go get your BS from a four-year university (state colleges are fine, community colleges are more laughable than the online ones), or teach yourself. Don't get your associates or any of that shit. The philosophy is basically that you as a programmer were either awfully smart and went to real college and got all edumicated. Or, you were even smarter than that, and didn't need to. Since an associates degree doesn't teach you rigorous theory (like a BS would), it's essentially like paying thousands of dollars for the information contained in one O'Reilly book. It just makes you look like a sucker. You can get a job being totally self-taught, if you have experience. But, it's a goddamn righteous bitch to get that first job without the compsci degree. You can try to come at it from the open source end, but that could take years before somebody notices you (if ever) or before a job you want actually cares about the project to which you contribute.

thisperon at Ask.Metafilter.Com Visit the source

Was this solution helpful to you?

Other answers

Learn HTML, CSS and Ruby, on your own or combined with courses at your local college (the courses should be more theoretical and not focused on any particular technology, and if there are any language courses choose C and LISP over Java). Teach yourself databases. Create a project for yourself and build it, start to finish. Choose something that interests you, shows off your skills, and you can create from scratch. Use this as a portfolio item to demonstrate skills, and look for an entry level job or freelance work at one of the many companies that need these web dev skills. Meet people at these companies through networking rather than applying on job boards. You may want to start by working in interactive (design, web and advertising firms that use technology on client projects) rather than software (companies that sell software itself as their product) where the technology requirements are lower but there is a high demand. The former can be rather interdisciplinary and you can, depending on your interests and how your skills grow, manage projects, design user interfaces, and work with clients. Continue teaching yourself: algorithms, database theory, other computer science subjects, and any other aspects of the field that interest you.

lsemel

Thanks everyone for your replies. You guys are GREAT. I guess I will try exploring my options at this point. (Oh, and Netzapper, I did get that you weren't dissing associates degrees at all, just explaining how employer's might generally feel about them. Thanks for the tip.)

thisperon

I wish to rescind my previous blanket comments on associate's degrees. Since writing my last comment, I've recalled that there are some really neat specialized associate's programs that consistently graduate excellent candidates. The one that leaps to mind is http://www.fullsail.edu, which has a video game programming associate's that plenty of people respect. So, programs of this nature would be totally acceptable. However, you need to do your research. Also, I'd like to point out that I'm specifically talking about hirability. You can get an excellent (although largely non-theoretical) programming education at a number of podunk community colleges. However, as Mr. Clemens alluded, there's a difference between education and schooling. My advice against community college is based on their popular esteem in the American software industry. Fullsail is a completely different beast than, say, Ozarks Community College, despite offering the "same" degree. If you weren't looking for the career, you wouldn't care about a degree at all. Since you want the career, you should at least seek the degree that doesn't immediately hinder your chances of even getting in the door. By all means, attend CC (and get your associate's if you want), but I'm merely recommending that you want to transfer for the BS to optimize your chances.

Netzapper

Oh, and it has been my experience that 'self taught' simply doesn't make you employable. Employers want to see the education backing you so that they know you are at least aware of proper syntax, naming conventions, structure, etc. In programming there are about a hundred ways to accomplish a task, but that doesn't mean they are all a good way to do it, you know?

gwenlister

I'm a programmer too and have worked as such for 3+ years. It really is something have to love and I believe there has to be a born aptitude. Also, a lot of what Netzapper said is dead on, especially what he said about online training, though like others have said I don't really agree with his panning of community colleges. Its true, there are some that are completely disregarded in the field, but there ARE good ones that are recognized by employers. Do your research, ask people in the field in your area, get suggestions. Also, having gotten a university degree as well as a college diploma, it bares saying that it is the college education that got me the job. I'm in canada and I went to a provincial community college so maybe my experience is different from the norm. I wouldn't worry overly about the 'old fogey' thing. You may have to work a but harder at the start to prove yourself, but once you have you're set and you'll just be one of the team. Also, the 40+ hour a week thing is going to be a significant hurtle for you. That vast majority of the jobs are exactly that, plus unpaid overtime. You need to think that one over really hard. Good luck though! And if you find that programming isn't for you, have you considered focusing in a hardware/repair instead of programming?

gwenlister

While Netzapper's points about C++ and the web as a programming platform are right on, his puzzling rant against community colleges is one of the bigger pieces of bullshit I've read on AskMe in a long time. I'm sorry I was unclear. I don't actually have anything against community college (hell, I've attended my share of classes at them). It's just that, in my experience of the industry, an associate's degree from Vatterott College or whatever is a big glaring red flag that frequently prevents even the first interview. That said, I really do think that an associate's degree is a waste of time. I've interviewed people fresh out of those programs: almost invariably, these candidates have demonstrated competent knowledge of the syntax and features of a particular language (Java lately), but have basically no theoretical skills. The fact that you know all the member methods of ArrayList is utterly, completely worthless if you can't tell me how an ArrayList differs structurally from a HashMap. So, OP, go ahead and take community college classes. You may find them quite helpful. However, the associate's degree probably won't prove helpful. If you decide you need a degree, transfer your credits to a 4-year school and get the BS.

Netzapper

I meant to be explicit: Keep your current job and learn in your spare time. Having a job that you don't outright hate means you get to pick and choose which programming job you eventually take. A lot of them are going to suck way more than whatever it is you're doing right now.

cCranium

Here's some moderately scattered thoughts that comprise a different angle, since much of the existing advice is very good. Learn to program (http://www.greenteapress.com/thinkpython/ is a great start). Think of some kind of website that you would pay money to use. Build it (the book will teach you python, so learn http://djangoproject.com). Charge people. The vast majority of corporate programming work really is sitting at a desk from 9 to 5 with occasional serious crunch. There is, however, a lot of room for people who do it differently, and one of the best ways to do it differently is to build something people use. While reading How to Think, start planning your project. Write down ideas and sketch out interfaces. Without worrying about building a web project think about the things the book is teaching and how they'll apply to your project. Implement a command-line version first, the practice will be useful for learning and for the final product. Also, my standard advice for new programmers is to find an open source project that you find interesting and start following along with the project communication - there'll be mailing lists, irc channels or forums or even just git or svn logs. Use the things discussed around the project as starting off points. Wikipedia is full of great starter articles about concepts and technologies and links to deeper discussion. Find technology social groups in your area (meetup is a pretty decent resource) and let them know you're a newbie. Most geeks are pretty gentle.

cCranium

As a very specific, place-to-start piece of advice, but Stanford's intro to CS http://see.stanford.edu/see/courses.aspx is posted online, with tapes of the lectures and everything. I haven't actually looked at it and don't know the content, but if you learn better that way than from just reading a book or just diving in, it might be a good thing to look at.

brainmouse

Find solution

For every problem there is a solution! Proved by Solucija.

  • Got an issue and looking for advice?

  • Ask Solucija to search every corner of the Web for help.

  • Get workable solutions and helpful tips in a moment.

Just ask Solucija about an issue you face and immediately get a list of ready solutions, answers and tips from other Internet users. We always provide the most suitable and complete answer to your question at the top, along with a few good alternatives below.