Hacker News new | ask | show | jobs
by sooyoo 1332 days ago
This article illustrates quite well what our industry is suffering from. (Apart from being 10x as long as needed and full of rambling that makes it hard to actually read fully.)

There seems to be the perception that you can just "get into programming" in a few weeks and then you are a competent programmer creating anything of high quality and value. It's not the case for skilled carpenters, neurosurgeons or concert violin players. How come people seem to believe it's true for the art and craft of software engineering? I've been a computer nerd since high school, studied a Comp.Eng. degree for 5 years, went to grad school for another 4 and now I'm in an industry job for 3 years, and I consider myself only marginally competent at my craft. How come my soccer friend thinks he can watch a bunch of Javascript youtube clips and take an easy distance course at a university to score him a high paying job 2 months from now? That's not how it works, neither with carpentry nor with neurosurgery nor with concert violinists nor with software engineering.

13 comments

Carpentry is the better analogy for programming. There's a spectrum for the work software engineers do. neurosurgery and concert violin are pretty tight on what the end goal is and you don't usually do a decent job from day one without a lot of supervision.

Whereas smacking a few bits of wood together (framing) gets you in the door as a carpenter. But there's a whole bunch more to learn if you're going to do fine woodworking. However, you can be productive from day one if you're willing to learn. That's the same as being a developer these days.

People will pay for low end skills because they are still a skill. You have a comp engineering degree. What are you working on in your job? Does the education fit the work, or on reflection do you have a little too much qualification for the work you're doing?

Carpentry is a great analogy. Half of all woodworkers have no concept of the properties of wood grain; they'll mix up edge and end grains on decorative cutting boards.

I wish I understood the "grain" in programming better. It's a lifelong search.

Programming is harder than carpentry, because the “surface area” is much larger, and also because you need a much greater ability to abstract and to understand abstractions. It would be a bit different if the programming ecosystem (tools, APIs, languages, services, etc.) was stable. Then you could train people to perform useful standard tasks, that they could then do for at least a decade or two. Just like how you build a simple table, bookshelf or cupboard doesn’t change every two years. But look at how much more complex and in constant flux the world of software development is.
Hmmm, I know I'm playing to the wrong crowd here but I am a horrendous carpenter. Here's what is missing for me from carpentry:

- copy/paste. You made one perfect table leg? Great, now make another 3. From scratch

- undo. Cut that plank a bit short? Start again

- incremental changes. Want to change the angle of that join? Start again

- imports. Don't want to make those fancy doohickies that go along the edge? You could try to buy some but it's not like there's an international database where you can pick and choose often for free

- debugging. Oh, your wardrobe just fell in a heap when you installed it? Hopefully you can salvage some of the materials and then figure out what went wrong

I'm not a very good programmer either, so I'm sure there's more

Let’s put it this way: If carpentry earned the same money as programming, we probably would have more carpenters than programmers.
You could probably say that about any occupation imaginable though, right?
not to mention all your knowledge of wood won't be completely irrelevant in 5 years.
Used to be "irrelevant in a few months (er,weeks)" for JS, at least a while ago. [ducks to avoid projectiles]
I'd say programming Grain is just simplicity. It takes real work to find that simplicity.
I get what you are saying, but the author isn't making any wild claims here, just that he finally made the transition from wanting to learn to having some basic ability. We don't think that people who just learnt to swim are ready for the Olympics, just that they can no longer be classified as non-swimmers.

What I found interesting was that part of his "learning journey" was to write a textbook about Rust even though he has never completed a major project with it. I wonder how many "how-to's" out there (not just for programming) are basically notes written as the author was learning that thing themselves. It's a pretty gutsy move and I don't don't think that I would do it

That's Mediums entire business model. Blog spam by people who can barely switch a computer on.
> That's not how it works, neither with carpentry nor with neurosurgery nor with concert violinists nor with software engineering.

Not quite a violin, but once upon a time I bought my first guitar and literally two weeks later was playing to a paying crowd of ~100 people. I certainly wasn't producing quality, and still can't, but I found something that a small number of people valued.

Some goes for software. You can create the most horrible monstrosity imaginable, but it can very much still deliver value. The audience who finds that value may be smaller than a master craftsman can attract, but at software scale a small audience is still huge.

And I’d argue the reason these crappy software products often succeed is because they’re made by people who have direct knowledge of the problem.

I know a guy who works in the food industry. Not a CS nerd by any stretch, but he started dabbling in Python, and then got a huge raise because he could use Python to autogenerate PowerPoint decks that present a bunch of otherwise tedious-to-assemble information in a fraction of the time.

Could a professional developer do a better job? Almost certainly.

Did the company need to go find/hire one to achieve a huge efficiency gain? Nope.

Will the same guy be able to spearhead some massive greenfield app dev project? Not anytime soon.

The same thing is happening across industries. People with iPhones and Davinci Resolve are churning out social media content that previously would have required $100Ks of equipment and specialized training.

