I've worked as the lead network architect for a large ISP, as a developer and then lead developer of a network security tool, as a security researcher (I have a pretty decent cite record and a fun list of universities with courses that have taught papers I wrote), as a 2-time startup founder, the first of which was VC-funded, as a lead developer for a large-data Internet backbone monitoring system, and as a product marketing manager for several years. The shortest of these roles was 2 years; the longest 8 (and counting).
No. You do not need a degree. Early on in my career, I was asked for my GPA and then my SAT scores, by HR, after passing a job interview on Wall Street; I declined to continue the process. I've walked from all similar requests ever since. Not only do I think it hasn't cost me, but I think it has also helped me, by keeping me out of jobs at companies that suck.
If you're going to skip college, be very serious about your craft. Opt for difficult jobs. Tune your career so that you are always on the verge of being overwhelmed. Read like crazy; particularly, read papers, not blog posts. Learn a systems programming language and a functional language, then stop with the languages and start building things from papers. Be careful about getting wedged into things that are just barely programming, like CRUD web apps and iOS design. You can do good work in those settings, but the median project is (technically) boring. You know something is going wrong when you start promoting your unit test or A/B testing tools.
Watch out for IT. IT for people without a degree is a trap.
Consider staying in school long enough to pick up math. Math didn't matter much in my first 10 years or so, but it matters a lot to me now, and doing it on my own is a slog. I would pay a lot of money to be taught serious linear algebra and calculus instead of hacking and slashing my way through the subject on my own.
What do you mean? You just talked about being in IT without a degree.
IT is a part of IS, but IS is bigger than IT. If your job focuses on fixing technology (such as computer repair), you're working IT. If your job focuses on processes and people (such as software development, information security, business enablement, etc), you're working in IS.
For your website, the IT portion is the server it runs on. The IS portion is the IDE you use, your development environment, the server, your language/framework, the browser, your developers, and your customers. That's the information system as a whole that allows your website to work.
But yeah, when I hear "IT guy", I think desktop support. People in IS outside of support tends to refer to themselves as something more specific than general IT: I'm a programmer/developer/software engineer. I'm a network administrator. I'm a systems architect. I'm a security engineer. That's just my experience, and that's what I interpreted the comment "stay out of IT" to mean. Desktop support doesn't tend to have much room for growth compared to careers in IS.
This might be different in other English-speaking markets, but at least in this thread, that is what is being expressed. It doesn't matter what term is being used, that is what the parent was trying to get across. Don't become "the IT guy". The definition of IT guy he was using is "computer janitor".
Frankly, it's fun:
It's a good way to meet interesting people... and if I listen very carefully I'll find an unmet business need that I can help with a custom database or an app.
I don't think anyone would disagree that being able to find a need and sell yourself as the solution are two of the biggest assets in finding success.
It sounds like you're a little older than a person who would be debating going to college, though. I had a coworker that trained me at my current job who only had a few classes at a community college. Being hired a decade after him, it was required that I have a bachelors degree. Things have changes rapidly in the past few decades in terms of HR expectations at larger companies. I'm not trying to detract from your advice, because I think you're absolutely correct. I'm just wondering if you would be able to replicate your success today.
But again, to make that work, you need to be serious enough about your craft that you can demonstrate ability clearly.
Its highly relevant if they're going for the stealth ageism thing. GPA is an age proxy. Due to grade inflation, the "respectable" GPA I earned in the 80s would in the 10s mean I was at least highly unmotivated if not outright mentally impaired. There was a time, a long time ago, when mid three something was a respectable accomplishment.
Superficially, if you ask an accountant job applicant how much their first car cost, after getting their first real job, that sounds wise. After all, the more expensive, the better they must have been at budgeting and money management, or at least they were ambitious when filling out loan paperwork, and that sounds like a great skills for an accountant. However obviously due to inflation all it will do is prioritize cheap young meat ahead of older more expensive. My great grandfather's first postwar 1946-ish caddy was only about $3K, therefore by numerical metric definition he'd be only 1/10th the accountant compared to a 2013 grad buying a modern commuter car.
I often think history departments should get more involved in the other subjects taught at school so that you get a bit more perspective on why things are they way they are.
Really liked what you wrote and found this particularly interesting. Can you elaborate on why you think this is important and how you generally go about it (finding papers, choosing what to code, etc)
There are accelerating returns for knowing one or two languages so well that you can build nearly anything in them.
There aren't diminishing returns for learning new concepts, new algorithms, new distributed systems protocols, new problem domains. You can keep implementing things from papers indefinitely and you will keep getting better and, potentially, more valuable.
> Math didn't matter much in my first 10 years or so, but it matters a lot to me now
Can you please expand on what kind of math matters a lot to you and your work now?
> I would pay a lot of money to be taught serious linear algebra and calculus instead of hacking and slashing my way through the subject on my own.
Why not just take it at a univ. then?
Regarding the importance of math to my career now: cryptanalysis, signal processing.
This seems like a common situation, and I am almost surprised it is not adequately addressed yet.
Not trying to start a language war or anything but would really appreciate learning what you (would have) started with especially on the functional side of things.
One thing I would add is to learn how to write, as tptacek obviously has. And like the reading material, not internet comments or blog posts. Learn to write real technical reports and proposals. Many engineers, in particular software people can't write worth a lick.
For most companies, having a degree only matters in the first two phases, and ability/interviewability matters in the last two.
Experienced engineers avoid getting filtered out in the first two phases by working through their network, which allows them to skip those phases entirely. If you're trying to break in without any experience, it's much harder because you probably don't have a network and degrees are often used as a filter during candidate discovery and resume filtering (especially when the engineering manager is working with a recruiter).
My thought would be to proactively send your resume directly to a bunch of job postings, especially ones which go to a "jobs@$company.com". Anecdotally, I know I don't get many direct resumes these days, so I'd end up reading them, skipping any explicit filtering.
I have people constantly telling me I should get my degree (Older friends/family) and the ones who don't bug me about it often say things like "But he will eventually...". That said I have not yet had it hold me back in the tech field as all of the places I have talked to care more that I can do what they need than if I have a piece of paper. About a year and half after dropping out I have ZERO regrets, I am now seeing my peers who stayed in school complain about not being able to find jobs (on FB and the like) while I have had no problems at all finding a places that will hire me.
The thing to remember is to never stop learning. Some of my peers (both in school and at where I work) see finishing college as the end of having to learn where it couldn't be further from the truth.
[0] http://joshstrange.com/why-i-canceled-my-college-subscriptio...
One interesting thing to research for either immigration or jobs in general is do you get a CS degree or any STEM degree or any degree at all in any topic?
You're probably more employable if you're better rounded, so even if you are going IT instead of bench work, a Chemistry degree might help you get a job in IT at a pharm company more than an actual CS degree. Ditto finance if you want to work at a bank, etc. Employers love already trained subject matter experts.
WRT immigration this is a gross generalization but you get more points for "any" STEM degree... so if you're not going to learn anything in an IT type degree, why not get the physics degree you always wanted, immigration isn't going to care.
It helps that I was always a hobbyist (I started playing with my dad's Commodore 64 when I was 6). For the most part, everything I learned I learned by building stuff. I dropped out of college when I was 19 because my financial aid fell through, and instead of continuing with my bachelor's degree, I decided to enroll in a 9 month program at a technical school. That allowed me to fill in some of the gaps that my own tinkering didn't really cover -- things like object-oriented programming.
After that, I got my first job programming online surveys in Perl, and I've been employed ever since. Getting your foot in the door is the most important thing. You only need to find one person who believes you can do the job, and if you're intellectually curious enough, you can easily learn by doing. My first job was with a small business that didn't have anyone doing any programming, so there was nobody to tell me I wasn't good enough during the hiring process, so I was able to fake my way into having a job that gave me the employment history to work my way into bigger companies and higher salaries.
You don't need to go to college, but if you have time and money, I'd say do it.
There is ample of evidence, that you don't need a degree to have a successful career, especially in the IT sector. Then again, what do you really need? I used to think like most comments here, where college (especially in the US) is a colllasal and expensive waste of time. And if you measure it in hard skills/knowledge learned, maybe it is.
Before I dropped out, I tried to get my BA/MA in four years by only taking CS classes. It was terrible, I didn't learn anything useful. Only after returning to college from our failed startup, I realized the great benefits from college: Exploring your interests, the social setting of college, running into people from all different backgrounds and opinions. It's a truly unique experience and IMO the competitive advantage of the American tertiary education.
I'm not saying people should do one or another or whether its worth it, but it does help to get in different perspectives from time to time.
First, some context. I have degrees in math and experience in computing. I am now part-owner of an established company, and occasionally we recruit. The following is my experience based on some successful hires, some unsuccessful hires, and many, many CVs and interviews.
When I look as a CV I want to know what value you'll bring to my company. I want to know why you'll be worth the money I'll pay you, and how well you'll fit. Yes, there was a job description, but your role will change, develop, and in the end you may be doing something completely different from what we originally thought we needed.
So I want to see, quickly, what value you claim you'll bring to my company. That means you'll need to have thought about that, and tailored the CV to match not just the job description, but the homework you've done on what we do. In particular, that makes it hard to get a job via a recruitment firm.
After that, I want to see the evidence that your claims are true. Do you claim to write clear, usable, effective code? Show me some code. Do you claim to work well with others? Tell me of specific occasions that I can verify.
Sometimes you can't provide evidence, and I understand that. Make it clear that you understand that I will somehow need to verify your claims. Be sympathetic - put yourself in my place, and help me see you as a potentially valuable asset.
And all this is true even if you don't have a degree. State that you know things, and then provide evidence. I've employed people with and without degrees, and it's been interesting to see how different people have worked out.
tl;dr - No, you don't need a degree. Yes, you can get a job, but you need to provide evidence of value other than by quoting that you have a degree. Sometimes that's better.
Edited for typo and word-crafting.
Also: Just saying "tech" makes it hard to discuss. Tech ranges from IT (Helpdesk throughout very advanced network architecture), to Software engineering (Websites (html) to integrated systems, to application development), to many more obscure and loosely-related fields.
It's never really been an issue. I variously say "some high school", "some college", and "some grad school" (due to later classes...) on demographics forms, depending on context.
I still vaguely want to get something purely for immigration-points reasons in various countries. There are European programs at ICL and LBS to get an MBA without reference to undergrad; there are exceptional cases where one can get into a PhD program without reference to undergrad. To finish undergrad itself would have a high time cost (since it's been so long, potentially 2-3y, especially if I wanted to do aero or nuclear eng, and would need to refresh heavily on calc/physics), but maybe.
Startups generally don't care for any individual role, but it might influence the overall arc of your career.
I've been freelancing as a php developer since I was 20 years old. Now that I am 26 I have landed a decently paid full time php/sysadmin job that I really enjoy.
Between the ages of around 14 and 20 I spent a lot of time messing around with html and playing with linux installations which gave me the foundation to learn more advanced skills later on.
My main advice would be to take any job that you feel will increase your knowledge. If you don't like it, change jobs after a year or two.
Get some friends who work in the area of tech that you want to move into and talk with them about their solutions to problems.
If you can't find any friends in real life then find some on irc/reddit/hackernews/github...
Other people (and other people's code) can often provide you with a far better education than a degree.
One last thing - if you know anyone who is currently doing a computer science degree ask them what books they are learning from (for example books about object oriented programming eg java, books about database normalization, books about project planning).
There is a goldmine of knowledge out there providing you are interested to use it!
BUT, I saw that he had an Issues list in Excel that he would spend hours fiddling with. I wrote a bunch of VBA for him to make it easier to deal with and he was ecstatic. I managed to use this as a sort of portfolio and got a job that was all Excel and MS Access.
I convinced those guys to let me do their website, and used that as my next portfolio to get into an actual software shop. I worked my way up the ranks there until I was the highest paid guy, before moving to where I am now as head of development.
All you need to do is:
- work hard, which is easy if you're actually interested in it.
- continually think, "how does this benefit me in getting my next job / further my career?" This is a constant exercise.
I found good jobs without a degree, though it was largely through luck and networking. If you don't have a degree the "normal people" channels are closed to you and you have to use connections and people you know. of course, the "normal people" channels are for suckers so this is probably for the best...
After a few years of working professionally without a degree, I went back and worked on my degree part time. I'm finishing now. I went to a pretty good school (in the top 15 for CS) and I took pretty hard classes with a minor in math. I think that the experience helped make me a better software person. There were definitely concepts in algorithm design and data structures that I might not have experienced professionally, professors were really smart and I could go to their office hours and talk about real-world problems, and I think that learning more about math helped me think better.
I was (mostly) intelligent about what gen-eds to take and where (at a community college) so that the time and money value was maximized. I think it was a good investment. There are many jobs that you will be locked out of without a degree. Some people might say, all the better, but those environments can also be one of the few places doing something you really want to work on, like a university or national lab. Good luck finding a startup that is doing pure R&D in CS...
That was nearly 20 years ago now (I'm 38), and in that time I've worked as a developer on 3D graphics engines, real time physics engines and core tech in the games industry (for about 10 years, one project with Shigeru Miyamoto!), and then left that to start my own medical software company (8 years ago).
I now employ developers. And whilst I don't ignore the 'qualifications' section of a CV/resume, I really don't see it as remotely vital. I'm far more interested in whether you have a passion for the job, past projects etc.
So yeah, it's possible to get a tech job without a degree. Some places will insist on it. But they're not the places you want to work.
Like most things there are some caveats.
It will be harder to get into the top tier tech companies, Amazon, Microsoft, Google, etc, hire people without degrees, but not nearly as much as other organizations on the other tiers. Similarly, there are certain high frequency low latency trading firms that won't look at your resume without some MIT connection.
Some places will hire you with no problem, but have rules that will eventually cap your salary. These are usually government offices, state-run universities, etc. (For example, I know of universities where no programmer without without a master's degree can get past tier XYZ)
I worked through some Codecademy courses, developed my own site and blog and got to grips with things like Ad-Sense to get a feel for the ad-tech side of things. I pushed my self-taught achievements and motivation in my CV as well as my 10 years prior in a stable corporate environment.
I had to take a pay cut to get my foot in the door, but within 6 months I was picked for another team and was back up to my old salary. I'm now in tech support, but not IT specific (it's more APIs, datafeeds, SQL and site debugging). I get plenty of exposure to the underlying company tech and there are a lot of avenues for advancement in the future so I'm really happy I made the career jump.
However, it's not possible to get a tech job without learning a lot, so if you go in without a degree, you probably have to be the type of person who reads a lot and does a lot of research as a matter of habit. (Quite possibly has to be true even if you do go in with a degree.)
Also an enormous caveat, I had an incredible pre-college education, at least compared to most Americans. Programming classes when I was 11 years old, two years each of Latin and Ancient Greek while I was still in high school. I think I might technically have been doing college-level math in high school, too, but I'm not 100% sure.
I dropped out of Uni after one year (this was about 10 years ago). The thing was, in the hobby/amateur game development circles I was well known. Had written a bunch of tutorials, a book (when they still used dead trees) and knew folks in various companies. This made getting job easier. Now, after 10 years of work history, no one gives a damn about my lack of degree. I've working in more industries than most, form junior to Technical Lead positions.
But if I was 18/19 today, no side projects, not very well known, it would be different. When I was more involved in recruiting, I never cared about the degree, but without one, and without a work history, what can you really show me that proves you can do the job?
In a way without a degree, you may have more lee way in the types of interesting projects you can put on your LinkedIn.
The bottom line is, always be building, and always be shipping something to show what you can do. Technology is one area where one's education isn't as relevant as the ability to learn anything, in a self-directed and self-teaching way.
You will see many comments of people who've made it without a degree; they exist, but statistically it is much easier with one :)
If you can, get into a public university (at least if you're in the US or Mexico, where I have experience). It is usually affordable, and they provide a good education. It is usually easy to get a job in the field while in college.
I just don't think you need a degree if you know what you're doing.
I'm about to get a master in computer sciences, and I really think it is worth the time (no money in my case, I'm from Argentina). It teaches you the foundations of CS and that normally improves your way to think about technological problems and problem solving. Also, it generally qualifies you for different kind of jobs.
A programming position opened up at a local manufacturing company. I submitted my resume which spoke heavily about my freelance experience. I got a call for a in person interview. During the interview they surprised me with a hand-written programming test.
It turns out that I was the only person that actually passed the test out of 15 applicants.
In any event I was disillusioned with the whole college experience and started taking on quite a bit of contract work, and over the next decade started/participated in 5 startups. I intentionally chose challenging projects at the edge of my comfort zone to gain experience and build real-world problem solving skills. During this time I built a wide network of connections which gave me the ability to do contract work for several well known companies and exposure to a wide range of technologies and problems.
Since documenting some of these experiences on my resume/linkedin in detail a few years ago, I have never had a problem getting salaried jobs or contracts making more than most of my degree-holding peers and getting frequent new job opportunities to consider.
I have also been a hiring manager more than once, and have always interviewed people based on their ability to solve real world problems with an actual editor and access to google. I tend to gravitate towards companies that test new applicants this way as well. Companies that dismiss me based on my lack of formal education, I dismiss as well. Companies that judge on paper instead of skill probably lack the diverse workforce I wish to be a part of.
As an added story, I have a friend that applied for Google without a degree. He was denied. He actually contacted them back asking why he was dismissed so quickly. He was told it was because he lacked a degree. The end. He had the balls to push back insisting he is capable of doing the job and has plenty of experience. The recruiter relented and pushed him up to the next stages... and he got the job.
You don't need a degree, but be prepared to network a lot, have a healthy amount of confidence, and be willing to push back against dismissive recruiters. I won't say which path is better, because that depends on the individual... but I can say skipping college to focus on real-world experience was one of the best personal choices I ever made.
I know lots of developers, great developers, who don't have a degree. The degree may be required some places but most it's just "required". One of the best devs I know misspelled his main tech (at the time) 3 different ways on his resume. You're going to have to know your stuff but it's completely possible.
One more bit of advice. Own the "no degree" mystic. Make me believe it was by choice, not by happenstance.
The only way it has held me back is specialized fields, like machine learning, would be hard to get into without at least a masters.
Demonstrate you are a creative and tenacious problem solver and you will be valuable, degree or no degree.
When hiring, i'm much more inclined to take someone straight out of school (or someone currently, I dunno, working in a bar or not working at all) who has some good code up on github or some personal side projects over someone who has a degree and no other apparent interest in coding.
http://www.businessinsider.com/google-hiring-non-graduates-2...
Our Senior SE doesn't hold a degree either and he's worked in the industry for over 10 years.