Those people are smart but there's a textbook to follow, a clear path to graduation. I didn't mean to start a war of the professions, I'm sure there's already a Hacker News thread for that.
My point was, you can teach yourself a half-dozen programming languages, operating systems, databases... (which is inevitable for most developers) or you could have spent that time collecting diplomas in academia. This is not really a new concept, I read it somewhere else. Any profession that demands a lot of ongoing learning, I think people will quit because the effort may not seem worth it.
I agree you have to learn the "right" things but that takes experience and strategy. That's an interesting aspect of all of this. When everybody says "iPhone" you might bet on Android. Everyone says "Google Glass" and you might bet on Unity. If you have a crystal ball, maybe you're the next Warren Buffett ;-)
If you think you're smart enough and good at learning, do it!
Whatever field you're planning to get into you'll be competing with a lot of non experts. Sure, you probably won't outclass people with the same IQ who've been doing it for longer - but who cares?
Let's talk examples:
The reason tons of people from other professions can become devs and be competitive in a couple of years is because:
A. A huge chunk of lifelong professional developers are terrible
B. Even well paying jobs don't require you to do that much, it's the same crap over and over
They are “smart enough” to have learned the previous generation of tools while in school or in the early parts of their careers (where expectations are lower), and not “smart enough” to learn the next generation of tools while also doing their full time jobs.
So, ok, but anyone thinking about entering the field can see that they’ll be left in a lurch when they hit mid career.
We’ve already run this experiment for a generation or two; anyone smart enough to finish an engineering degree can just go do a programming career afterwards, where the work and career advancement is easier. Now we have imported chips and a million JavaScript frameworks.
"A related issue is that most professional programming is, well, easy."
This realization struck me so hard when I started on my first 'real' job. After seven years of studying to obtain my bachelor and master degree in computer science and mathematics I went to work as a programmer. In the first week I realized that I probably could have done the same job in high school (to be honest, I am probably overestimating my past self).
Something is wrong with the hiring process. Everyone wants to hire the brightest graduates, and let them build simple webapps, while in general this is very uninteresting work. I bet that there are a lot of people without a degree who could do the same job a lot better, simply because it is more challenging and they have a more practical attitude.
Aren't most of these modern day developers 4-year Computer Science graduates though? They seem awfully short sighted to me by following every latest fad.
No thanks. Been programming for 25 years, and still loving every minute. I've never felt underqualified for something I really wanted to work on.. and that's because my job is my hobby as well.
Then there are all the people I have met and worked with that have confided to me that they felt like they wasted their time going to school, or they are saddled with insane amounts of student loan debt.
Until the educational system gets some serious reform, it's just another scam like credit cards and subprime loans as far as I'm concerned.
Which is quite funny when you consider many of us are using technology that is only a few years old and we are constantly told we shouldn't stop learning to have a career in programming.
Yet another article exhorting everyone to 'learn to code'. Which misses the mark. It's true that there are a large amount of tech jobs. It's also rare that people, who would otherwise be uninterested in technology, become useful programmers. If there was a suddenly an overwhelming demand for workers who could do calculus all day, that doesn't mean a larger contingent of people would be suited that that type of work. Additionally employers are discovering that the old trope about 'all kids know computers these days' was an unfounded assumption. Sure 'they all grew up with the internet', but people grew up around cars and there are plenty of terrible drivers.
The real issue (which the author touches on) is that new graduates often don't have any inherently valuable skills at anything. If you can solve expensive problems demonstrably, you'll do fine even if you don't know python.
This is a problem with most professions though; most people feel they learnt something (in or outside of the educational system) for years and they are automatically entitled to a job for life.
As a programmer I try to have enough hobbies which can be used to make money; making/selling icecream (made enough with that this summer for 7 month of living including the working months), making/selling beer, making/selling cheese, welding, creating little RVs out of normal vans, electronics... And that is next to me not seeing anyone 'hacking a bit of WP' replacing any but mediocre coders anyway.
"the group of people with a little bit of knowledge (likely due to ad hoc experimentation and intuition based on previous familiarity with another programming language or Unix culture or just copy and paste osmosis from a barely-working heap of sticks left by the previous maintainer) dwarfs that smaller group of experienced programmers."
I think one of the reasons there are a bunch of people with
just a "little bit of knowledge" is that there are a bunch of gigs where that's enough. I also think that its a tremendous mistake for people to take these types of jobs if they have any personal ambitions to reach that "experienced programmer" level. Unless your personal situation dictates that you have to.
But, the trick is that the ad-hoc experimentation and intuition is a necessary first step to moving to the next level. I'm personally interested in figuring out what you need to really grok in a particular programming paradigm/language to be a really great hacker using that paradigm/language.
Right on! The nerve of some programmers to think their profession is in the same league with the big boys that need college and university degrees! Who do they think they are, some kind of scientists or engineers?
Hard agree. I can include myself in the group of survivors. I was a military officer commanding tank units until my early 30 and I originally planned to move into the Army's ORSA program, which requires a quantitative background, so went back to school for Applied Mathematics, ended up falling in love with programming, and did a Master's in CS after discharging from the service and here I am years later doing fine. And I don't think I'm lacking in core CS knowledge, either.
But I'm not going to sit here and say "oh, anyone can just go back to school full time while also working full time and complete a grad program at a top ten CS school with a 4.0 GPA and triple their salary within five years." The reality is this world has been set up for people like me to succeed. You see all these posts here about how terrible the Leet Code experience is but I've been working through all of the problem sets in math textbooks for fun since I was 5. I love this stuff and wish I'd have discovered it sooner. My family didn't even own a computer when I was a kid and I had no idea this even existed as a possible career field. But I won spelling bees when I was a kid. I won a television quiz show and got a perfect SAT score. I live for intellectual challenges and love being tested.
If that describes you as well, then great, the knowledge economy is your oyster. But no, that doesn't mean anyone can do it. Even at an elite engineering school and in industry since, I've seen very smart people struggle tremendously through something I figured out in minutes.
Doesn't mean I'm some kind of great or special person. Thanks to spine injuries I suffered in the service, I can hardly get out of bed some days, and for 99% of human history, I'd have been discarded as a worthless piece of trash holding back the rest of the tribe and been thrown to the wolves. I'm just really, really lucky I was born now and not during most of human history.
The author of the post started by getting into programming/CS by wanting to earn more/better money, by picking up an Access book and working it out from there, and now that he's more established, he looks down at the young hungry people who picked up an Access book in the hopes of more/better money, running through all the tropes that people who got where they are through knowledge will use.
Yes, it's useful to understand things better, and to know math. And as always since the first CS degree started, CS people gripe that people should Know More Math. Sure it helps. Other, less prestigious, things also help but you don't hear people griping about it. TDD allows the idiots in. Yes, that's effectively why you want TDD, you want to get more mileage and solving more complex or more bug-sensitive problems using the same people. Building software is not about being smart (although that helps on occasions), it's about getting stuff done.
Yes, machine learning and AI are the new kids on the block, and like Web programming, they will see a bloom of increased customer demand, and like Web programming, we'll get a progression from bespoke boutique software to frameworks that make people's lives easier to frameworks that allow any person with the intelligence of a pet rock to do simple stuff productively. Why is that? Because building frameworks is the only way that the smartest people can earn money faster than programming the (N+1)th variation on that theme everyone follows -- frameworks are what make people more productive, or allow you to use a workforce that's more accessible.
As a Wizard With a Pointy Head (aka academic), I'd say that the need for Wizards With Pointy Heads in production work is often overestimated and/or idealized. There is a large number of PhD graduates, and the market happily gobbles them up (indeed, realizing that you can hire PhDs and have them do productive work is one of the things that made Google successful as a company back in the early 2000s).
TBH, if a person is in the top 2% of intelligence and don't finish basic post-school academia, then they are likely prevented from doing the types of jobs that appeal the most to them: new/novel research, high-level problem-solving, etc. Those individuals doing interesting stuff are almost always certified. Software Development is an anomaly.
So, sure, you can get hired as a web developer, or even some non-web development roles, but that's kinda pointless because if you could stand doing boring shit you'd finish the academia to at least a very basic level.
TL;DR: If you couldn't stand the uniformity of school, then the roles available to you without a formal education are going to be just as boring and unrewarding to you anyway.
There's an art to learning. I work on that too. The better I get, the quicker it takes me to integrate new ideas.
> Learning the art of software development is similar, you need to get a solid foundation in your domain of knowledge before you can build anything both well and quickly or before you start to find things easier to figure out.
If you look at all the other skilled professions you'd find similar dynamics. You spend a lot of time paying your dues. Once you've paid them, then you have to learn how to turn them into a career. What's unfortunate about development is that there's never that moment where you call yourself done with the skill-building part and start on the career-building part. Other professions have that, but development does not and probably never will. It's too big, and changes too much for an examination to be worthwhile.
> If by wizards you mean everything they do seems like magic to everyone who has never written any code and themselves and their methods are often misunderstood I would say that is true, and I think that may be part of the problem.
That sense of magic is what keeps salaries relatively high compared to other individual contributors. It also means that we can cloister ourselves into priesthoods where those with the arcane knowledge can band together against the uneducated masses. I used to think coders needed a union, until I realized we've already pretty-well self-organized into one.
You should realize that many people have no idea how to spot a good programmer, because they aren't good programmers, so they just go with degrees. Most people, degree or not, cannot do even the most basic tasks.
If you could build a Snapchat app on your own, you are already far ahead of most programmers, so it is only a matter of getting experience to show people other than a degree. When you get into a job you will see just how incompetent most programmers really are.
If you got a job now you could have a modest house payed off instead of being hundreds of thousands of dollars in debt four years from now.
I want to start by thanking you for your service to our country. But knowing that, your elitism in the rest of your comment is even more confusing.
Not everyone is going to work on large scale engineered systems. Even companies with those systems are gonna need cheaper mediocre coders to code the app that uses the engineered system as a backbone. So what if a few months at hacker school won't replace a four year degree in CS. Take as much or as little schooling as you want, as long as employers are willing to pay for your skills.
If your goal was to spend the rest of your life doing something you learn once and getting paid well for it you seriously picked the wrong industry. Engineers have been told to constantly learn new things, know multiple languages etc since the dawn of programming.
I’ve worked with tons of programmers like you describe. I’ve continued to tell them that simple UIs and CRUd interfaces to dbs are solved problems we should not be fighting with.
Yeah 1-2 was me trying not to limit this to the guys who've been around for years. I'm probably at 4-5 and think it's common.
> If you don't love to learn and to apply the things you have learned the tech industry really isn't for you.
Not everyone is in this to learn. I've been on govt contracts where a dev has been there 10-20 years and has only learned 3 languages, (and is writing the same way this year as they did 5 years ago). It is not my cup of tea (hence the past tense).
My point is, not everyone loves to learn. If you want to excel you need to constantly learn but if you get into tech and you hate to learn you'll flounder until you find a gig that will let you coast for years.
"I guess my point is, that if you want to become a programmer, you have to be comfortable with having
to learn new things constantly for the rest of your life."
I really feel like this is the outlook everyone should take on life, not just programmers. Maybe the causality ought to be switched; good programmers are people who have a "learn something new every day" outlook on life. Hell, it could even be said that good people in any field are those who take that viewpoint on life.
My point was, you can teach yourself a half-dozen programming languages, operating systems, databases... (which is inevitable for most developers) or you could have spent that time collecting diplomas in academia. This is not really a new concept, I read it somewhere else. Any profession that demands a lot of ongoing learning, I think people will quit because the effort may not seem worth it.
I agree you have to learn the "right" things but that takes experience and strategy. That's an interesting aspect of all of this. When everybody says "iPhone" you might bet on Android. Everyone says "Google Glass" and you might bet on Unity. If you have a crystal ball, maybe you're the next Warren Buffett ;-)
reply