Will these same people direct the next Oscar winner? Probably not. But that’s beside the point.

To play devil's advocate 1. Not all CS projects are equally hard. Many successful projects have been written by kids with no formal education. In the same way that some great music have been written by beginners. 2. Some people learn coding at 7, have a formal education up to a PhD and they aren't better engineers than others with only 3-4 years education. A reason is that a lot of time may be spent on things irrelevant for the job.

But then I agree that nowadays a few years education seems like a minimum.

There was a lot of low hanging fruit in the mid 2000s, when Ruby and Python made creating relatively complex software easier. Now most obvious app markets (hotel/travel booking, social media, ordering food, dating, ride hailing/sharing) and everything web is three layers of framework tweaking. I think clueless 'coders' had a window in time where they could actually produce a lot of economic value but now they're producing more harm then good. A lot of people come out of bootcamps now thinking 'programming = editing high level languages in a text box' and don't have the depth of knowledge to design and run sane production environments.
This was true for me. I made ok money off a simple web service I created in 2013 with no formal education. But I think it still exists to a lesser degree now, probably only if you have some other domain specific specialisation though, contacts etc. e.g I am a farmer than knows how to code a little which is fun.
> How come my soccer friend thinks he can watch a bunch of Javascript youtube clips and take an easy distance course at a university to score him a high paying job 2 months from now? That's not how it works

Except it's exactly how it works: Your soccer friend can probably job-hop for years before everyone realises they have no idea how to tell a computer what to do, and by that point, they might be ready for management.

Why are you so mad? You think hard work should be appreciated or something?

I knew someone who was hired as a carpenter with no training or experience. It happens in a housing bubble.
To be trained as a carpenter while being paid, more likely. Like the coding bootcamps that “graduate” you and then rent you out. If there’s no skilled labour. You have to create your own.
Because barrier to entry is much lower now than it was for you when you entered the field. What we do is not that difficult and with the advent of youtube, best practices, and better tools it has become much easier than it used to be. It is also easier because to learn it you only need a computer, internet-connection, and free time. Training to become a carpenter for example, requires space, physical work, and some money.
>>> What we do is not that difficult

Somethings are not, but some are. Just like everything else, software work also ranges from easy to hard.

Not difficult to do in some academic way, but often demanding of your attention in boring ways (writing tests, handling errors, etc.) that the developer in it for the money isn't able to commit to.
Just like everything else too, most of the work out there isn't that difficult
> How come my soccer friend thinks he can watch a bunch of Javascript youtube clips and take an easy distance course at a university to score him a high paying job 2 months from now? That's not how it works

That is how it works at most places for anyone starting out.

All the formal education is great for seniors and the 3% who do more than push boxes all day. For anything else, it ranges from useful to an active detriment. Given most devs will not be expected to be productive regardless of education and sit 5 years doing mostly the same work, that's a lot of time to train someone into the ideal cargoculter, which will keep them hireable in most of the market.

Vice versa, someone who sees inefficiencies, knows things can be better, etc.? Yeah, you get a few "look I did these amazing things and now my company loves me" stories, but the vast majority will struggle balancing their own desires and thoughts with company processes and political walls.

There is this idea that the initial inertia to "get it" is the main issue, after attempting probably 20 or so MOOCs, had friends run over the basics a few times but not catching the 'spark' of engagement that drives you forward.

The concept is presented in a binary because of how spoken languages are presented. you are either "fluent" in a language or you arent. Knowing a few words vs conversational french is a discernable difference, while of course the process of learning is gradual, I believe it's partially referring to the confidence to use something actively.

"Learning to program" constitutes being able to interpret nearly any code in that syntax, and to produce your own working code without outside intervention that actually does something useful. This is all that is required for most business programming, so it's the goal. A question could be posed - Can you make a CRUD app in X without someone helping you, or at the very least pseudocode one?

People want to be in the yes camp to the above question

I always have the same reaction when I watch threads on /r/learnprogramming. I believe it's due to "programming" attracting people who want quick money (without having no interest whatsoever in programming languages or computers), the hype of the Web2.0 and the scams created by all the so-called bootcamps who promised all those things.

I've been writing C++ on every OS for the past 20 years and still don't consider myself a good programmer. I read every day to improve myself though but I still have a lot to learn.

You can't become a skilled carpenter with just a few weeks of training, but you can apprentice with one if you can swing a hammer and are willing to put in the effort to learn, follow instructions, and work hard.

I suspect a lot of entry-level programming jobs are like that, even if they don't intent to be apprenticeships.

Those apprentices don't get paid a journeyman salary though, but many of these very new programmers seem to think they should.
I understand the sentiment, but this is just the inevitable result of "software eating the world" and huge demand for programmers. Rather than hand-wringing over all the clueless attitudes out there, count your blessings!
not sure if appearing competent enough to score a job is really dependent upon actually being a decent software developer