21 ms·
On finally learning to program at the age of 40 (2020)
- sh4un 4y agoStill on my list.
- aliqot 4y agoYou've got this, it's never too late. Pick any language you can get installed, and then learn how to do these things: 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!
- Forgeties79 4y agoI’m not that guy, but wow this is getting me all amped to learn how to code. Thanks for this! I think I’m going to take a crack at it tomorrow.
- aliqot 4y agoThat makes me so happy, thank you :) Stick with it, you'll do fine. It can be tough at times, but persistence is key! I believe in you!
- zeppelin101 4y agoI think your template for getting into programming was pretty great and could make a great article.
- aliqot 4y agoThanks! It's yours now, tell a friend :) Use it how you wish.
- senectus1 4y agodoes it matter what language you choose to start with? Is Rust a good one to start with?
- aliqot 4y agoJust about any language will do fine for this, Rust is a great language with an enthusiastic community. D 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 :)
- bruce511 4y agoThis was a theme in the original article as well. This sense of not getting going because you might pick the wrong language. 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.
- Winsaucerer 4y agoI am fond of Rust, but I suspect it would be a difficult one to start with. If you want to get some wins to help boost your confidence, it may not be a good place to start. On the flip side, if you have an existing motivation to learn Rust, that could help you to stay engaged :)
- boppo1 4y agoHow does one complete step 5. Get hired for something entry level?
- aliqot 4y agoNope, find a problem you have, then solve it. Next, find a problem someone else has, and tell them to pay you to solve it. Being a programmer means you choose to have a boss or not.
- Volrath89 4y agoBut this is after you have already grasped the basic concepts of variables, assignments, conditionals, loops, functions, etc? 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?
- aliqot 4y agook
- eyelidlessness 4y agoI’ll offer a different approach than current sibling response, as a self taught programmer. This is how I learned. Take any endeavor you’d like to share with the world, and think of how you’d want to present it. Learn enough HTML (or whatever platform you’d prefer where you’re writing some amount of code) to present it. Get annoyed at how tedious routine things are distracting from your project and its presentation, and find some ways to start automating those tedious bits. Congratulations, you wrote a software! You’re probably already finding inspiration at this point to hone what you’ve learned so far. And you have a wealth of starting points to learn how to write better software. Follow whichever feels interesting. Before you know it, you might find others taking your programming efforts seriously. You might feel like you haven’t earned that. Don’t give into impostor syndrome here, you’ve come this far! Every experience is a chance to learn where you had gaps, and everyone who filled those gaps with useful knowledge before you walked the same path or walked the path of someone who did.
- snvzz 4y agoWorth it, no matter the age.
- aliqot 4y agoI have a strong hunch it is an activity that might delay or decrease the severity of neurodegenerative disease.
- hizxy 4y agoPretty cool.
- mguerville 4y agoI’m a few months pre 40 and currently going through CS50x, it does feel like finally things are clicking after years of dabbling into various attempts like the author, and more recently having done a ton with no code and low code tools.
- lolive 4y agoAt first I could not see the point of this article. Just his own personal experience. That is well… personal. 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.
- deleted 4y ago[deleted]
- yieldcrv 4y agoI like being able to build things myself 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
- breput 4y agoHaving an ADAM means you were probably far closer to 50 than 40 in 2020. That seems like a weird point to base a repo on.
- baby 4y agoInterestingly I also started with basic, having to manually write line numbers, but I’m in my early 30s. I’m wondering if I was exposed to some legacy stuff when young, or if basic lasted a long time. Btw it was on a very big and awkward calculator.
- bee_rider 4y agoMost TI calculators come with a TI-Basic interpreter included, and they are one of the few vendors that is accepted for national standardized tests (SAT, and so on), so lots of 30-ish-year-olds were first exposed to programming there. I don't recall if TI-basic requires line numbers though.
- baby 4y agoI had one of these TI-89 in highschool and they're not like the ones I used when I started writing code (you didn't need line numbers, for one)
- neilv 4y agoThe Coleco Adam was a kinda cool machine at the time, compared to low-end home computers. It had tape drives instead of audio cassette recorder/cable, detached keyboard, daisy wheel printer instead of 9-pin dot matrix. IIRC, Forrest Mims had one.
- osigurdson 4y ago>> So even up to then I had been keeping a distance from computers when out in public so that I could maintain the image of "Yeah, I'm good at computers but I'm not a computer guy or anything". "Your time is limited, so don't waste it living someone else's life"
- osigurdson 4y agoOf course, these days it is the opposite problem: people know that there is money in software so they base their career on it despite not having any real interest.
- googlryas 4y agoWhat's wrong with that? Money provides opportunity to do as you please. 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.
- osigurdson 4y agoThere is nothing wrong with trying to earn the most money you can. I don't enjoy working with people who don't enjoy what they are doing however.
- onion2k 4y agoI don't enjoy working with people who don't enjoy what they are doing however. 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.
- 4y ago
- dang 4y agoDiscussed at the time: On finally learning to program at the age of 40 - https://news.ycombinator.com/item?id=24404628 https://news.ycombinator.com/item?id=24404628 - Sept 2020 (161 comments)
- pkdpic 4y agoI started undergrad as an engineering major in 2005 and I remember [somehow] thinking very clearly that programming was fun and interesting but would be a self-indulgent thing to study since it was just for making fun websites and video games... going to art school to pursue a teaching job legitimately seemed like the more practical choice somehow. I had a blast and don't regret the art part, and teaching was extremely rewarding, but I wish I had kept programming. 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.
- ar_lan 4y agoI had a lot of conflicting opinions on this article. My upbringing is very similar (albeit 10 years later). But I did become a professional software developer. I even resonated with starting with wanting to make games as a kid! 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!
- porknubbins 4y agoInteresting that he learned Rust largely through binging youtube and online tutorials. I kind of have a theory that for learning large programming languages like C++ or Rust the chunking of 10 minute youtube clips is superior to reading a whole book chapter or watching a 1 hour university lecture. The latter is often too tiring and by the end I am tired and lost but the 10 minute format forces quick examples.
- urthor 4y agoLearning through straight osmosis is highly effective.
- abledon 4y agoAuthors fundamental understanding is already better than 80% of the programmers i work with
- Markoff 4y agoAbout his 80s childhood: > 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?
- ilaksh 4y agoThe article title is false (deliberately clickbait). He clearly learned to program at an early age which is what he was doing when making those RPGs. Programming with BASIC does train on core programming skills and concepts. 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.
- GolDDranks 4y agoI agree that it's not a clear-cut case, but programming is so much more than doing ifs and gotos. It seems that he learned most of his programming at 40 still. I did some programming with Turbo Pascal 3, but I hardly knew how to program, actually. I skipped all the hard parts (pointers, even the simplest data structures, refactoring general-purpose code into functions, using 3rd party libraries etc.) when I was a kid. There are more than one senses what it means to "know programming", I think me and the author knew as kids in one sense but not in another sense.
- csydas 4y agoI disagree. 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."
- kgeist 4y agoKudos to the author but I got the impression that they equate "learning to program" with "learning syntax" which, I think, is a mistake. I've noticed the article talks a lot about things like "print", "goto", dereferencing, enums, but nothing about algorithms, data structures, architecture, patterns, how to properly structure your code. That is, the author learned how to make small one-off utilities but there's no mention if they went beyond that. I program since childhood and I'd say I'm still learning how to program because there's so much more to it than just finishing a few crash courses and making your Rust program finally compile.
- Twisol 4y agoA big part of learning to program early is absolutely how to internalize the syntax you're seeing into a mental model of the program. I bounced off of Java on first encounter for no better reason than "wtf is public static void main supposed to mean, i want to understand not just cargo cult examples". 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.
- olah_1 4y ago> but nothing about algorithms, data structures, architecture, patterns, how to properly structure your code. 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.
- ericmcer 4y agoAgree, you should be so proficient at coding that the actual coding part of programming is intuitive so you can focus on the much more difficult task of where/how/why that code is going to run.
- sooyoo 4y agoThis 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.
- stormdennis 4y agoI knew someone who was hired as a carpenter with no training or experience. It happens in a housing bubble.
- dstick 4y agoTo 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.
- bloqs 4y agoThere 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
- v3ss0n 4y agoThe OP is not learning to program , he is just juggling programming languages. He dosen't learn to understand the core concepts of software engineering . What he could learn better is by doing : - 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.
- RamRodification 4y ago> Learn how it works by looking into the source code 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?"
- Emigre_ 4y agoWith computer science the interesting thing is thar you can start learning to program… but you will never end!… I’ve been programming since I was very young, and I still learn new things all the time. Which is great. :)
- samjewell 4y agoWhat happened to the girl you had a crush on? Did your effort to distance yourself from computers bear any fruit in any way? Do you have any regrets with that part of your story?
- Dhghomon- 4y agoGirl: she moved away at the end of grade 6 (I think to the US) and this was in 1992 before the internet so that was the end of that. 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.
- albertzeyer 4y agoLearning to program is not some discrete event, some fixed point in time, where you could not do it before, and you can afterwards. 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.
- schwartzworld 4y agoThe same could be said about learning to read, and yet we use that term often. I would say a person has learned to read once they are good enough to figure out the pronunciation and definition of new words. You reach a minimum vocabulary set and using a dictionary or Google search becomes possible. 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.
- possiblydrunk 4y agoOff topic, maybe. What does it mean to have learned to program? Does a trivial program qualify? Anyone could in theory do that. A paying job? Does quality matter? I can (and often do) write crappy code. So, technically I can program. But have I really learned to program?
- stolenmerch 4y agoI think there's an inflection point after learning the basics of syntax, variables, data structures, control structures, etc. where you see how things fit together and your goals feel attainable instead of murky and unknowable. You may not be great with best practices or architecting complex programs, but you actually "know how to program" and can create what you want or need.
- effnorwood 4y ago