Getting a job in programming without a related degree?

5    19 Jun 2015 19:56 by u/tehPenguin0fd00m

Long story short: I graduated with a BA in a field I have lost interest in. I enjoy programming in my spare time, though I haven't worked on anything major. I have some experience with Python and C# (as well as Javascript, which is not really my favorite thing). What skills do I need to develop to find a job in this field and how can I find someone willing to hire someone without formal CS education?

Quick edit: I'm located in Northern NJ. I'm open to working remotely if that makes any difference.

Edit 2: Got more responses than I thought I would! Thanks everyone. I don't want to just post the same thing over and over to everyone individually, but I've read and upvoted all the comments and am taking the advice to heart.

9 comments

7

if you can code, no problem. nobody cares about a degree in most IT fields. If they do care, they're terrible at their jobs so you've dodged a bullet.

the best way to get hired coding is to code and have a portfolio to show. join projects with other people too if you can - that shows you can work as part of a team. skills and fundamental knowledge are what will count. education is massively overrated in general and has little relevance in most IT spheres.

4

Get a github account start coding for yourself, being able to competently use git = great skill. While your there fix some bugs for other people, voat has bugs went not help them out, learn bug fixing, code review, and help the site whilst building a portfolio = win. Buy a raspberry pi set it up as a home headless webserver shows you have some knowledge of sysadmin, can navigate in bash, setup ssh tunnels, use it to make calls to an api, set up your own email address. I know businesses that look for that, fluffybunny69@gmail.com does not present your self well. Mrbigdick@bigdickenterprises.com would be far more impressive for any gender or possibly something more professional. Learn about test driven development, agile, lean, ux design, unit testing, last of all learn a programming language, there is a good chance after you get a job you will end up using a completely different language anyway.

0

Lots of good advice, thanks. I already have some familiarity with git, but I know I have more to learn. I also already have a personal email domain so I've got that locked down :D.

I'll work on the rest too, thanks again.

1

Not a problem, don't try to be an expert on those things but have some knowledge enough to be able to talk about them. If anything you particularly enjoy then that may steer you to a particular area of programming. Good luck!

3

The most important skill you will need to go from a hobbyist to a "professional" is knowing how to share you code on code repositories. Any Joe Schmoe can get a computer science degree, but it's my experience from working with these people with degrees that only a small percentage actually have the skills to write code.

I am a professional software developer with no post-secondary training in the field, and have so far had a successful career involving web and desktop software.

About 60% of places I've worked at contacted me through code I had publically available on google code, github, and bitbucket.

Here is a reasonable piece of advice: always work on some interesting code, even if it's broken or trying to recreate something that has already been done, and for every interview, bring your laptop to show off your code. Also, employers who want to test your ability to program solely from memory without any resources are probably shitty places to work. I have had a few interviews where the interviewer would just ask me to explain random functions in javascript, some that were quite obscure - this type of information does not make anyone a good programmer.

With that in mind, a good programmer (or any type of engineer) is a person who can understand and break down complex problems into a series of simple problems, and finds creative solutions to those simple problems. A simple problem is just understanding a single aspect of a complex problem. If you can't break down a complex problem, it either means you do not have a good understanding of the problem, or the problem is already broken down into it's simplest form (this is unlikely).

This is also a recursive cycle, so you may have 1 major problem, and you break it down into 3 simpler problems, but then those three may need further breaking down once you understand them, and so on.

I will go against what /u/Empire_of_the_mind has said, that there are a number of companies that care about a degree, and it makes it tough for people like us to find work. Even my six years of professional experience in a number of things employers find interesting (Computer vision, full stack web development, a number of computer languages) still does not cover my lack of post-secondary degree for a number of companies that I've applied to (both small and large).

I would also not recommend working remotely for your first few programming jobs; you will miss out on a lot of interesting opportunities to learn from people just by being in proximity to them. Aim to be the dumbest person in the room.

My first real programming job was remote, and it was the most difficult job I have ever had. The company was actually very supportive of me in both my education and remote working situation, but there was a huge work-culture disconnect, which is difficult when meshing with any-sized programming team.

To close things up, don't stop learning. Don't stop with Python and C#. And most of all, figure out what you like to code, what the best tools to use for what you want to do, and learn. Did I mention keep learning? The software world is constantly coming up with new ideas, standards, techniques, and it's a programmers job to keep somewhere near that edge (without getting too caught up in hype of something new), and it's always looking for someone to champion the challenges those bring.

1

Thanks for the advice! I loved the "be the dumbest person in the room link."

1

Get as much experience as possible, and do a lot of interesting projects in your spare time. Open source is best because prospective employers can view it and assess whether you're any good or not. It's best to do something relatively unique, as anybody can copy a tutorial off an internet to make a nice weather app/to-do list, so it's hard to judge ability from those.

Plus one to the suggestion of software QA. I spent a year as QA in software related to my degree, then blagged a job as an Android developer - I doubt I'd have got it without that experience.

1

You only need one skill. You need to ship a product that works so that people can see what you're capable of and the product has to be something useful. This right here is what separates the six or seven-figure coders from the others.

The more of a niche you tap the lower your pay will be. The bigger the aspiration and the better your execution, the higher your pay will be.

Think of something great. I can help you toss ideas around if you want. I've got lots of experience in this kind of tutoring.

Keep failing faster and faster. Keep a codebase on hand that you can use to launch things faster.

1

There's a lot of good advice in the other posts, but here's one thing that most of them have glossed over: when interviewing for a programming position, 99% of the time they ask you questions about first year CS content - stuff like "implement a sorting algorithm". Read an introductory CS book (this was the one we used in my course) and you'll be fine. You might also want to consider learning C/C++ as well, just to round out your skill set a bit more.