Ask HN: To encourage new coders should we adopt a new approach?
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 ] threadIs 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.
Depends on whether you mean for dev salaries or for humanity as a whole.
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.
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.
As a developer who enjoys being paid a butt-load, I propose we raise the bar even higher.
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.
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
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.
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.
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 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.
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.
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?
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.
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. ]]
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?