Ask HN: To encourage new coders should we adopt a new approach?

9 points by lucidguppy ↗ HN
I think more people would consider learning programming if they understood it as a skill to add to the pursuit of their main interest. Young people see many careers as more prestigious, glamorous, or more exciting. For example, I think they could be encouraged by seeing that a research scientist who can program as having a skill that could make them more productive. They could for example automate the aspects of their job that are mundane and stretch their grant money further.

I also see many entrepreneurs come up with companies that combine programming with their primary area of expertise. I even see doctors who write programs to help do their job.

I just don't think its an angle that initiatives examine.

A dual interest person can fall back onto their comp-sci skills they have if they cannot find work in their primary interest as well.

24 comments

[ 4.8 ms ] story [ 70.6 ms ] thread
Contrarian thought:

Is this what we want to do?

With things like GitHub CoPilot, numerous no-code solutions, coding being codified, etc. how much skill and demand is there looking ahead?

I wonder if the future is as bright as the pass. Perhaps it's just me.

I wonder if the future is as bright as the pass.

Depends on whether you mean for dev salaries or for humanity as a whole.

I don't think CoPilot belongs in the same category as no-code. If you don't have any coding experience you'll struggle to express what you want it to write into words, much less be able to integrate it into a larger system.
My lens is CoPilot makes those already writing code more effective (i.e., there's less need for more who can write code).

That said, and to your point, with CoPilot - which is still early days - we don't need to teach people to write code, we need them to express ideas in a way that CoPilot (or similar) can understand and convert into code. Which might be something that that original question answers.

More and more school districts are teaching coding as kids grow up, so they already know it is a skill they can use for work. Just like everything else they learned in school. And those who love it are pursuing for work, while those who do not are going other directions.

All of that seems fine to me - it may be worth considering that when coding is integrated into your worldview as just one tool among many, not everyone will pick it out as the tool they want to dedicate their life to. And based on how many angry, cynical, burnt-out coders exist in our industry... the fact that some young people are not pursuing it may be a healthy choice.

No because more new coders would drive salaries down.

As a developer who enjoys being paid a butt-load, I propose we raise the bar even higher.

Sounds great! I'll set up a professional body for CBPs (certified brainfuck practitioners) and will get my cronies in government to pass a law against code being written in any language other than brainfuck or by any person who isn't a CBP.

You can become a CBP by apprenticing with me for 3 years, during which time you'll do software projects for my clients. Obviously the clients will pay me, not you, and I'll pocket the difference between what they pay me and the minimum wage I'll be paying you. In return, I'll teach you nothing, and I'll reserve the right to kick you out on the street before your 3 years are over.

This model works great for other professions. And I'm getting too old anyway to be making my living in any way other than by rent-seeking -- which seems to be what everybody else is doing.

Are there enough coders already?

For me coding is not a love story. It can be fun bit mostly it takes absurd amounts of time, time I would rather spend doing something fun and exciting. No, living in your head creating imaginary worlds isn't what I consider being fun.

Music creation, DJing, dancing, hanging out with people, traveling is more fun.

Coding is a means to an end, something to get me closer to the goal of not having to work because my income comes passively.

It's not a good life. Staring at the screen for hours days weeks years. It's imitation of life in every sense. Slavery even.

Also why do you care if people decide to be coders? Let them do what makes them happy

This comment is unironically based LOL. It's a very cynical take, but I do agree that coding and programming doesn't need to be universal, and any attempt to do so has failed.

There is/was this strange wave of every educator demanding programming be taught to middle schoolers and high schoolers. It never turned out great - at best, they were taught very basic Scratch that helped them develop their problem solving skills vs. their programming skills.

Computer literacy is far more important, and is completely decoupled from coding. Instead of coding, every student should be taught how the internet genuinely functions, how digital privacy works and more. Knowing how a for loop works doesn't help with any of that.

>Also why do you care if people decide to be coders?

Probably due the narrative that privileged, young white men control the world with their computer programming. The reality is, ironically, that programming is how well-meaning people with a certain type of smarts find themselves grinding away to perform other people's wishes.

Programming is fun, but learning to program from zero is boring. And that's partly because the way it's being lectured.

Learning to program it's like learning to speak a new language. And learning a new language is boring when all you can do is completing some monotonous exercises with no evident real life use.

It's 2022, computers have become way bigger and complex since 1980, and "look this device can prompt for a number in the terminal and multiply it!" Does not excite everyone anymore.

Also, the distance from "hello world" to "use your coding skills creatively" is really high, and a lot of people just bail before they get to that goal.

We should play more with integrated circuits, where a few lines in C, Go or Rust can generate something tangible, ann slowly raise the level to effective modern code.

Humans learn through experience, with actions and with the expectation of some feedback with results. Solving a buttloads of mindless exercises that have no distinctive purpose is not a good way of learning

I can’t relate to this experience, is this referring to university CS programs? Any online lesson or coding camp will have you doing something constructive on day one.
Solving a buttloads of mindless exercises that have no distinctive purpose is not a good way of learning

I agree but I think for non-engineers, starting from circuits is not the best approach. Just the same way everyone uses Excel, I think no-code tools may evolve into something that everyone uses.

> Also, the distance from "hello world" to "use your coding skills creatively" is really high, and a lot of people just bail before they get to that goal.

I agree. When I got into programming as a teenager in the 90s, you could pretty quickly go from having fun with IBM Logo, to learning Turbo Pascal, to writing an application in Delphi that, e.g. your uncle running a small business can get actual use out of.

It's probably not like that any more. What you get out of your effort is probably a narrower specialization now than you would have gotten back then, or, conversely, you'd have to put in a lot more effort to become similarly versatile as you would have been back then.

Does anyone need to be encouranged to do anything? Expose kids to programming when they're young, give them resources and opportunities to learn and the ones that are interested will get deeper into it; and some of the people who don't pick it up when they're young will come back to it later in life. Everyone else can go about their life and pursue the things that they like instead of being encouraged to do whatever.
I like this answer. Not everyone is a programmer, and not everyone needs to be a programmer. Introducing coding as kids will give that spark to a few people who are interested in it to pursue it
Not everyone is Shakespeare or JK Rowling either, but we still teach people to read and write in primary school. Because the world around you has a lot of words in it, and it's a useful skill to have. And as has been proven by history, a citizenry with a grasp of writing and rhetoric has a much better chance of standing up for themselves!

Nor is everyone Pythagoras or Euclid, but we still teach people counting and adding and geometry in primary school. We do so because the world around you is full of numbers, so it's a useful skill to have. And a citizenry with a basic grasp of numbers and logic is harder to mislead.

In the 21st century, the world around you is now full of programs too.

* The clothes you wear (looms were programmed with punch cards before computers even existed)

* The telephone in your pocket

* Your credit/debit/loyalty/etc cards in your wallet for interfacing with diverse services

* Your key-fob which interacts with your car in magical ways.

* Computers on every desk, in every car, in every tractor, controlling factories, administering stores... etc

And not just that, remember that your body itself has kinds of programs at two different levels at least.

* DNA transcription is very reminiscent of Turing machine.

* Neural Networks are all the rage in ML and AI these days. Humans have these built in too. Albeit a very advanced, powerful, and efficient variant.

So why shouldn't we teach everyone the basics of programming, even if just a little? We needn't expect them to become Linus Torvalds or John Carmack or anything. Just enough so they're a little familiar with the magic behind the curtain. Maybe that's just enough intuition to still be able to eg. fix a modern tractor or a car?

TBH I have never really agreed with the idea that coding is the new reading/writing. Thats like saying everyone needs to be taught mechanics because everyone drives cars, or everyone needs to know engineering because we use machines.

Reading, writing, and math are completely essential because they allow communication. If you don't know how math works you can't use money. If you don't know how to read or write, you cannot have a job. Even Walmart and Subway have those as required skills, because you cannot perform the job without them, and those are as bottom of the barrel as jobs get.

Coding is useful, but lets be real...most people don't care and don't need to care as long as it works. It is not required to do their jobs. You can do more if you know coding, sure, and it might even give you a leg up in some fields. But when something breaks most people would rather just call the help desk guy to fix it rather than waste time fixing it themselves.

Perhaps a single course could work, but again, lets be real...these are children we are talking about, and only a few of them are going to actually learn anything. I talked to a few high schoolers who took it as an elective and they said they just took it because their parents wanted them to, and they didn't retain anything because they didn't WANT to learn how to code. If we give it to every kid, it might give some an interest, but for the majority it will just be more useless knowledge they will discard.

That being said, as fond as I am of English and math, I don't think we have to teach it as much as we do. What we learn simply isn't useful, and we relearn it in college anyways. After 3rd grade you don't learn anything new in English, and you just get the same lessons over and over again each year. It certainly doesn't help.

Math is important, but I also think that we should put a more utilitarian spin on math, as very few people will need to know calculus. Consumer math is the superior course, as it is something that people actually use. I don't regret taking it in high school, since the calculus class I would have taken I ended up learning in college anyway.

TL;DR, I think high school learning should be more utilitarian than it is.

I think we're coming from different angles, but are likely to end up in the middle.

You don't need to know everything yourself. But you can derive a lot of power over your environment just knowing what things are possible, and who to ask for help (and how to ask it!).

To do that, you need to know a little bit about a lot of fields : mechanics, engineering, electricity ... and definitely including programming, because that's everywhere these days.

That's one argument at least.

[[ Another argument is that it really does help if you're not helpless to hold a screwdriver, put in a light-bulb, change a tire, or write a small program. But that's for another day. ]]

That may help. In college I knew a math major who used python to simulate physics for his presentations, so that kind of marketing may help. The problem is it needs to be taught in a way that makes sense for different people's use-case. A person using it for math will not be using it in the same way a biologist would, and so on.
The legion of folks who learned to code via geocities/neocities websites/tumblr themes are a fantastic example of this. :)
I think we need less programming languages, and less evolution in their development. So that actually doing something with said languages becomes interesting again ;)
Why do you want new coders? We want more money
Thanks for starting this topic. I'll chime in - not as someone who codes - but as someone who has tried, on many ocasions.

As some comments mention - one of the biggest AHA moments to have is - learning programming must occur in parallel with a goal. Anecdote time - i'm an obsessive music collector, and not long ago discovered mp3tag's regex functions. Mind...blown - i read the tables describing the regex actions many times - it all felt like gibberish - kept trying....and BAM! it clicked. I can almost guarantee learning anything like this without the strong motivation to avoid manual retagging - would not nearly work as well.

Contrast the above - with my current position - working my way - incredibly slowly through Harvard's CS50 - nested for loops make my brain spin out. But just recently - i kept looking for intro explanations...and found a flow chart. With a flow chart in hand, looking at the sample code in one of the code examples made so much more sense.

There is such a plethora of learning materials out there in regards to code - i feel that there is gradually more improvement in clarity of explanation for people like myself (who dont "just pick it up").

The area I feel needs the most work is small exercises which build on the exercise before it. Please no more cryptic puzzles (python challenge was actually super fun - but the concept behind just randomly googling - VS - applying something i've learnt...seems off?)

I would love something like "maths exercises" but for code. perhaps i've not looked hard enough?