Now, you should definitely get a CS degree or similar if you want to be a programmer. I would have done a lot better having one even though I got by without it. Also, my career path was ridiculous and is entirely non-replicable.
Now, you should definitely get a CS degree or similar if you want to be a programmer. I would have done a lot better having one even though I got by without it. Also, my career path was ridiculous and is entirely non-replicable.
I agree completely. As a dropout, I've had people bother me asking how they should go about a career in tech, and I will tell them unambigously "for the love of god, please go to school".
Self-studying enough to be competitive with classically-trained people is really hard, and while I've done ok, it's not something I'd recommend for most humans. I like to think I'm fairly competent now, but even after doing this stuff for nearly a decade, I will still occasionally turn up blind spots of fairly-critical information that I never learned about because it was never immediately interesting to me.
Being self-taught is fun, but without credentials you end up having to work at companies that are willing to take chances, and as a result of that these companies have a propensity towards going bankrupt, or being run by scumbags who will run away with all the investor money (true story). I'm not even 100% sure what advice I could give people trying to imitate my career..."Hey kids, repeatedly fail upwards until you accidentally end up working for a company that happens to get acquired by Walmart which will somehow legitimize your experience".
This is one of the notable difference between my pre- and post-degree careers: a degree opened the door to jobs with stable Megacorps. I still get the opportunity to work on cool, cutting-edge stuff, while also having a good salary & health insurance with reliable raises, decent vacation, and a lot of intangibles (nice equipment).
Plus, if you enjoy programming, CS is an incredibly fun degree (when you take the right courses).
That said, it was a rocky and scary road to get to this point; if you get your degree you can often start out immediately with some stability.
I never took CS, as I was a math major before dropping out. Honestly, math is still more of a passion for me than CS (despite me loving programming), and I consequently do have some regrets about how I handled school; specifically, I'd like to get a job doing research, but as it stands that would require me first finishing my bachelor's, then getting at least a masters, and probably a PhD. Doing night school for a bachelor's is definitely doable, but I don't think I've heard of a single success story of people trying to work full time (which I would need to do to pay my mortgage and support my wife) and doing a PhD. If I had finished school the old fashioned way, I could have conceivably gone straight to grad school before entrenching myself into my current (admittedly comfortable) lifestyle.
I worked full time during the second half of my PhD, paid a mortgage, supported a wife, and had a daughter.
If your wife doesn’t have a paid job and so doesn’t have any income, in order to look after the children, then no.
And in some countries it's also an incredibly affordable degree. I was able to pay off all my student debt with part time jobs between semesters.
If anyone asks me if they should go to school, do a bootcamp or learn by yourself I always tell them that "don't take my word for it but I'd personally never go to school to learn and get job as a programmer if that's what you want". Seeing as I've "made it" so to speak coming from a another field, without any kind of degree whatsoever, with no prior work experience in IT, I personally don't really see the value of going to school unless you really want that experience or if you're the type of person who needs a structured way of learning.
My career path is also strange to most people since I started out in sales and marketing, then went into finance as a glorified salesman and eventually got fed up with sales hussle and learned web development on the side. So from that I decided to learn how to code and web development to actually landing a job as a web developer took roughly two years.
I believe that with my soft skills from sales and finance and a decent portfolio made the decision to hire my over let's say someone straight out of college with no other credentials a no brainer.
Sure, I run into those "blind spots" from time to time but so far everyone I've ever talked to who has been in tech and specifically in development positions says the same thing, they all have the imposter syndrome and it won't go away.
You have to ask yourself what would be more effective: 4 years in college (spend $170k) or spend 4 years learning on your own (free), working on open source projects (free), and/or getting an entry level job (earn 120k or more)?
Also, why the constraint of "out of state" tuition? In-state tuition for CUNY schools is ~$7,000/year. 4 X 7,000 = ~$28,000. Is that a lot of money? Sure, but it's less than my first year's salary as a dropout, even without your inflated numbers.
I mean ideally before you entered school you should have had some type of idea about programming. I know many people who started writing code very early but even if that wasn't you you should have at least gave it a shot before you dedicated a major to it right?
Therein lies the problem, if you're intelligent enough to start learning on your own, at what point does the opportunity cost of college outweigh the benefit? If you don't have the initiative or desire to start on your own, then you probably won't make it very far in this field anyway because it requires constant learning and experimenting on your own.
I guess that's why so many companies look for "self-starters"
Systems Engineering is what you want my friend. Companies are totally willing to be adventurous in their hiring when staffing roles like SRE, since SRE requires skills that schools haven't figured out how to teach.
FP has been academic for most of its life, but until semi-recently they didn't teach it much in undergrad. My interest in it more or less coincided with the advent of MapReduce and as a result suddenly FP is all the rage, which worked out well for me.
I guess that would be the advice I could caveat my previous comment with; if you decide to not go to school, try and find a current blind-spot in the current education system and fill that.
Please note the SRE book has been raising awareness of these facts with the public, so the opportunity window is likely to shrink over time as more people try to get in.
I know enough algorithm stuff to pass a lot of whiteboard interviews (and I certainly know a lot more now than I did during that anecdote), but I'm not sure I could write a min-heap or merge sort without looking a bunch of stuff up first. I don't think I'm stupid, it's just that I don't typically write explicit merge sorts or min-heaps in day-to-day code, and it hasn't been sexy enough for me to write my own, but I do think having an understanding of the mechanics is useful and important.
Ad stated "3-5 years of professional experience", I had _zero_ experience.
Ad stated "Masters degree, or Bachelors for very experienced candidates"
Ad had a laundry list of software and tools, I had experience with one CAD program.
But what the hell, I didn't have anything to lose, and the company was located a 10 min walk from me. So I applied.
Got called in for interviews, which lasted a couple of rounds, but managed to land the job. I know people with very similar stories.
So yeah, my advice would be for people to just apply, if they see something they'd like. Worst thing is you don't get the job, companies won't ridicule or blackball you for applying.
I have had an experience to the contrary. Of course, it's a good sign you don't want to work for such a company anyway.
I don't know. I have to say "me too" here and I've encountered enough of us over the years that I think it's just a big lie. There are a certain number of high paying companies that perhaps overvalue a college education and algorithmic competence.
But overall I think about half of the colleagues I've worked with either had no degrees or had degrees that didn't do them any favors in this career. Our career paths are certainly replicable.
In fact, I'm always impressed by the people I meet that don't have the education but have incredibly strong CS fundamentals.
It matter a lot more for juniors who lack any sort of experience. I think it make good sense for young people to get a degree but it makes less sense for seasoned professionals to go back and get one.
If you don't have a degree but have experience, don't let the degree requirement stop you from applying.
Then don't list it as a requirement..?
So, you lie about your actual requirements (how hard is it to add the classic “or equivalent experience” qualification?) and expect potential applicants to intuit your hidden meaning?
All requirements on a job application, from degrees to the technical, are all subject to negotiation. If a job requires JavaScript but you can demonstrate that your other skills more than make up for it (and you can learn) then maybe you'd still be a hire.
Ethics are another question, but the rationale is clear.
After all, it's the law that fails to recognize that 7 years of experience in different environments may trump having a degree. Policy makers recognize this and allow the situation to exist because they know that you're not going to get residence for the 7-year-no-degree dude, you're going to get it for the 5-year-Masters-from-CMU fellow and it's better to have that guy in than out.
As with any kind of transaction in business, the terms of employment are negotiable. A job posting is simply an initial ask.
Making it explicit that you will accept "experience and a good resume" in place of a CS degree might increase the diversity of your applicant pool.
[1] https://hbr.org/2014/08/why-women-dont-apply-for-jobs-unless...
I might attempt to make that more explicit next time but it's a slow process.
Last time I was applying for work, I sent out 150 applications/resumes, every single one I look at the list of requirements, if I don't meet one of them, I don't apply because it's a waste of my time.
If you're not confident in your fundamentals then you won't apply because you can't tick all the boxes.
If you ARE confident in your fundamentals then you'll apply and probably get the job and the posted 'requirements' won't even factor into it.
Knowing that is the difference between 150 applications, and just 1.
Unfourtuantly, these features are often inversly correlated.
Also, remember that the people who actually decide who to hire are often as frustrated with the process and its artificiality as the applicants.
I've gotten many jobs and not met all the requirements. If you're good in something they want, but miss something they want, they might hire you.
Especially if you're the best candidate among all the candidates, none of which often have all the requirements.
Not applying certainly takes you out of the pool.
Sending in a resume or filling out an application is pretty low risk. If a company absolutely won't hire you without a degree, you just won't hear back. Big deal.
I would just say, "Degree in CS related area or related experience highly desirable".
I once got a job with zero qualifications for it -- in fact, the interview was almost entirely just me asking the interviewers how to do the job! They had other applicants but I guess my total and complete lack of experience didn't scare them off. The job was initially daunting but otherwise a fantastic experience overall.
I did an interview with one of the FAANG.Co once and ended up arguing with the technical interviewer because he was a douche. When I found out he would have been on my team I told the recruiter I wasn't interested anymore. They ended up turning me down anyway because I didn't get along with the guy. Basically he was asking me to implement a JSON parser in brainfuck, not a legit use for either of our time.
When I interview people, I ask straight forward, probing questions looking for how the candidate approaches the problem and the path they take to the solution. I don't ask trick questions, I don't mislead the candidate, and I help them as much as I can to get to a solution on their own. However, I look for and probe for information throughout the process. It's relatively easy to discern whether someone knows what they're talking about and can apply it versus someone who crammed for the interview. Moreover, if someone did cram for the interview and was able to apply the knowledge that quickly - great, I want to work with people like that.
Had someone asked me to implement a JSON parser in brainfuck - I would have got up and left. More generally - if someone asks me to use a _specific_ language in an interview; it's not someplace aware enough to know that 99% of the time the language is unimportant and not somewhere I want to work.
With all that being said - technical interviews are not "the worst thing ever". They serve a vitally important task of ensuring I work with competent and personable people.
sure is emotionally charged, but I don't know that it is myopic. I have thought many many years about the contents of a technical interview. Taking a step back from the argument I recall decades ago noticing that, I believe it was the bureau of labor statics, software programmers are considered "unskilled technical labor." I was initially offended by this. I have now come to the realization that this is generally true. Skill is not required to make software, nearly anyone can do it. Leading back to the argument though, what makes someone good at being a software developer is not technical skills. It is general competency, critical thinking, and being a good communicator.
> Had someone asked me to implement a JSON parser in brainfuck - I would have got up and left. More generally - if someone asks me to use a _specific_ language in an interview; it's not someplace aware enough to know that 99% of the time the language is unimportant and not somewhere I want to work.
to be fair that wasn't the exact request. It was more along the lines of "using whatever (approved) language you'd like, implement x with that assumption that your base language can only loop and increment." x in this case was something like do division. Which I know is possible, but also something I would never need to do and as such the solution wasn't immediately available to my brain.
> With all that being said - technical interviews are not "the worst thing ever". They serve a vitally important task of ensuring I work with competent and personable people.
was definitely hyperbole, but my point is that a technical interview doesn't serve the purpose that you lay out for them being vitally important. A non-technical interview is far better and easier to evaluate a persons competency, problem solving, communication, and "personable people".
Point being an entry level person with competency and problem solving skills can be taught technical skills very quickly and/or learn as they go. Non-entry level, well, their resume should tell you they have the technical skills assuming their references check out. So I really think we should stop wasting time and talent on "technical interviews"
This sounds like a great interview question. It calls on the candidate to show they understand what a turning complete system is and then put that knowledge into practice to create the fundamental building blocks that are normally given to you.
You used hyperbole to make it out to be something it definitely wasn't.
> Which I know is possible, but also something I would never need to do and as such the solution wasn't immediately available to my brain.
In fact, you do need to do it, you needed to do it for an interview. The fact that you see it that way might underscore a personality trait that the interviewers might not have liked. Thus giving credence to the interview process immediately.
> A non-technical interview is far better and easier to evaluate a persons competency, problem solving, communication, and "personable people".
No it's not. It's far better at providing a "comfortable" place for someone to chat without actually proving anything. A good technical interview is problem solving _with_ time to chat and prove understanding of concepts.
> Point being an entry level person with competency and problem solving skills can be taught technical skills very quickly and/or learn as they go.
This is clearly false otherwise we wouldn't be starved for competent technical candidates. There're thousands of companies looking for qualified candidates and they can't find them.
> their resume should tell you they have the technical skills assuming their references check out. So I really think we should stop wasting time and talent on "technical interviews"
Resumes are worthless - doubly so now that politicians have made lying OK. The majority of people I've interviewed lied on their resumes, either as small white lies, or as large ones. And personal references are also garbage - there was a recent radio host that called random numbers and asked for a "reference" for a candidate they were interviewing. People went out of their way to talk up the fictional candidate.
> Leading back to the argument though, what makes someone good at being a software developer is not technical skills. It is general competency, critical thinking, and being a good communicator.
Yes to critical thinking and communication. You just aren't going to get a good read on a candidate without asking thought-invoking questions. You've either never had a good interview or you don't interview well and disparage the process to feel better.
As a hiring manager you probably dream of finding more people like your best performers, yet this makes it harder.
I agree there is value in a theoretical foundation and would also encourage people to pursue it.
However it seems like a separate point from the reality of the market today. Even historically, could you have lost out on a chance to hire Faraday or Ramanujan because they were scared off from applying by boilerplate text?
To be fair, I may have lost people with lower confidence in their abilities and a greater fear of failure. That doesn't sound like a great loss. I'd rather encourage people to have confidence and get over their fear than lower the requirements.
It's not as if these aren't important requirements; everyone in the department has a CS degree right now. If we put background in a technology, it's because we use that technology. But I'd open to the possibility that an applicant who isn't a perfect match might still be a great candidate. That's all. I suspect most hiring managers feel the same way.
1) Are there diamonds to be found in the hiring pool of candidates without a CS degree?
2) Whats the most efficient way to hire people in an era where a hiring managers or company HR can receive thousands of resumes for a position?
You're refuting my point on the basis of (2) for which I made no claim. To that point, yes obviously any process chosen has to be practical and take into account many requirements.
However (2) is an issue whether or not you screen based on CS degree. Moreover, it doesn't necessarily get worse.
Any major change to evaluation process should be holistic and take into account number of evaluations, time and money invested to evaluate, and where resources are spent in the process. You could come out the same or better in time and complexity, hence "process optimization".
Lots of approaches have been tried and some are anecdotally successful. The biggest obstacle I've seen to improving process is scaling it up to large numbers. What's optimal for organizations of every size and requirement set can't be written in stone.
I would just hope that whatever the policy at my organization would have been, still someone would have whispered Faraday's name to me, along with countless other folks who wont be famous but who we've all seen make great contributions.
That HBR article I linked in the other thread actually addresses that. Their survey indicates that people are deterred less by lack of confidence in their abilities, and more by lack of confidence in your process to assess their abilities in the absence of a credential. The top-given reason (from both women and men) for not applying was “I didn’t think they would hire me since I didn’t meet the qualifications, and I didn’t want to waste my time and energy.”
Now maybe you're actively looking for people who hustle and won't take no for an answer (which isn't quite the same thing as "confident in their abilities"). Maybe that's your team culture, or your company culture. That's certainly your choice if so.
So if you don't have a degree, you probably shouldn't let that hold you back. And maybe because you don't have a degree you should hustle a bit more than those who do. Again, that shouldn't be controversial.
These days, even job descriptions at a lot of the FAANG and other big tech companies phrase it as "CS degree or equivalent experience required". Hopefully that's a practice that will trickle down to smaller companies over time.
I'm wondering for how long Americans are going to be exploited like that. I mean getting a degree is never a bad idea but in my country (Poland) unis are FREE yet I never went to one and roughly 80% of my programming friends never did or they studied something entirely different. And we're working everywhere from big banks in London through Swiss pharma companies, European Commission in Belgium, to Opera or Google. I never got asked if I have any formal education after my first 2 years in IT. The best programmers I know are mostly all self-taught. Almost all the successful ones are. The "educated" ones often become corporate slaves making pennies in places like Samsung's R&D. I know American unis are top-notch but I suppose it's still better to start learning on your own than to pay hundreds of thousands of dollars for something else than TOP5 or TOP10 unis. And most likely it's even not worth (money-wise) paying that much for those. I suppose we will need not thousands but millions of coders in next decades, right now I'm getting like 50 messages from headhunters any given day, I don't think even if we tried it will be virtually impossible to push so many people through education system at that pace.
Also, especially programming is virtually impossible to learn in any other way than coding for years. It's really handy to have some strong technical background but once you put the time and work in it will work out regardless. Of course again it's better to have the education, but hey, if costs as much as a house maybe it's not the best idea after all. Furthermore ot everyone has to be an architect or CTO (BTW I still know extremely good architects and CTOs without degrees).
tl;dr there are possibly millions of degreeless programmers in Europe, can't wrap my mind around the US education situation, could someone clarify why are things the way they are?
It's worth pursuing a CS degree if you're the sort of person who will be accepted by one of the best schools. If the schools that teach computer science won't accept you, then please don't let it turn you off to the idea of computer science. If you can code, you're already a programmer, no matter how young you may be. If you've got grit and a positive attitude, you can absolutely be successful.
I have recently started getting doors shut for me because of lack of degree. I have 20+ years of experience though and in many of those cases am/was already doing the job they would be hiring me for. I don't know that I'd be doing any better now if I had the degree. I'm at the top in my market already, in fact most opportunities for me tend to not work out because my base exceeds their willingness to pay (without regard for the lack of CS degree).
A CS degree teaches you so much more than what is needed for a software engineering job (it goes far beyond SE and teaches you about compiler design, networking, OS algorithms, analysis of algo, etc)
I have a 4 year degree in CS and a masters in CS. Despite over 15 years of SE experience, I haven't had much use for 80% of the stuff a CS degree teaches you.
However, as the poster has said, it's very useful for getting your foot in the door.
(That said, I also paid off what little student loans I had much quicker than some of my friends, so...)