Yet somehow we end up with people who cannot solve fizzbuzz.
That seems like a talent shortage to me.
Yet somehow we end up with people who cannot solve fizzbuzz.
That seems like a talent shortage to me.
Remember that those people (most likely) won't get hired. But they will keep fiddling with their resume/CV until they get called. So they'll keep showing up at interviews and be over represented. The talented folk will interview just a few times years apart so they are far less likely to be seen by interviewers.
If you do end up interviewing someone who can't solve fizzbuzz then it is a very good indicator that the hiring process is broken. The usual solution is to keep adding extra requirements in an attempt to weed them out, but that also weeds out the talented people too since they are less likely to have the exact required set of acronyms.
Hiring is hard - simple solutions like adding acronyms doesn't make it easier.
Thus why software engineers often get a degree, buy books, pay for classes, and so forth.
The self-education threshold tends to be even higher at the beginning. Most people have no clue how to get from owning a computer to Hello World, to FizzBuzz, to simple scripts, to a well-designed and documented program.
The real failure is when people turn to university (etc.) to learn a skill, get a "QC Okay" stamp at the end - and then still can't FizzBuzz.
You need shorter feedback cycles which focus on finding and correcting errors, not monolithic course grades and monolithic degree pass/fail stickers. You wouldn't expect it to end well if you tried code a major project that way. Why would it work any better as an education plan?
I think the reason my first instinct is to say we aren't good at self education yet is that we can see so much potential. There really is no reason someone couldn't get to bachelor level chemistry, biology, civil engineering or economics on their own. There are all sorts of problems that just go away and let everything go much quicker when you're self educating. People might be able to learn 4 year equivalents in 6 months.Who knows.
Universities solve all sorts of problems in seemingly inefficient ways that we might see being superseded soon. A lot of the things they solve though are genuinely hard problems. Most people in an Econ2003 are not fascinated with Theories & Models of Supply Elasticity in A Recession. They are sort of interested in economics and have a general feeling that its something they should be studying. They might even be reading Why Keynes Matters. But, in a lot of cases they're cranky they have to take this stupid class in the first place. I'm not sure how that problem gets solved outside of a University. Maybe it doesn't need to get solved. Maybe the future is a word where students don't need to get dragged through material they don't want to learn. If it is, I'm excited.
35 year olds are looking back and thinking: "If I was 19 today I would do it like this..." But if you were 19, you'd be a different person, a 19 year old. You'd probably think like one. There are better tools than econ2003 out there a lot of the time. But they don't work for everyone all of the time. I think we have to accept some clunky systems that sort of get the job done.
If you could tear into existing houses to look at how they're built, and if building practice houses were cheap and easy, building houses would be more like building programs.
The feedback cycle is great with DrRacket. And I don't think that's the only beginning-programmer learning environment.
Or is it because people learn early on in school that there is "no other way"?
I recently met with a banker to discuss a mortgage. We talked about what I did and discussed my education. I proudly stated that I was self-taught. When we opened up the financials, she almost fell out of her chair in amazement that someone could make that much without a degree and proceeded to call me a genius.
I'm not a genius. In fact, I ended up being self-taught because I wasn't smart enough to enter into college in the first place; rejected from every single one I applied to. Most people think like the aforementioned banker though, with the idea that only a super genius can learn without a teacher. The result is that most people aren't even willing to try to learn on their own.
So what happens is you apply filters to screen out people. One method is to filter out colleges, GPA, lack of work experience, underqualification, overqualification, or anything that isn't legally protected to get to a workable candidate pool. Another method is to only hire people you know, or people you know people you know. Still another is to build barriers (Civil Service exams, grammar tests, math test).
The problem is that if you are an unfortunate soul who doesn't get through the filter (ie. 2.9 GPA, state school, etc), doesn't operate in you social circle, or doesn't know about or cannot get through the barriers, you're screwed.
Which is why I am making 17/hr and no benefits (no health/dental, no paid time off at all). Also probably why I spent a year looking for any job at all before I landed this one.
Now I've "made it" from some people's POV. Some of the companies who wouldn't give me the time of day a decade ago would hire me in a minute now.
Well, not to be self critical, but I don't see myself ever being a rockstar. I'll be lucky if I ever hit 60k+... Sadly even that isn't much here in the Seattle area.
no scholarships anyway, plenty of student loans. Too many. I was 26 when I started college, and while my parents always told me they'd help if I went to college, all I got was co-signed loans. I'm 35 now.
The tech industry, like many other industries, uses simple filters (such as work experience or a college degree) to pick the number of people they have time to interview. The skills required to be a talented programmer, and the skills required to get and keep a job (or earn a living programming without a job) are not equivalent.
If there are people who can't solve fizzbuzz that are getting programming jobs, what do they do at work?
I can solve fizzbuzz easily, but I haven't ever built an application that I would consider useful. I've solved puzzles like fizzbuzz and completed lots of programming assignments (mostly involving stuff at the command line) and I feel like I know nothing when it comes to actually building something significant. I feel like it would be impossible for me to get an entry-level programming job right now, but from the sound of it, maybe not.
http://thedailywtf.com/Articles/The_Brillant_Paula_Bean.aspx
This is just one example, but it's a very accurate description of all of those people who can't solve fizzbuzz and yet still manage to get jobs.
The good news: They cause the programming messes which you'll eventually get hired to clean up, while they're off somewhere else making another mess for you.
> I can solve fizzbuzz easily, but I haven't ever built an application that I would consider useful.
The bad news: All you're ever do is clean up those frauds' messes. Anyone can build a system with 100k lines of Java code (incl comments). But only people like you can come along after it's up and running and make it work, so that's all you're ever be doing. Unfortunately, the employers will expect you to carry a cellphone around and solve those problems at 3:00am. It's cheaper to pay you 10% extra for wake-up calls than take your time away from other maintenance clean-ups in the daytime.
Optimist.
Much of the programming work out there is little more than connecting libraries together into an easy to use package. I've worked with some people that I'm not sure could pass the fizzbuzz test, but they were still really good at what they could do and provided value to the organization that way.
Those people probably aren't going to be hired by Google to optimize their search algorithms, but software development is many-faceted. You don't always need someone with those skills to still create something of value.
Somebody who can't write fizzbuzz clearly does not have the fundamental CS background needed to do any sort of nontrivial programming. It takes most people years to get this background, usually in a university setting. You can't replace that with on-the-job training!