On finally learning to program at the age of 40 (2020)
github.com
github.com
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.
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
But then I agree that nowadays a few years education seems like a minimum.
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
Somethings are not, but some are. Just like everything else, software work also ranges from easy to hard.
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.
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.
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?
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?
I wish I understood the "grain" in programming better. It's a lifelong search.
- 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
Carpentry is reasonably attractive in terms of actual work, so that if it payed as well as software development, many people would want to take it up. My point is that a larger portion of the population would have the necessary ability (and, I assume, inclination) to become a competent carpenter than a competent software developer.
I suspect a lot of entry-level programming jobs are like that, even if they don't intent to be apprenticeships.
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.
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.
Data structures and so on are what you build on top of that baseline understanding. They're important, sure, but getting over that first hump is hard. Once you have some familiarity -- some real roots set into a language -- you can start to learn how to build real(er) things in it. All the architecture in the world won't help somebody who can barely hold one function in their head.
To be fair, that is the fault of most programming textbooks and courses.
Maybe ONE programming course (Learn Go With Test) I’ve seen has focused on this.
It's a continuous process. Understanding the syntax is maybe the first step but this is easy. Understanding control statements like conditional code and loops, maybe recursion, is a next big step, if it's all completely novel to you. At this point, you probably already can program a lot of basic things, when you are persistent enough to work through all the errors. So at this stage, you might say you have learned to program.
But then there is so much more, like all the relevant data structures, etc.
I'm know coding since 25 years and still I feel that I'm far away from really having mastered it, although I feel very confident in most things. Currently I think I could definitely improve my architectural skills. And there are many other things where I lack knowledge, which could have been helpful in certain situations.
I think you could apply the same standard to programming. You are always building your vocabulary and understanding, but anybody who has moved on from tutorials to actual building could be said to have "learned to program." The rest is just honing that skill.
"Your time is limited, so don't waste it living someone else's life"
I say this as a person who never had to worry a day in my life about money, because I thought programming was super interesting, and learned C when I was 12, and made more money than both my parents combined by the time I was 18. It was never about money for me, but I wouldn't blame anyone for doing it for the paycheck.
Falling in line with conventional viewpoints rarely gets you kudos, since it is what most people do.
I wonder if your manager feels the same way you feel about code, but about meetings. Maybe they wish you'd chosen a career that paid less because you don't enjoy meetings. You probably drag their working day right down by not finding meetings super fun.
Anyways, their manager can stick their opinion where the sun doesn’t shine, just OP does probably since it’s anticlimactic to express opinions like that.
I have some genuine interest and it won't be ling until I'm able to write small to medium programs. At that point working in an unrelated field is a bottleneck because I don't have time to spend programming. Hence I need a job so I can focus my time on actually doing it. Any advice? How I prove I'm good enough for entry level even though I'm "old" without a relevant degree? Avoiding employers that will push bad coding habits on me?
But, over time I got to love writing software and the entire industry as such. About 3 years in, I couldn't think of doing anything else. So yeah, there's no harm in pursuing something for the sake of money, because the odds are you will eventually fall in love with that path, assuming some of your qualities are suitable for that career.
But, not everyone finds happiness or satisfaction in a path that they chose for money and I think majority of them will be wishing they never had to be in that career.
People might become a dentist but then start to hate it, but the $$$ is too good and how is he or she going to start as a newspaper cartoonist for $13,000 per year because that is their interest?
If you don't know what you want, and don't have any real absorbing interest in too much, if nothing really turns your crank, why NOT go into the highest paying job that you can get? Nothing wrong with that?
I think these days way too much emphasis is put on the whole "Do what you love" thing. Who loves being a convenience store clerk, or a gas station attendant or movie ticket taker?
But people do it, for the sole reason that they need money. And do it year after year, for a lifetime.
It's the real high-end problem when you decide between being an investment banker, a programmer for google, a lawyer at a top 10 law firm, or a brain surgeon that graduated from Harvard med school.
Personally, I have no interest in anything. I've "explored" all kinds of areas, more than most. I'm one of those people you read about that's done 489 different jobs (hyperbole, but not much, I don't think). Nothing turns my crank. What am I supposed to do? So, I just keep going from industry to industry, lacksadaisically, wandering aimlessly through life. Am I supposed to have a goal? Am I supposed to only work one job, one career for 60 years? Those are not real questions, because I don't really care too much.
Sometimes you just gotta do what you gotta do and be a robot, go to work, go through the motions, and collect your paycheck. No dancing girls in your office every day, no $5 million gold sink in your private office, no live concert by Miley Cyrus in your personal office, how rude, how can I live without being catered to my every whim and being so, so, so happy? I MUST be happy, I MUST have a real interest....snnnnooooore. Get real, people.
The only ones whose world is their oyster are people who graduate from a top 10 school, they truly can do anything. The rest of us hacks that graduated from anything below that, or god forbid a middling or low end university with a C average, we take what scraps that fall on the floor. Let alone high school graduates, or worse, those who never finished high school.
Count your blessings.
After reading this post, I certainly do!
For those of you living in your bubbles of trouble-free personal fulfillment, welcome to the real world for a vast majority of the world's population. The people that handle your menial needs don't always do so out of pure love of the job, but yes, they still find some imperfect avenues for happiness in life. There's nothing innately wrong with that either.
My life is VASTLY better, because my profession I do 9-5 is something I dearly, dearly, love.
I'd read it as:
"Find something to work in that you love. Or Else."
Just because you swallowed that pill doesn't mean that others should do the same.
It's precisely when the odds are stacked against you (be it education/age and/or whatever) that success it most impressive.
It's not about me. I don't think that you read what I wrote.
Are you saying that someone who didn't finish high school can get into Harvard medical school?
Most people in the world have zero choice.
What would you do if you were born in some place like, oh, East Saint Louis or South side of Chicago, and your mom was a prostitute on crack and you never knew your father. All the role models that you saw were criminals, and all your peer group that you grew up with were into crime, and when you were 13-, 14-,15-years-old, you were arrested 8 or 10 times. Your school was rickety, teachers were terrible, you never got 3 meals a day so you couldn't concentrate in school.
Or you were raised in Bengladesh and don't even have access to electricity, let alone a computer.
What if one just doesn't have the brainpower? My in-laws taught in schools in very nasty areas, and there were kids that they spent hours with trying to teach them how to add two 2 digit numbers and the student just couldn't do it - things that would take you 2 minutes to understand, some cannot understand at all.
What if you work in some town in the middle of Nebraska and there is only one significant employer in the area. You have no university degree, but scraped oneself up to being a plant manager making $120K per year, but you HATE it, abhor it, your superior treats you like trash. But you have a wife and 5 children, and you live in a huge 5 bedroom 6 bathroom house with 5 acres in the best area of town. Your wife loves living there and your children love their schools and are successful in them. And your wife's parents live nearby, and they both have Alzheimers Disease, so she takes care of the daily. But you hate the job. and there is only that one employer. Are you suggesting that the person, with a high school degree, sell their home for $500K, moves to SF and buys a 1 bedroom condo in Palo Alto for $800K and all of them live in the one bedroom, including the wife's parents? And the guy goes out with his high school degree and find a job as a computer programmer working at Google, which is harder to get into than getting into Harvard University? No. The man has to stay in his job, and hate it. But get his happiness from having a happy family, a nice home. Stuff outside of work. Work is not the main goal in life. Family and friends are.
You really don't have too much experience in life, or have not really thought it through.
You can work in a skyscraper, and not find a single one.
Off you go to the other skyscraper. There's a whole bunch.
There is money in surveillance, data collection and advertising. Are those practices synonymous with software.
Then I compared to my own personal experience. Which is probably as weird and totally random.
I started « programming » with VHDL and then XSLT ;). And after similar completely random professional/own experiences, aka trials/errors (doing mostly Java. For GUIs, Eclipse plugins, Hibernate, pure functional framework, highly parallel data treatment, …), I switched to Javascript (thanks god, it was after ES6, and just when hooks arrived in React). While, in parallel, always trying to understand that book « Learn you a haskell for great good ».
Nowadays (46 years old here), I am now at ease with programming. I do all the things that amazed me when younger: reading code first (mild confidence in colleagues talks, or in documentation), organising projects ahead of time, no fear to PoC things/break things/repair things, refactoring as a foundation, testing all the time, choosing the right tools (Git-bash/ IntelliJ/Obsidian for the win!).
I now connect with younger programmers, trying to exchange knowledge and methods. I realize what they do wrong or think wrong, and help them shorten the path towards simplicity.
He just stopped doing it and got stuck for a bit while trying to pick it up again with a different language many years later.
The point at which the author actually "gets" programming and felt comfortable with the idea that given a task they could write something to solve it appears to be when the author determines their real start with programming.
I'm not sure it makes sense to really get into the debate of what constitutes programming as like a lot of skills there's a strong personal aspect to when you actually have some skill in it. Many people are this way with cooking, singing, or other creative/practical endeavors, and I see it similarly with programming. Personally I think the drive to get people to coding is a bit too generous and supportive in the wrong way, for example, promoting that Excel users are programmers/DBAs because Excel is essential a database with a well documented UI. There is definitely truth to such a statement and the intention is good and comes from a place of support; however I would wager most Excel wizards without coding/DB knowledge would not feel comfortable or a desire to step further since they personally don't get the connection and can't conceptualize how to translate those skills into what they consider programming.
I had a very similar programming history to the author -- as a child I could write very simple programs in BASIC (needed something to do during study-hall on my TI-89) and also had spent a lot of time following guides to hack trial programs on MacOS to extend the trial period on games/programs indefinitely. I could put together a basic website to share ROMs with my friends, but I absolutely could not figure out anything I thought was 'complex', and thus I didn't 'get' programming in my mind.
It wasn't until my late 20's when at a tech support job, I got absolutely fed up with a specific type of case that required a lot of specific hardware information from client servers which my colleagues and our clients never collected correctly; the cases were simple if you had all the information, but after multiple attempts to get the information, both the support team/client would be frustrated and the case would needlessly get escalated to me. After dealing with a particularly abrasive client on a case like this, I finally said "enough is enough" and that night rage-coded a very simple tool to ensure all the system info was collected with the click of a button; my frustration fueled me through all the bumps and pitfalls of getting this info and voila, 12 hours later I had written what I consider my first program. Months later, I even solved my first bug in it all on my own, and that's when I considered myself legit. After that, I couldn't stop myself from finding nails to smash with my new hammer, programming.
It's all about when you 'get' that moment and feel like given a task you can actually figure it out. That one moment that lets you realize "you can do this, given enough time."
I started up again in 2020 in my mid-thirties with a newborn but it took a bootcamp and a lot of guidance / help from friends to catch up with what modern development had become. I've loved every minute of it and I cant believe what a relief it is to be on a stable career path, even with the hiring freezes etc.
Anyway its aways great to see this kind of thing on the top of HN. The future of human labor is software, and we all really can do it. Maybe, like I know.
all the lucrative stuff requires a software engineer, other people have to go raise capital just to pay them for that person's one idea
if you are the software engineer, you are six figures worth of value already and you just need to dedicate your own time to your idea
its also totally fine if you don't have any entreprenurial aspiration and just want to go to work, the compensation package's value is geared towards you being content having no aspiration to build something lucrative for yourself
On finally learning to program at the age of 40 - https://news.ycombinator.com/item?id=24404628 - Sept 2020 (161 comments)
> The key point is that he showed me something called BASIC that at the time I assumed was the only programming language in the world. I took to it and followed along with books like this one called the Mystery of Silver Mountain and Hunt the Wumpus, and pretty soon had picked up how to program. I began making my own small RPGs based on Steve Jackson's Sorcery! books.
Why are these articles always about people who already know how to program and they just want to refresh/update/continue their learning?
- Pick an opensource software of his favourite programming lang
- Set it up from scratch (no docker or GUI installer , build from source)
- Learn how it works by looking into the source code.
- Learn how it was engineered.
That would make him learn a lot faster and better.
Yes, now he can do that. He's at that level now. He never was before. I think you and OP are just disagreeing on what "knows how to program" means.
To me, he described reaching the point where he can actually do what you suggest. Not "becoming a software engineer".
You can't just pick a software project and learn things from it if you're still at "what the fuck does this ampersand do?"
I don’t think I agree with this destiny stuff, on this specific topic. I think maybe because in college I had a lot of people try to say that some people just will never be able to be a programmer, and that never sat well with me because it was a passion of mine even if I wasn’t as smart.
I’m glad the author learned it! It sort of reminds me of Paula Deen, a very famous chef who IIRC didn’t start her culinary career until her 40s!
I’ve been programming since I was very young, and I still learn new things all the time. Which is great. :)
Distancing from computers and regrets: worked well, and no regrets. Had long hair and listened exclusively to heavy metal and almost all of my friends in high school were girls. I remember the computer guys where we lived tended to just hang out in the computer lab and not a girl to be seen in there. (I'm sure they got fantastic jobs early on, of course)
Though in 2015 when our team at the pipeline company got packaged out I probably would have properly learned to code if I had gone straight with F# instead of Python and then trying everything else until I ran out of time and had to find a job instead. Or Rust though version 1.0 would have just come out then and not sure if there would have been enough resources to pull through.
lvl 0
- Make a program that prompts you for your name, and greets you.
- Now make your program write that name to a file.
- Now make your program read from that file.
lvl 1
- Put the file with your word or name on a server somewhere, like Github, it's free.
- Make your program read that file with an "HTTP Request"
- Just about any language can store to a SQlite database, write a program to create a table called 'stuff', with a column for strings, and store your name as an entry in a row.
- Combine the HTTP Request program and the DB program
lvl 2
- Learn another language, repeat this process, reflect on the differences between the process in both languages.
After this, you'll have an intuitive knowledge of where to go next, and how to find solutions and basic structures to accomplish the things you want to do.
I believe in you!
Is Rust a good one to start with?
ownload Rust, install it to your system and get started with "How do I print in Rust". This will allow you to tell Rust to make words appear on your screen (no toner required!)
Bon voyage my friend, I hope you end up loving it as much as I do :)
This hesitation is likely because human languages are such a huge learning environment. Learning Spanish or Chinese is such a lot of work, and I don't know which would be more useful.
Good news though is that in programming, the language you learn doesn't matter. Because in programming moving between languages is trivial - the concepts underneath are 90% of the work, and are transferable. An expert in say c# could be proficient in say Rust in a matter of days.
So I get the "which language should I learn" question, but the truthful answer is that it doesn't matter.
For a reference, when at university, to prove the point, we implemented the same small program in 10 different languages in 10 days. Language is just syntax, which is trivial to assimilate. Programming happens first in the head, those techniques are the important things.
On the flip side, if you have an existing motivation to learn Rust, that could help you to stay engaged :)
Your suggested path is great to learn a lot of stuff about web development. It's actually very very good, the more I think about it the more I see you basically covered most of the things one actually does in the job. Especially the googling part right at level 0 ;)
But I'm afraid I wouldn't recommend this path to someone that knows absolutely nothing about programming, isn't it better to start with little puzzles like fizzbuzz and the like to get to know the syntax of the language first?