[HN Gopher] Teach Yourself Programming in Ten Years (1998)
       ___________________________________________________________________
        
       Teach Yourself Programming in Ten Years (1998)
        
       Author : janchorowski
       Score  : 346 points
       Date   : 2024-01-15 15:06 UTC (7 hours ago)
        
 (HTM) web link (norvig.com)
 (TXT) w3m dump (norvig.com)
        
       | syndicatedjelly wrote:
       | Great article. At 8 hours a day, 40 hours a week - 10,000 hours
       | of practice will take 250 work weeks to achieve. That's about 5
       | years of nearly non-stop programming.
       | 
       | Realistically, it takes closer to 10 years to achieve that goal.
        
         | sonabinu wrote:
         | This is true in any profession. Building intuition comes from
         | doing more and more with incrementally difficult challenges.
         | There comes a point at which one can make connections and apply
         | what you know from one area into another, and creativity kicks
         | in.
        
         | monkeynotes wrote:
         | > At 8 hours a day, 40 hours a week - 10,000 hours of practice
         | will take 250 full weeks to achieve. That's about 5 years of
         | nearly non-stop programming.
         | 
         | Isn't this basically a software job? Like, get a junior role
         | and work your way up over 5 years doing 40 hrs a week.
        
           | throwawaaarrgh wrote:
           | If the only programming you do is generic commercial work,
           | you won't get very good, especially if it's at the same job
           | or on the same kind of project.
           | 
           | You can learn more about programming by giving yourself new
           | and challenging projects at home. Doing both personal and
           | professional work is the fastest way to progress while
           | learning lessons from both. (commercial work teaches you the
           | "professional" side of software engineering, which has almost
           | nothing to do with programming)
        
         | jesse__ wrote:
         | Realistically, it depends how much you enjoy programming. If
         | you program a lot, you can easily hit 3k hours a year..
         | 
         | Most days I program 12 hours a day, most weeks 6 or 7 days a
         | week. On a day I'm feeling very motivated I'll program for 18
         | hours. I've been doing this for close to 10 years. Occasionally
         | I'll take a month 'off' and gear down to 3-4 days a week, still
         | long days. By my conservative estimates, I hit about
         | 3500h/year.
         | 
         | I work this much because I fucking love programming, and
         | there's nothing I'd rather do ( other than my daily surf in the
         | mornings, of course :)
        
           | syndicatedjelly wrote:
           | That's great to hear. I said "realistically" because most
           | people don't program for 12 hours a day. I love programming,
           | but I love other hobbies too. Everyone has the same 24 hours
           | in a day :)
        
         | ska wrote:
         | The 10,000 hour heuristic isn't particularly accurate, it's
         | just popular.
         | 
         | FWIW, 10 years professional experience seems to be about right,
         | give or take, to make a solid developer. I don't think I've
         | ever met anyone who really got there in 5. Some people shave a
         | few years off by having done it obsessively as a teen also, but
         | at some point that typically overlaps anyway.
         | 
         | Of course there is also the old saw about 1 year, 10 times
         | being a problem. I've met plenty of developers with >10 years
         | experience that weren't that solid, too...
        
           | pants2 wrote:
           | I have a little over ten years experience, and when I read
           | code that I wrote at 1-2 YoE it's shamefully bad, but after
           | that it starts to get pretty good. I don't think anyone would
           | notice a huge change between my code 5 years ago and today.
           | I've moreso improved on soft skills.
           | 
           | Though it probably helped that I had two mentors at a job 2
           | years in who were ruthless about reviewing my code.
        
       | cube2222 wrote:
       | This is marked as 1998, but includes mentions of e.g. Clojure and
       | Go, so it's _probably_ been updated since.
        
         | ReleaseCandidat wrote:
         | At the end of the page:                   Peter Norvig
         | (Copyright 2001--2014)
        
           | janchorowski wrote:
           | Originally from 1998: https://web.archive.org/web/19980206223
           | 800/https://norvig.co... I didn't want to mislead with a
           | newer date. Sorry if it confuses you.
        
       | lakomen wrote:
       | I've been at it for 20 years this year, professionally. For 38
       | years otherwise. I still haven't learned to do it right ;)
        
         | forgetfreeman wrote:
         | Neither has anyone else ;)
        
       | ricardo81 wrote:
       | I can't source the video that I watched 5-6 years ago [0] but it
       | made a point about the increasing numbers of programmers and how
       | the majority had less than 5 years of experience. It made sense
       | in the context of IT/web continually having a larger involvement
       | in our lives.
       | 
       | [0] https://youtu.be/ecIWPzGEbFc?si=A4qBR2YdX-0CV2bM thanks to
       | comment by wild_egg
       | 
       | Can safely say after 20 years that there's maybe a bunch of
       | information I don't need to know anymore that people <5 years
       | experience probably would never need. OTOH experience is
       | experience and knowing the constructs of things and their reason
       | for being is always helpful.
       | 
       | And that there's plenty less experienced programmers than me that
       | can do many things I can't even imagine.
       | 
       | TBF it's a pretty wide field, this Turing complete stuff.
        
         | wild_egg wrote:
         | > I can't source the video that I watched 5-6 years ago but it
         | made a point about the increasing numbers of programmers and
         | how the majority had less than 5 years of experience
         | 
         | I believe that was in this Bob Martin talk -- The Future of
         | Programming
         | 
         | https://youtu.be/ecIWPzGEbFc?si=A4qBR2YdX-0CV2bM
        
           | ricardo81 wrote:
           | Yes! That's the one. Struggled to source it.
        
         | bee_rider wrote:
         | It is a rapidly advancing field because it is young, so it
         | makes sense that we'd accumulate a lot of ephemeral
         | information.
         | 
         | It feels like we're still in the alchemist days. Eventually the
         | chemists will come along. They'll systemize our ad-hoc
         | observations and jettison a ton of them. Until then... Neuton
         | was an alchemist and he still made some pretty big
         | contributions.
        
           | dasil003 wrote:
           | I agree with the first part, but not sure about the second. I
           | believe software is much more engineering than science. The
           | challenge is in organizing the bits. Most of the things
           | learn, debate and design in software are more less arbitrary
           | structures created to facilitate our own cognition. The hard
           | science behind computers is much more cleanly abstracted
           | away, compared to, for example, chemical engineering. For
           | that reason, I don't believe software advances in the same
           | way that natural sciences do. It's much more social in the
           | sense that groups rally around different ideas and
           | implementations, and wherever that energy goes also shapes
           | the new ideas to bloom on top.
           | 
           | Put another way: I think almost everything in software is
           | arbitrary. Certainly some ideas are better than others, but
           | on balance everything is a tradeoff, and I don't really
           | expect for some powerful new discoveries or ideas to reshape
           | the industry towards more structure and efficiency. I think
           | it's more likely that AI replaces human programming entirely
           | (although I dont think that's likely either).
        
             | osigurdson wrote:
             | A better analogy for software engineering is search. Given
             | our current position and a desired change, we search for a
             | solution in the fog. Analogies to other problem domains
             | often fall short as search doesn't feature as prominently.
        
             | saltcured wrote:
             | There are layers here. The purest theoretical CS is like
             | mathematics in general. Also necessarily structured around
             | cognition, but seemingly groping for something more
             | fundamental or universal.
             | 
             | I'd agree lots of software is like engineering in that it
             | is further tilted towards the practitioners and
             | marketplaces and their limitations. It has more focus on
             | cost-effective repeatability and risk management. But,
             | traditional engineering is more rooted in some physical
             | reality. I.e. civil engineering has basis in physics and
             | materials science, because those drive failure modes and
             | design criteria. The more social aspects---say evacuation
             | routes for fire safety---developed within an existing
             | practice that already been formalized to manage risks of
             | structural failure etc.
             | 
             | But, lots of software is far detached from such a physical
             | realm. It is more like legislation or contract law, or the
             | arts. It's all about what people want to say or hear and
             | display to each other. Massive influence from the cognitive
             | and social context. It may be colored by technique and
             | available materials or resources, but thanks to Moore's Law
             | and friends, these practical limits have less and less
             | influence on the shape of the outcome. Significant failure
             | modes can be rooted in the vagaries of psychology, social
             | sciences, or even political sciences.
             | 
             | However, software diverges from law or arts when we attempt
             | to scale it up. We want to reach speeds that cannot be
             | supervised and quality controlled by a human operator, or
             | volumes of support tasks that cannot be managed by an
             | affordable human workforce, or impactful decision-making
             | and effects that cannot be adjudicated by a higher court.
             | You need something like engineering here to manage risk,
             | but there is no physical basis for building codes etc. Not
             | only the new software products, but even the elements of
             | risk are social constructs.
             | 
             | But I think the metaphors are broken as one pushes too hard
             | "up the stack", into AI replacing knowledge workers and
             | analysts. Our current best social systems completely depend
             | on human adjudicators in hierarchical layers of oversight.
             | Courts that can comprehend the big picture and resolve
             | differences when our other abstract social activities go
             | wrong. I am nervous about a future where tech behaviors
             | become too complex for such oversight. Or worse, where
             | naive practitioners think they can solve it with another
             | layer of unproven tech. Instead of turtles all the way
             | down, it becomes some faith-based electronic oracles all
             | the way up?
        
           | bombcar wrote:
           | The chemists are already here, the Knuths and such - it's
           | just being ignored or isn't directly "relevant" yet.
           | 
           | It's like building buildings without "building science" -
           | which, surprisingly, we have actually been doing in many ways
           | _to the current date_.
           | 
           | There aren't really formal schools of "be a carpenter and
           | build a house" - it's all very master/apprentice even if it
           | is not formally so everywhere. And since things like "energy
           | usage" of the building didn't really matter until recently,
           | many buildings just kept being built the way they always
           | have.
           | 
           | Now things like "can we keep this building comfortable at
           | much less energy usage with some additional up-front costs"
           | are coming to the forefront, and how buildings are built is
           | slowly changing.
           | 
           | Compared to that, software is very in its infancy, because
           | the real only bottom line items are "does it mostly work" and
           | "did it not cost infinity dollars more than it made".
        
             | osigurdson wrote:
             | "Building Science" is normally called civil engineering.
        
               | bombcar wrote:
               | It's a term thrown around by various people to refer to
               | "building houses with something slightly later than 1950s
               | designs".
               | 
               | When people hear "civil engineering" they think
               | "skyscrapers, bridges, roads" - this is more like "if you
               | wrap a house in insulation, it's insulated better, but
               | that can also cause moisture capture, which destroys it"
               | type engineering.
        
             | bluetomcat wrote:
             | It's not in its infancy. The fundamental problems regarding
             | algorithms and data structures, OS theory and formal
             | language theory are well understood and have articles on
             | Wikipedia. We know Amdahl's law, the CAP theorem and the
             | ABA problem.
             | 
             | The problem is the explosive decentralised development of
             | tools, languages and frameworks under a hyper-competitive
             | neoliberal economic system. Someone invents a language to
             | lock programmers to their platform. Another programmer
             | creates a tool to transpile that language to their half-
             | assed dialect of another language. This leads to a huge
             | problem of entropy and inefficiencies at all levels.
        
         | fnordpiglet wrote:
         | After 40 years of programming, 33 of that professionally, I
         | can't think of anything that was a waste to learn other than
         | scrum.
         | 
         | Syntax is something I never learned, I programmed with man
         | pages and manuals open at all times. But every language and
         | technology I learned taught me something useful about a
         | fundamental problem in computing and systems. The way we
         | address problems gets wrapped in different clothes but the
         | problems themselves are the same.
         | 
         | There's no short cuts, and I know for a fact that as a
         | programmer I'm orders of magnitude more capable than my 5 years
         | in self. I'm excited to learn more and do new things more now
         | than ever because they will unlock more of the craft to me. The
         | only thing I worry about is my body and mind failing me at some
         | point, not that I'll run out of things to learn or be lapped by
         | those younger than me.
        
           | mp05 wrote:
           | > I can't think of anything that was a waste to learn other
           | than scrum.
           | 
           | Believe me, I have plenty of criticisms of that entire
           | culture but it has a lot of good ideas. What in particular
           | (besides the obvious overwrought ceremony) do you find not
           | worthwhile?
        
             | dpritchett wrote:
             | The more skilled I become over the decades the more I
             | prefer either Hickey's hammock-driven development or a
             | simple kanban setup.
        
               | mp05 wrote:
               | > simple kanban setup
               | 
               | That's probably the essence of the "good parts" that I
               | referenced.
        
               | fnordpiglet wrote:
               | Yeah I think kanban is the right model for almost every
               | development team. Teams embedded in a massive
               | orchestrated project across many teams waterfall actually
               | is pretty reasonable.
        
               | apsurd wrote:
               | Thank you for this recommendation. I've never heard of it
               | before and now I'm reading:
               | https://github.com/matthiasn/talk-
               | transcripts/blob/master/Hi...
               | 
               | It's giving me energy this Monday holiday(USA)!
        
             | benzible wrote:
             | See: https://news.ycombinator.com/item?id=35857463
        
             | ipaddr wrote:
             | Scrum forces you to package your work into daily sound
             | bites. It pull your focus elsewhere and reframes your work
             | in a wasteful way where you are always cutting off the
             | corners because of how it affects your 30 second daily
             | advertisement.
        
               | brailsafe wrote:
               | Scrum just got taken out back. Agreed.
        
               | theteapot wrote:
               | > daily advertisement
               | 
               | Not defending scrum but sounds more like you've been
               | abused by bad culture disguised as scrum.
        
               | shrimp_emoji wrote:
               | A place with daily standups?
               | 
               | Their "sound biting" of a complex issue resonates. It can
               | be difficult to even explain what I'm doing to several
               | people in the bandwidth of 2 minutes sometimes.
               | 
               | Most charitably, it's just a quick, lossy status report
               | and forced request for help with blockers.
               | 
               | I feel like something is wrong if you feel like you need
               | to cut corners to perform a "good-looking" report in
               | standup. You shouldn't feel/cave to such a pressure.
        
               | theteapot wrote:
               | I was referring to "advertisement" part not the "daily"
               | part. Stand ups can be a way for people who know / want
               | to game the system to prosper in the eyes of some idiot
               | scrum master and managers, while our guy here gets smoked
               | and made to look like he isn't productive.
               | 
               | You shouldn't cave, but if that's the culture around your
               | in for an uphill battle.
               | 
               | > I feel like something is wrong ...
               | 
               | Yeah, bad culture.
        
               | skeeter2020 wrote:
               | I have plenty of complaints about scrum the process, but
               | don't think it's much different than the results of
               | scaling up and standardizing any process across teams of
               | varying levels of skill and commitment.
        
             | trhway wrote:
             | The idea, and especially its unconditional forcing down the
             | throat, that you can run marathon faster by running it in
             | 100m sprints. That idea is wrong as it has been shown many
             | time in practice, yet even the slightest doubt of that idea
             | is squashed. Scrum is basically an ideology/cult, and as
             | typical for such it is built on a lie - it is sold to rank-
             | and-file as performance improving whereis its real goal is
             | improving reporting to the manager at the cost of rank-and-
             | file's performance, the manager's convenience at observing
             | the status even if the things are relly moving much slower
             | as a result. It is similar to how in a religious cult
             | people would be sold on supposedly reaching nirvana/etc.
             | while in reality the guru/pastor/etc. would be abusing them
             | financially/morally/physically/etc.
        
             | fnordpiglet wrote:
             | It has no good ideas. All the ideas that appear good are
             | taken from agile, which 20 years ago WAS good. But then the
             | process managers came in, the management seeking clarity on
             | delivery dates, and engineers who got into it for a good
             | job seeking ways to avoid doing real work because they're
             | actually not into engineering. It's a morass of everything
             | awful about stupid management cargo cult bs meant to
             | emulate but not understand excellent engineering culture,
             | with roles meant to keep project managers employed, and
             | overriding everything stupid "rituals" to try to measure
             | velocity and delivery dates for leaderships need to
             | control. It delivers none of what agile promises because it
             | is satisfying the needs that makes waterfall so slow.
        
               | PheonixPharts wrote:
               | > from agile, which 20 years ago WAS good.
               | 
               | It's completely wild to me to have been in the field long
               | enough to remember when agile _was_ revolutionary, and
               | then to see it slowly become twisted by decades of
               | mismanagement into something that people hate today.
               | 
               | For most engineers today "agile" just means using jira,
               | 30-60 minute long "stand-ups", and a perpetual panic
               | about not getting enough done in 2 weeks.
        
           | bmitc wrote:
           | I feel most of my time as a professional software engineer
           | has been learning stuff that I didn't need to. And I would
           | argue that the majority of debugging time goes into debugging
           | external code from libraries, the language itself, company-
           | provided platforms, code, libraries, DLLs, experimentally
           | figuring out how to use a system or tool that isn't
           | documented, and more. It's pretty miserable. It'd be like
           | being a carpenter or mechanic but spending the majority of
           | your time debugging, fixing, and communication with
           | manufacturer's of broken or poorly working tools.
           | 
           | If only I got to spend my time writing interesting code and
           | learning interesting things.
        
             | apsurd wrote:
             | I don't think software is uniquely a mess behind the
             | scenes...
        
             | skeeter2020 wrote:
             | >> It'd be like being a carpenter or mechanic but spending
             | the majority of your time debugging, fixing, and
             | communication with manufacturer's of broken or poorly
             | working tools.
             | 
             | What do you think a mechanic does ALL DAY? Very few
             | carpenters start with a raw blank of nice wood and craft
             | something amazing. It's all interpreting plans (poor spec),
             | framing (boiler plate), figuring out an addition (bolting
             | on features to a shaky platform), correcting things that
             | have failed (maintenance), addressing things that were
             | built wrong (bug fixes) or fixing shoddy renovations (tech
             | debt). Sounds EXACTLY like the majority of software
             | development.
        
               | bmitc wrote:
               | > What do you think a mechanic does ALL DAY?
               | 
               | Are you implying that they are fixing their tools rather
               | than cars? I don't know any mechanic that would put up
               | with that and would replace their tools with tools that
               | actually work.
        
               | fnordpiglet wrote:
               | Except mechanics tools are fairly simple devices based on
               | a hundred years of standardization. I think probably a
               | better example would be someone working in a lab on
               | experimental devices. Software tooling is often absurdly
               | complex and relatively new with no clear standard. In 100
               | years I'll wager things are not like this.
        
             | TedDoesntTalk wrote:
             | This is precisely part of the job. Somehow your
             | expectations are very different than mine.
        
               | bmitc wrote:
               | It's part of the job, but it shouldn't have to be. If
               | software engineers just did things properly, then we
               | wouldn't have to deal with each others' messes.
        
             | fnordpiglet wrote:
             | All of these things _are_ the craft of software. If you
             | don't find figuring out how to efficiently debug and
             | understand things that are complex you're probably in the
             | wrong field.
             | 
             | The point isn't that day to day is full of brilliant
             | insight, but that process year over year you become really
             | adept at these things you're struggling with and you see
             | patterns more clearly and can cut through the struggle
             | faster and focus more on doing cool things with that
             | ambiguity.
             | 
             | Frankly today is better in these respects than it's ever
             | been. The tooling for insight and debugging is mind
             | bogglingly powerful relative to 30 years ago. But that
             | doesn't make struggling in your own ignorance without a
             | clear guide through any more fun. That feeling of desperate
             | helplessness and idiocy is the feeling of LEARNING, which
             | is compounded by ambiguity. It's easy to feel angry with X
             | for not doing Y (I.e., lack of documentation) for your
             | situation, but the right answer is to buckle down and
             | figure it out and focus on developing skills to make it
             | easier next time you have to learn.
        
               | waprin wrote:
               | "When art critics get together they talk about Form and
               | Structure and Meaning. When artists get together they
               | talk about where you can buy cheap turpentine." -- Pablo
               | Picasso
        
             | wharvle wrote:
             | I once bought whatever jamb saw they had available at one
             | of the big box stores.
             | 
             | It was basically unusable. Fundamentally flawed design.
             | There's no possible way anyone tried it and went "yes, this
             | is fit for purpose". Worse, the complexity of its design
             | which caused so much of the trouble (it had a single-sided
             | blade that could be spun around--the locking mechanism was
             | simply flawed, I didn't get a bad one, it just _could not_
             | work well) could have been entirely avoided by spending
             | _barely_ more money on manufacturing. I mean it was also
             | very dull but at least it would have been usable, if slow.
             | 
             | I managed one jamb with it, taking probably 10x as long as
             | a version of the tool fit-for-purpose would have, busting
             | up my knuckles plenty, and making an uglier cut besides, so
             | I could move on, and ordered a different one for the rest,
             | since the store didn't have any other models.
             | 
             | That's about the median quality of _all_ tools and
             | libraries I encounter in software, in my estimation. Size
             | of vendor or how  "smart" their employees allegedly are
             | (LOL. LMFAO.) doesn't seem to much matter, either. And
             | usually it's like that crappy jamb saw being the only jamb
             | saw available at the store, except there's no option to
             | skip the big box store and look for acceptable ones online,
             | and if there are any other options they're somehow _even
             | worse_.
             | 
             | Luckily 99% of the tools for "real" work I've bought
             | haven't been anywhere near that bad. Even the cheap ones.
             | Almost all of them are more-or-less sensibly designed and
             | actually do what they're supposed to without causing a huge
             | amount of trouble.
             | 
             | Most of an average day programming, for me, metaphorically,
             | is swearing at this fucking piece of shit jamb saw while my
             | knuckles bleed and I'm fucking around with its brokenness
             | instead of getting anything done that I actually wanted to.
        
       | teaearlgraycold wrote:
       | I've had a number of people approach me, at work and elsewhere,
       | asking how they too can get one of those programming jobs. I
       | always mention the timeline I was on, having started learning as
       | a kid, making it a major hobby, getting a CS degree, internships,
       | etc. and people are surprised and disappointed there's no quick
       | path.
       | 
       | Or is there? Has anyone here done one of those 0 to 1 bootcamps
       | with success?
        
         | yonaguska wrote:
         | The only people I've seen do the bootcamps with success were
         | already very smart and/or coming from technical or heavy math
         | backgrounds.
        
           | skeeter2020 wrote:
           | Glad to see at least another perspective more or less echo my
           | experiences/observations. You can't discount motivation, and
           | bootcamps are filled with either those chomping to learn and
           | explore, or those looking for the next goldrush. Adding to
           | the challenge of differentiating is sometimes they are the
           | same person.
        
             | bombcar wrote:
             | If you're skilled/smart/whatever you're gonna be fine,
             | usually, so let's discount those and set them aside.
             | 
             | There's definitely a cohort of "moderately capable at
             | plugging away" type developer that can successfully come
             | out of a bootcamp, and it's usually something like this
             | path:
             | 
             | bootcamp - headhunter agency that needs bodies - develop
             | familiarity/skill with the toolset - hired directly via
             | some other company.
             | 
             | Less "startup valley next great thing" and more "updating
             | the Java application for a change in the tax code this
             | year" style corporate programming (which is the vast
             | majority of all programming).
        
           | helboi4 wrote:
           | I mean I think I'm sorta smart but nah I have a 0 to bootcamp
           | success story and I studied languages at uni and didn't even
           | pass A-level maths in high school. I did a 3 month bootcamp.
           | I was determined to end it with a job so I studied 12 hours a
           | day 6 days a week. By the end I couldn't walk down the road
           | without being out of breath but I had a job. My first year of
           | employment was terrible. I was bad at everything and my
           | employer had agreed to take bootcampers without any
           | preperation of how to deal with that so just kept keeping me
           | away from tickets, stunting my growth. After I wasn't renewed
           | I spent a further 2 months doing intense studying and
           | portfolio building and applied for my current job. They've
           | supported me a bit and now 8 months in I'm a pretty competent
           | junior I'd say. I feel like this is the level I should've
           | been at at my first job but as long as you're willing to work
           | at shitty companies for a bit you can just go from bootcamp
           | to employed immediately and then work up to being good from
           | there.
           | 
           | Edit: Whether I'm really worth the investment to these
           | companies is another thing. I tend to think I'm not because I
           | do sorta suck. But in terms of whether it's possible to go
           | that path, be constantly employed and improve in time, yes it
           | definitely is possible.
        
           | monkeynotes wrote:
           | Aren't most successful engineers already very smart when they
           | start out? Being very smart seems to be a prerequisite for
           | all successful engineers.
        
         | skeeter2020 wrote:
         | Haven't done one, but have hired out of them. Limited data
         | conclusion: just like traditionally trained developers it's hit
         | or miss. Best results: some other "classic training" (like
         | physics or chemistry or engineering) with a desired career
         | change == advanced junior with an accelerated learning curve.
         | If you want to add motivated newbies to the parts of your
         | software where pure programming is not as critical they can be
         | great hires; the standard deviation is huge, but not sure if
         | it's any larger than say a 2-yr diploma grad.
        
           | joseda-hg wrote:
           | Did a 2-year, there's people that graduated there that to
           | this day can't answer FizzBuzz, in that same group, there was
           | a marine biologist that was looking for a change, I'm
           | saddened that the former will probably be what people think
           | when they see our diploma
        
             | bombcar wrote:
             | If it makes you feel better, past one job or so out of
             | whatever training/college, nobody actually cares, except
             | perhaps the HR automatic resume sorter.
        
         | thebosh wrote:
         | I did a grad scheme where a consultancy trained me for 3 months
         | and then worked for them under contract for 2 years. I studied
         | humanities at university and had never coded before.
         | 
         | The first 2 years were very hard and it felt like swimming
         | upstream the entire time as I didn't have that basis. It was
         | only at the end of the 2 year programme that I actually felt
         | like I could provide value independently.
         | 
         | A lot of my knowledge is very applied and I've noticed that I
         | lack the CS fundamentals which sometimes makes it a bit harder
         | as I'm having to learn 'basics' as I go.
         | 
         | In fairness my role is a Data Engineer now so it's a lot
         | lighter on the more traditional CS areas like Data Structure
         | and Algorithms.
        
           | helboi4 wrote:
           | i feel like we did the same scheme lol
        
         | gwill wrote:
         | I've been programming professionally for 8 years now and came
         | out of a bootcamp. I had taken some programming courses in high
         | school and college for fun but my knowledge was very limited.
         | 
         | The bootcamp stayed true to the name. Core hours were 9-5 but
         | many of us would get in early (usually 7am) and leave late
         | (sometimes 10pm). I would also go in on weekends, sometimes
         | taking Sunday off. I intentionally went to one in a different
         | city so I wouldn't by distracted by a social life.
         | 
         | The focus was in ruby, then javascript. I got a job as an
         | intern in C#/.NET a few months after graduating. I took the
         | intern position because it seemed a tough sell to get a junior
         | dev position right away. I was promoted to junior dev after
         | just 2 weeks.
         | 
         | The school is no longer around, bought by kaplan and dissolved.
        
           | UltimateEdge wrote:
           | Did your peers in the bootcamp have a similar experience?
        
         | monkeynotes wrote:
         | > Has anyone here done one of those 0 to 1 bootcamps with
         | success?
         | 
         | My tech lead did this.
        
         | ricardo81 wrote:
         | I think one of the beauties of programming is that you can be
         | self taught. It doesn't necessarily help on a corporate ladder
         | though, who maybe expect some certificates.
        
         | jesse__ wrote:
         | I dropped out of CS after a 3 months, had never programmed
         | before. I sat in my mom's basement for 8 months and taught
         | myself the basics of JS and was able to get a job.
         | 
         | Since then, I've spent a metric fuck-ton of time programming
         | (tens of thousands of hours to date). I've worked on compilers,
         | 3D graphics, semiconductors and game engines.
         | 
         | I guess my experience kind of supports both sides of the coin.
         | I was relatively easily able to get into industry with little
         | experience (circa ~2012), although since then I've put in a ton
         | of work to become a good engineer that people with interesting
         | projects want to hire. Take that as you will :)
        
         | avgcorrection wrote:
         | You tell people who honestly want to get into professional
         | programming that you have done this your whole life with the
         | implication that this is _the_ way? That anything less is
         | "bootcamp" delusion? No wonder they get deflated. Of course
         | they can't go back in freaking time to when they were kids and
         | get subliminal Programming Pearls from their wet nurse.
         | 
         | And it's also just wrong. People get into professional
         | programming with... less experience than that. You might have
         | never met anyone in your particular bubble but they do exist.
        
         | ewelme wrote:
         | Not sure If you'd count it as a bootcamp but I did something
         | similar.
         | 
         | I taught myself to program Basic aged 11, using the manual that
         | came with the early 80s Dragon 32 home computer (a whole 32k of
         | ram). Wrote some simple games, worked out you couldn't really
         | do anything cool without knowing assembly language, completely
         | failed to learn assembly language, as it was too hard for this
         | 12 year old on his own, armed only with a copy of
         | https://colorcomputerarchive.com/repo/Documents/Books/6809%2...
         | 
         | By the time I was 13 I'd given up programming and basically
         | barely touched a computer for the next 15 years, did a History
         | degree, bummed around as a musician for a few years and then,
         | courtesy of the UK dole office, did a 3 month, 5 day a week,
         | 9-5 course in Visual Basic, followed by a 3 month work
         | placement. The company I worked for employed me when the
         | placement came to an end and I've been working as a programmer
         | for the last 25 years - although the last Visual Basic I did
         | was about 24 years ago...
         | 
         | I think I was lucky that I hit the London job market as the
         | first dotcom boom was starting, it seemed to be pretty easy to
         | get a job back then and no one seemed that bothered if you had
         | a CS degree or not. (I still don't have one)
         | 
         | I have done some academic CS courses (via Coursera) and did
         | learn some interesting and useful stuff - but I think the most
         | important thing to have if you want to be a good programmer is
         | to have a self-directed mindset, you have to want go and figure
         | stuff out and be able to learn on your own, using what ever
         | resources you have to hand.
         | 
         | One of the things I like most about programming/software
         | engineering is the fact that there is always more than one way
         | to solve the problem, always scope for improvement and
         | inovation
        
       | ilrwbwrkhv wrote:
       | I think you never learn programming as it becomes more of an art
       | at the upper echelons.
       | 
       | For the fundamentals I would say 2 - 3 years of dedicated work is
       | enough.
        
         | atticora wrote:
         | It depends. I've been coding for a living for 41 years and have
         | a feeling I'll get the hang of it real soon now.
        
           | jesse__ wrote:
           | Amazing answer
        
           | ilrwbwrkhv wrote:
           | Maybe you are not cut out for being a hacker if you haven't
           | gotten the fundamentals down yet after 41 years?
        
             | icepat wrote:
             | Right - because the entire point of learning to program is
             | becoming Mr. Robot
        
             | scrps wrote:
             | It is possible you are not cut out for sarcasm?
             | 
             | (Giving you the benefit of the doubt you may have taken the
             | comment literally, if so I'd maybe apologize for insulting
             | someone with 41 years of experience in a field that is
             | still young whilst having no knowledge of exactly who you
             | are talking to)
        
             | atticora wrote:
             | I aim higher.
        
           | bxparks wrote:
           | Then there's C++. After ~30 years of it, I realized that I
           | don't know how to initialize an object anymore. So I've given
           | up.
        
             | PaulDavisThe1st wrote:
             | I've been doing C++ since 93. What's changed that makes you
             | feel this way?
        
               | Nevermark wrote:
               | Everything, man. Everything.
               | 
               | From the perspective of pulling some C++ programmer in
               | 1993 into 2024, and dropping them into a large C++ code
               | base consistently written with the latest C++ idioms.
               | 
               | (And yes, this is humorous exaggeration. But the name of
               | C++ is apt. A C language dedicated to accumulating
               | features.)
        
           | reactordev wrote:
           | If only they would stop changing the rug out from under ya,
           | am I right? Just when you finish with one API, they go and
           | release a new one.
        
       | calibas wrote:
       | > The key is deliberative practice: not just doing it again and
       | again, but challenging yourself with a task that is just beyond
       | your current ability, trying it, analyzing your performance while
       | and after doing it, and correcting any mistakes. Then repeat. And
       | repeat again.
       | 
       | I think this is the really important part, you have to challenge
       | yourself and go outside of your comfort zones to keep learning.
        
         | freedmand wrote:
         | I wonder how people's learning habits will change with AI tools
         | like GitHub Copilot. I used it for several months but randomly
         | got logged out and am now finding myself valuing the slight
         | inconvenience of looking up official documentation (and
         | surprised how much more sluggish I felt for the first week).
         | 
         | Going through extra steps to learn something through primary
         | sources and valuing being uncomfortable at times are important
         | for my evolution as a programmer.
        
           | testcase_delta wrote:
           | I started learning to code this year, and I keep thinking
           | that I would have thrown in the towel if not for ChatGPT. For
           | better or for worse.
           | 
           | The big difference for me is being able to struggle right up
           | until I'm ready to give up, and then ask ChatGPT for insight.
           | Usually my issue is a syntax one, and I have the concepts
           | down (i.e. I was right to solve it using nested if
           | statements, but I forgot I need to put a variable outside a
           | function, for example). This way I get that dopamine hit of
           | being mostly right, and quick feedback on what I need to
           | improve. If not for ChatGPT, I'd be left feeling like I just
           | failed entirely and I'm not getting it at all, which I don't
           | think is the case.
           | 
           | I think the same experience would be achieved with a good
           | teacher, but then I'd need my schedule to overlap, and the
           | feedback on problems would still be often be delayed instead
           | of instant.
        
             | voakbasda wrote:
             | Using ChatCPT to help you _after_ you have been stuck and
             | struggled would be equivalent to asking a senior. A senior
             | might hallucinate an answer too, but either way you will
             | get pointed in a generally useful direction. That's usually
             | all it takes
             | 
             | But as a senior, I can't imagine using an LLM at this stage
             | for solving anything meaningfully complex.
        
               | freshpots wrote:
               | A friend of mine in a senior role uses it all the time
               | and says it 2-3x'd their productivity. He architects
               | everything using experience but simple but time-consuming
               | sub-routines are done via an LLM. He also uses it to
               | create tests for his code and is quite happy with how it
               | performs in these areas.
        
               | stephendause wrote:
               | What language does he program in? ChatGPT and CoPilot
               | have increased my productivity, sure, but I don't know if
               | they've multiplied it by 2, and definitely not 3. I
               | mostly program in Rust, and while they are good, they
               | still often produce things that don't compile. Iterating
               | back and forth to get something that works takes time,
               | and it feels to me like sometimes doing it alone would've
               | been almost as quick.
               | 
               | I could possibly be way off in my estimations, though. A
               | true comparison would be having me do a task with and
               | without it, but of course once I've done it once, the
               | next time I will do it faster.
        
               | freshpots wrote:
               | They use CoPilot integrated into their IDE and mostly
               | program with Kotlin.
        
           | rozap wrote:
           | I kind of wonder if it's similar to how I never learn how to
           | get somewhere if I use Google maps. If I put away Google maps
           | and use my brain then I can learn the route after doing it
           | once.
        
           | bitwize wrote:
           | I don't even use autocomplete. I know that autocomplete is,
           | like, table stakes for the developer experience these days,
           | but I just can't stand videogame shit happening in my field
           | of vision whilst I'm coding, and I've learned to relish the
           | extra effort of typing the whole name in every time, it's
           | like a vocabulary word I can wield with power and precision,
           | rather than relying on the machine to finish my thoughts for
           | me.
        
           | spookie wrote:
           | Yeah, I realised I'm not really learning by having such a
           | cheatcode. Was doing a Vulkan renderer and the moment I
           | stopped using ChatGPT, I started making way more reasonable
           | decisions on how to structure my code via abstractions and
           | such.
           | 
           | You shouldn't take the easy route when learning lads
        
           | jansommer wrote:
           | ChatGPT has been a blessing for learning C. How do you
           | calculate the conjugate for a complex double when the
           | compiler doesn't support complex numbers? ChatGPT will give
           | you the correct answer together with math examples. One
           | example out of many. Then I verify the result by looking at
           | other people's code - and now I know what to look for.
           | 
           | I wouldn't use Copilot. I've noticed how it distracts people
           | in screen recordings. They pause to see if what is proposed
           | makes sense, and it usually doesn't. Distractions are the
           | last thing I need.
        
             | nottorp wrote:
             | > ChatGPT will give you the correct answer together with
             | math examples.
             | 
             | Actually, back in the days, google would have given you a
             | tutorial with the correct answer together with examples
             | too. You don't need LLMs for this, just honest search. But
             | honest search is gone.
             | 
             | I wonder how long till ChatGPT gets entshitified too...
        
               | jansommer wrote:
               | Yes, Google isn't so good nowadays, or my problems have
               | become sufficiently advanced to not be a quick search
               | away.
               | 
               | What might save us from ChatGPT enshittification are the
               | freely available LLM's. Probably won't be long before we
               | can have a code companion running locally. It's probably
               | already here
        
           | jeremyloy_wt wrote:
           | I personally think learning how to use ChatGPT and the like
           | IS going out of the comfort zone.
           | 
           | To make an analogy to music, I see it like brass players at
           | the advent of the valve.
           | 
           | It's a new way of playing the instrument. The old ways and
           | new ways aren't congruent in all ways, but the new way does
           | seem to have a higher skill ceiling
        
           | PheonixPharts wrote:
           | I've worked with a fair number of less experienced, ChatGPT
           | focused engineers and they aren't all that different from the
           | Java engineers of yore that were completely helpless outside
           | of an IDE and could only work extending existing code. These
           | latter engineers where the exemplar "blub" programmers from
           | PG's famous essay [0].
           | 
           | But clearly _using an IDE_ does not make one a bad programmer
           | any more than using ChatGPT will in the future. The bigger
           | issue is the field is awash in people not really interested
           | in programming. There 's nothing wrong with this as everyone
           | has to make a living, but this has a far bigger impact on the
           | quality of engineers out there than the nature of the tools
           | used.
           | 
           | Not long ago I was at a hip Bay Area startup and I don't
           | think any of my coworkers, senior or otherwise, spent a
           | second of their free time thinking about programming. For me
           | I program for a living because it's great to get paid to do
           | my hobby during the day. Getting started in the field during
           | the shadow of the dotcom bust, the majority of the senior
           | engineers that inspired me were likewise obsessed with
           | programming and would be programmers even if it paid minimum
           | wage. I don't think I would have necessarily become a
           | programmer today since I wouldn't have been near enough the
           | flame to ignite my own spark.
           | 
           | 0. https://paulgraham.com/avg.html
        
         | Erratic6576 wrote:
         | Absolutely, but I need a teacher for that
        
           | Jtsummers wrote:
           | Do you need a person teaching you directly? Then you need a
           | mentor (to guide you) or to go back to school.
           | 
           | If you just need someone to have done the legwork and
           | established the exercises and presentation of material for
           | you, there are a myriad of options: books, blogs, videos,
           | open courses, paid courses, etc.
           | 
           | The trick I've found to mastering a field without having a
           | teacher standing over me and guiding me (and even when I have
           | a teacher) is to learn to construct my own courses and
           | exercises. These are "synthetic". I look at multiple
           | university courses on a topic and grab one or more books, and
           | then work through them in an order that fits my way of
           | learning. If they have a lot of exercises, I do them. If they
           | don't or their exercises are poor (happens), I have learned
           | (over the years) to construct my own exercises.
           | 
           | A major lesson from years of doing this is that there are no
           | perfect teachers, courses, books, or other resources that
           | will, on their own, teach me a topic to mastery. I have to
           | assemble it myself to fit my way of learning and needs as a
           | learner. That part requires introspection along with trial
           | and error. I attempted courses and books that taught me
           | nothing (or barely anything). After a bit of floundering with
           | that, I took a step back and figured out what resources were
           | effective and ineffective for me, what they had in common or
           | were missing, and started assembling my own "courses".
           | 
           | That's a very useful skill to develop, and it transcends
           | disciplines. Even if you do have an actual teacher with you
           | this is still helpful (perhaps even essential) to be able to
           | go beyond what they're teaching you and to cover over their
           | weaknesses as a teacher (either general weaknesses or
           | weaknesses with respect to you).
        
         | pmarreck wrote:
         | You have to like being challenged.
         | 
         | I've seen incredibly smart people in the coding space
         | (definitely smarter than I) basically "smart themselves out of
         | it" because they felt it wasn't challenging anymore. Or they
         | felt tired of the "wrong" challenge, like "waiting for everyone
         | else to catch up to them." (They were usually involved with
         | bleeding-edge tech that ended up being the norm years later.)
         | 
         | If fascination is motivating, I guess be happy that you're not
         | too smart? ;)
        
         | chaorace wrote:
         | This is true, but I think it's better put this way: The key is
         | making it a hobby.
         | 
         | Expertise comes with experience and experience will only come
         | if you _keep coming back_. Some people _can_ force themselves
         | to toil endlessly, but here 's some wisdom for mere mortals:
         | start by searching for a part of software that you can truly
         | love, then cultivate it.
        
           | cardanome wrote:
           | It is also a good idea to place the hobby part of programming
           | in a related but not same field/tech stack than you day job.
           | 
           | If you simply do more work in your free time you might burn
           | out. You want something that provides relaxation but still
           | synergy effects with your day job.
        
         | smogcutter wrote:
         | In education theory this is known as the "zone of proximal
         | development".
        
         | brigadier132 wrote:
         | This seems to be true of all human development. Running,
         | lifting weights, learning. It's all about progressive overload.
        
         | smburdick wrote:
         | As a software developer with some tutoring/TA experience, I'm
         | concerned about whether the next generation of devs will
         | actually be able to code, if all they had to do was use a
         | Copilot to complete their assignments, especially at the
         | freshman/sophomore level. They'd be automating themselves out
         | of usefulness at that point.
         | 
         | Then again, we've had similar conversations about "iPad kids."
         | As an iPad (along with everything else) user, I find it's not a
         | bad approximation of a laptop -- you _do_ have a filesystem,
         | for example, and apps continue to be more fully-featured (in an
         | Apple-approved way, of course).
         | 
         | I use copilot myself, but mostly as a smart autocomplete for
         | setting variables or other minor things that consume time
         | better spent contextualizing through problem solving and
         | interacting with teammates. It's not a substitute for being an
         | engineer.
        
       | wrsh07 wrote:
       | I've always been fond of this advice. I think it correctly
       | describes some of the activities I would expect you to do and
       | experience before you will feel like a deep expert in
       | programming.
       | 
       | I also think it's worth saying, "you don't need to be an expert
       | in programming to try it! Start by tinkering!" (Other comments
       | have been downvoted for describing what tinkering might look
       | like, but any tinkering is valid! Try running llama.cc on your
       | MacBook! Quantize a model yourself)
       | 
       | Ultimately, you'll become good if you do it a lot, and you'll do
       | it a lot if you have one or more hobby projects that you're
       | motivated to work on. I have a few friends who are completely
       | self taught (one going the Arduino / electronics / hardware
       | route, the other going the web app and tools for personal use
       | route), and the keys to their success is that they have projects
       | they like working on. And they've kept at it for years.
       | 
       | They don't know everything, and they don't necessarily have great
       | foundations, but it's not too hard to learn things on an as-
       | needed basis these days. Both of them find information very
       | differently than I do, which is also valuable for me to learn and
       | see.
       | 
       | There are other ways to motivate yourself: taking a class with
       | homework that gets you coding (the success of this strategy
       | depends on the person!), finding an accountability buddy who you
       | discuss your projects with, finding an open source project you're
       | interested in (start by adding comments, fixing typos, or looking
       | for a good "first timer" GitHub issue), do Recurse Center
       | (although their job placement program may have limited options
       | for junior / entry level engineers)
       | 
       | At some point, you'll have beaten your head against a problem
       | (how can I order these things correctly? How do I get this
       | interaction to work correctly? Why is my component re rendering
       | in an infinite loop?) and you'll watch a video or read a blog
       | post explaining it and you will truly understand the issue. It
       | will be common, and you might have encountered it in a 201 class,
       | but your first-hand experience will help it stick.
       | 
       | Another totally valid way to learn programming is to be good
       | enough to get a job [1] and then be paid to figure it out day
       | after day, and ideally have experienced programmers mentoring
       | you. I've seen people go through bootcamps get a lot out of it,
       | but I think the quality is highly variable
       | 
       | [1] unfortunately, while I think this was a really good path ten
       | years ago, the bar continues to be raised (new grads with
       | internship experience can be very good, companies are not hiring
       | as aggressively today as they did in the world of zero percent
       | interest rates)
        
       | macjohnmcc wrote:
       | Teaching yourself programming is important on many levels as the
       | job is a continual learning type of job. What you learned 5 years
       | ago might apply today or you may have to learn something
       | completely new to stay on top.
        
       | dukeofdoom wrote:
       | It's never been easier then now. For example, if you want to
       | learn how to make games...
       | 
       | There's a guy on youtube called clearcode. He will teach you how
       | to make games, in a Bob Ross voice...pretty much from scratch.
       | You can also use ChatGPT to help you out.
       | 
       | The resources for learning are so much better. Socratic method of
       | just asking questions is now possible with AI.
       | 
       | I think Sam Altman said that he is seeing x3 productivity
       | increase from AI helping out programmers.
        
         | walthamstow wrote:
         | I agree there are many more great resources but also many more
         | terrible ones which will take your money or attention and give
         | you barely anything in return.
        
         | jrpelkonen wrote:
         | Personally, I'd like to see the data/research behind the "3x"
         | claim to buy it. Especially when it is hard to imagine Sam
         | Altman as an unbiased observer when it comes to benefits of AI.
        
           | iskela wrote:
           | One angle to these multipliers would be this: A generalist
           | programmer can take other tasks of sw-engineering than just
           | programming with the support of ChatGPT. Like DevOps, DBA and
           | test-automation. For small team or company that is then
           | actually saving or postponing FTE hires
        
       | rmbyrro wrote:
       | Amazing how this aged so well. Perhaps the best validation of the
       | quality of the advice.
        
       | medler wrote:
       | This essay holds a special place in my heart, since I first read
       | it as a teenager when I was just starting to learn to code.
       | 
       | Re-reading it now, I was surprised to see references to Malcom
       | Gladwell, since I didn't remember Outliers becoming a thing until
       | much later. Then when I saw the reference to Ratatouille, I
       | realized the article had been updated since its posting in 1998.
       | The original is still available on archive and is significantly
       | shorter:
       | https://web.archive.org/web/19980206223800/https://norvig.co...
       | Respect to Peter Norvig for continuing to edit his posts over the
       | years.
        
         | ipnon wrote:
         | I can see myself now, reading this in the university library
         | computer lab a decade ago. And now I've taught myself
         | programming. The journey was much more difficult and winding
         | than I was imagining it back then!
        
           | Bagged2347 wrote:
           | As someone who doesn't have a traditional CS background and
           | is on a similar journey, I'd love to know: do you have any
           | advice or insights to share?
        
             | ipnon wrote:
             | To succeed takes 3,650 days. To give up only takes 1.
             | Practice, practice, and practice some more.
        
         | smburdick wrote:
         | I resent Gladwell to this day, possibly because I was assigned
         | to read him in high school. He is quoted too much -- the 10,000
         | hours thing is just a meme at this point, for me anyway.
        
         | froh wrote:
         | before "outliers" there was "the tipping point" and "blink"
        
       | revskill wrote:
       | I can verify this is true.
        
       | dang wrote:
       | 16 years' worth of threads:
       | 
       | (edit: Reposts are fine after a year or so; links to past threads
       | are just to satisfy extra-curious readers)
       | 
       |  _Teach Yourself Programming in Ten Years (1998)_ -
       | https://news.ycombinator.com/item?id=33287618 - Oct 2022 (112
       | comments)
       | 
       |  _Teach Yourself Programming in Ten Years (1998)_ -
       | https://news.ycombinator.com/item?id=27411276 - June 2021 (115
       | comments)
       | 
       |  _Teach Yourself Programming in Ten Years (1998)_ -
       | https://news.ycombinator.com/item?id=20543495 - July 2019 (87
       | comments)
       | 
       |  _Teach Yourself Programming in Ten Years (1998)_ -
       | https://news.ycombinator.com/item?id=16574248 - March 2018 (51
       | comments)
       | 
       |  _Teach Yourself Programming in Ten Years (1998)_ -
       | https://news.ycombinator.com/item?id=9395284 - April 2015 (61
       | comments)
       | 
       |  _Teach Yourself Programming in Ten Years (1998)_ -
       | https://news.ycombinator.com/item?id=5519158 - April 2013 (86
       | comments)
       | 
       |  _Teach Yourself Programming in Ten Years by Peter Norvig (2001)_
       | - https://news.ycombinator.com/item?id=3439772 - Jan 2012 (29
       | comments)
       | 
       |  _Teach Yourself Programming in 10 Years._ -
       | https://news.ycombinator.com/item?id=1060176 - Jan 2010 (32
       | comments)
       | 
       |  _Teach Yourself Programming in Ten Years_ -
       | https://news.ycombinator.com/item?id=191235 - May 2008 (19
       | comments)
       | 
       |  _Norvig: Teach Yourself Programming in Ten Years_ -
       | https://news.ycombinator.com/item?id=43243 - Aug 2007 (7
       | comments)
        
         | jms703 wrote:
         | If only there was a way to let poster know about past threads
         | before posting...
        
           | dang wrote:
           | Reposts are fine after a year or so! This is in the FAQ:
           | https://news.ycombinator.com/newsfaq.html.
           | 
           | When a link has had significant discussion in the last year,
           | the software will normally redirect the submitter to the
           | previous thread rather than allow a repost through.
        
             | taftster wrote:
             | For what it's worth, I think this helps HN feel fresh. This
             | is the first time I've read this article, and I enjoy the
             | comments left by my fellow cohorts of this year's read,
             | just like it was something new.
             | 
             | Long lived historic articles can shape multiple years worth
             | of discussion. I think it's even more fascinating to read
             | the comment history and see what the current thinking is,
             | if it has changed compared to previous years, etc.
        
         | jansan wrote:
         | I am not sure if this is criticism for too many reposts or if
         | once a year is considered a healthy dose of dupes.
        
           | thierrydamiba wrote:
           | For what it's worth I check the site fairly frequently and
           | this is my first time seeing this. It would be interesting if
           | there was a way to mark links as seen so they could be
           | removed from your feed in the future for people who don't
           | care for reposts.
        
           | pvg wrote:
           | It's so that people can see the previous discussion if
           | interested. 'about once a year' does happen to be the
           | frequency at which reposts don't count as dupes on HN but
           | that's somewhat incidental.
        
           | pard68 wrote:
           | dang (the moderator of hn) does this for many/most common
           | reposts. It is done without comment or implications.
        
           | dang wrote:
           | It's just for fun and interest, as the other replies have
           | pointed out. I've added my standard disclaimer to the comment
           | above. Reposts are fine after a year or so! This is in the
           | FAQ: https://news.ycombinator.com/newsfaq.html.
        
         | jprd wrote:
         | Thank you for all of it @dang.
        
       | dekhn wrote:
       | Peter is a gem who really seems to understand the structure of
       | reality slightly better than just about anybody, and is a nice
       | person to boot.
       | 
       | I guess I spontaneously picked up on the 'challenge yourself a
       | little, improve, repeat' strategy a long time ago. I often
       | implement things over decade or more, through a series of small
       | increments. I also decompose many problems recursively and use a
       | sort of A* approach to make progress, sometimes revelling in some
       | detail for months or more at a time before solving it, then
       | backing up the stack to the larger problem I was working on.
       | 
       | For example, I'm building an automated microscope. I work with
       | folks who buy $1M scopes just to speed up their science. I don't
       | want a $1M scope- I want a $1K scope that does 30% of what the
       | $1M scope does. To do this, i've learned how to design and 3d
       | print components, integrate motors, controller boards, etc.
       | Eventually I reached a point where improving the illuminator (the
       | LED light that provides the light to the sample, which is then
       | picked up by the camera) was the most important step and so I
       | took a deep dive into LEDs, and the electronics required to
       | support them.
       | 
       | This has meant putting the scope down and instead creating a
       | series of designs for PCBs that incorporate increasingly
       | sophisticated electronics and higher power LEDs. I set a
       | challenge for myself that is beyond my ability: design and have
       | manufactured, a working constant current driver and assemble the
       | PCB myself using surface mount components. When I started, I knew
       | nothing about constant current, or SMD, or designing PCBs. I
       | started with the simplest possible designs- copying a reference
       | design for ac ontroller, cloning a board I already have,
       | incorporating low-power LEDs onto a board. Each step along the
       | way, adding something slightly more challenging.
       | 
       | When I do this I fail a lot. Some days I get a PCB made to my
       | design after a week of waiting (JLCPCB is AMAZING) and within 5
       | minutes realize I made a fundamental mistake. Other times, a
       | board works perfectly and I "level up": I can now take everything
       | I learned in the process, and use it to pick up the next
       | challenge. Sometimes I get frustrated and depressed- not being
       | able to figure out something that should be straightforward, and
       | then I either rubber duck it, or ask a simple/stupid question on
       | reddit, which typically unblocks me.
       | 
       | Today, I expect to receive my next constant current board design.
       | If I assemble that and it works, I can then proceed to building a
       | board to host a high power LED. That will introduce all sorts of
       | new problems (heat management) that involve going into Kicad,
       | thinking about stuff, making some experiments, sending a design
       | to JLCPCB, waiting a week, and then assembling a bunch of boards,
       | most of which will burn out (high power LEDs are tricky, if they
       | got hot they fail faster). There's an opportuntity to buy some
       | thermistors (little temperature measuring devices) and put them
       | on the board to see how well my design for heat spreading it.
       | 
       | At the end of all this, I'll have a world-class transmission
       | light microscope that can track tardigrades for hours at a time
       | (itself an enjoyable delve into modern computer vision
       | techniques), and I've talked to the world's leading tardigrade
       | researcher, who wants to incorporate my ideas into his research
       | to make tardigrades a model organism.
       | 
       | By the way, if I had stayed in academia, I would NEVER had the
       | time, money, or energy to pursue this; I'd be stuck working on my
       | funded research. NOBODY wants to give me money to design scopes
       | that are roughly where state of the art was in the 1970s. But if
       | I keep this up, in a few years I'll be ready to go play with the
       | big boys and girls in the robot biotechnology labs with their $1M
       | toys.
       | 
       | Bringing this back to Peter, I had the chance to work with him on
       | a project (attempting to disprove the Beal conjecture by finding
       | a counterexample). He did all the brilliant math and we wasted a
       | bunch of CPU (and I mean A BUNCH) trying to find counterexamples.
       | I like how when he wrote https://norvig.com/beal.html he wrote in
       | the nicest possible way that I was wasting time and energy.
        
       | NoraCodes wrote:
       | > Why is everyone in such a rush?
       | 
       | Because we live under an economic system that says you must
       | produce value for capital or die.
       | 
       | This is all very good advice. AND, I think we would have many
       | fewer bad programmers and many more good ones if fewer Knuths
       | were spending eight to ten hours a day mopping floors at fast
       | food restaurants for $7.25 an hour, or writing garbage JavaScript
       | for fly-by-night startups for $65,000 a year.
        
       | theyinwhy wrote:
       | On the frontpage at the same time: Become a master in 1 year [1]
       | 
       | 1: https://micromasters.mit.edu/
        
       | AidanSW wrote:
       | Just doing something for 10 years doesn't make you an expert, I
       | started coding 11 years ago- as a kid. But my knowledge became so
       | diffuse across topics I was interested in that I never really
       | became an expert in any of it.
        
         | ipaddr wrote:
         | You became an expert in learning a variety of topics
        
           | thfuran wrote:
           | Just doing something for 10 years doesn't make you an expert.
        
             | ipaddr wrote:
             | I think it does, just not in the things your measuring.
             | 
             | Sitting on a couch for 10 years will make you an expert.
             | Not an expert in sitting on couches in general but an
             | expert in sitting on your couch during the period you were
             | there.
        
               | satellite2 wrote:
               | Pretty sure I got worst at it. 10 years later and now my
               | back hurts.
        
               | ya1sec wrote:
               | I like this sentiment. A Wittgenstein collection called
               | "Philosophical Grammar" contains a lot of these kinds of
               | thoughts.
        
           | AidanSW wrote:
           | Maybe, or maybe I became used to and ossified in bad
           | strategies. I hope not, but I think I have learned that
           | learning has to be intentional. Meaning for me, writing stuff
           | down, trying to find out other solutions to the same problem
           | rather than just going with whatever my first idea is, etc.
        
         | RyanOD wrote:
         | This is the story of my life. I know a little about pretty much
         | every topic ever.
        
           | TedDoesntTalk wrote:
           | That's good - keep striving for that!
        
           | skeeter2020 wrote:
           | The idea that you should find some narrow niche in which you
           | are so passionate that you dedicate the rest of your life to
           | attaining mastery is only valid for such a small part of the
           | population and, in my eyes, a little sad.
        
           | AidanSW wrote:
           | Yeah, it's nice feeling like I have a foundation in enough
           | topics that I actually feel like I would know vaguely where
           | to start looking to solve most problems. Definitely not an
           | expert though.
        
         | extheat wrote:
         | By "doing something for 10 years", I think the implication is
         | you're actively working on that subject area, regularly, for 10
         | years. Not per se occasionally working on something every now
         | and then. You can become a really good Chess player if you
         | consistently play for 10 years--you figure out all the
         | strategies and shortcuts, and it would be unusual if you
         | weren't really good compared to someone playing for a year
         | (assuming they're not some exceptional learner). But if your
         | metric is just "I've played it occasionally since 10 years ago"
         | then indeed, you probably didn't develop much breadth or scope
         | as you were constantly forgetting and relearning as opposed to
         | compounding your knowledge.
         | 
         | As for programming, I don't think programming is all that
         | hopelessly complex and broad as field, but it can seem that way
         | to a beginner. Most computer science concepts translate very
         | well to other parts of the field, and the core programming
         | constructs and libraries don't change much at all. How many
         | ways can you configure a website, a mobile app or a database?
         | Your instinct might be to think about all the different libs
         | you can pull in, all the different programming languages, etc.
         | But they all do roughly the same thing, they all compile down
         | to the same stuff. You just have to develop the skill of
         | understanding the fundamentals as opposed to getting lost in a
         | sea of high level abstractions.
        
           | AidanSW wrote:
           | I agree writing a variety of software will have similar base
           | ideas, but still, having a good foundation in a topic doesn't
           | make you an expert. I've barely used Java, but if I had to I
           | could learn enough to write it pretty quickly, that doesn't
           | mean I understand at all how JVM and Java's GC works, or what
           | a factory is.
        
         | skeeter2020 wrote:
         | It's not about "doing something", it's about intentionality,
         | i.e. you're working to advance your knowledge and expertise
         | with some form of a plan, even if that plan is "try a bunch of
         | stuff and see what sticks, then double down in that area".
         | 
         | Also, broad-based knowledge can be the expertise; think a
         | general contractor who's skill is tying all the specialists
         | together. The best software managers I've ever had came from
         | skilled generalists backgrounds vs. incredibly deep
         | specialists.
        
       | arp242 wrote:
       | 24 hours? Oceans of time! I had "Teach Yourself C++ in 10
       | minutes".
       | 
       | I had done some MSX-BASIC, but after we got a "real" PC I wanted
       | to learn a "real" and modern language. This is what they had at
       | the local bookshop.
       | 
       | The "10 minutes" is done by explaining what C++ is and then it
       | declares "there, in the last 10 minutes I explained things and
       | you now know what C++ is". Ehh...
       | 
       | I didn't understand a lot of it. Chapter 5 or so is templates.
       | It's pretty thin, and just rushes past things and never takes the
       | time to really explain anything. It may be somewhat suitable if
       | you're experienced in other languages, but it's absolutely not
       | suitable for beginners. Visual Studio also didn't help (at the
       | time I thought you _needed_ VS to program on Windows - it was
       | 1999, we didn 't have internet, and I was 14, so what did I
       | know?)
       | 
       | Aside from being a border-line scam, these books are worse than
       | useless and actively harmful. As a result of this book I gave up
       | programming for years, thinking I just didn't have what it takes.
       | Wasn't until years later that I discovered this "Linux" and then
       | "FreeBSD" thing that I discovered you can "just" write programs
       | with "just" a text editor, and that things like Perl and Python
       | and C exist.
       | 
       | If you see one of these things at the bookshop you should steal
       | it and throw it out. Haha, only serious.
        
         | reactordev wrote:
         | Reminds me a lot of when I was 13 and had learned Visual Basic
         | 6 and wanted to make a game so my mother bought me a book on
         | how to make games. "How to make games" she said excitedly as
         | she handed me the book. "How to Make Games" it indeed did say.
         | It also said under it "in C++ and OpenGL". I had no idea what I
         | was doing or what was going on. Enter high school. An elective
         | called "Computer concepts and programming" was the only
         | computer class outside of "Keyboarding". It was taught by a
         | female teacher who used to write punch cards for a living. She
         | introduced us to C. All of the sudden, that book from a few
         | years ago clicked in my brain and next thing I knew, I was
         | writing games in C++. They were crap. Horrible performance. But
         | I made them from scratch.
         | 
         | Fast forward another decade and then a lot of these Packt
         | publishing style books on making games and learning coding -
         | except for the holy grail of book series - GPU Gems... if you
         | ever want to feel stupid, go read some GPU Gems articles. Today
         | there's a lot of choices - PBR - Vulkan - anything Eric
         | Lengyel.
         | 
         | I still feel like it's a trap. All these "Teach yourself..."
         | should really be titled "Become obsessed with..."
        
         | paulpauper wrote:
         | Teach yourself in one minute: copy paste the "hello world"
         | example from wikipedia
        
       | smburdick wrote:
       | I am at times more of a book learner, but find that attitude is
       | often more helpful for non-CS disciplines that change slower (eg,
       | math/physics).
       | 
       | A recent negative book example for me is the Quantum Programming
       | book from O'Reilly. I found that it did not discuss quantum
       | circuits in a detail that helped me really understand what I was
       | doing -- though I suppose that is a conceit of quantum computing.
       | Perhaps I will return to it later (I am working through
       | Nielsen/Chuang now, which is very theoretical, but explains
       | things very clearly)
       | 
       | My policy is that a book is nothing more than a learning tool,
       | which a hobby project can also be (perhaps more effectively due
       | to the experience gained).
       | 
       | Then again, knowledge is power, and books are great at pointing
       | you in the right direction -- assuming you found the right one
       | for your needs, of course.
       | 
       | I know some people who won't open a book unless they know they
       | can read the whole thing, which I think is a ludicrous attitude.
       | 
       | I did just order O'Reilly's Generative Deep Learning book, and am
       | hoping to get something out of that, and if I only retain a
       | handful of snippets to use in my career, that is profitable for
       | me.
       | 
       | The least I can count on is that it will look nice on my shelf.
        
         | sfn42 wrote:
         | Fundamentals don't change. Sure there's a new frontend
         | framework every week but they're all just generating html.
        
           | smburdick wrote:
           | +1. What are the fundamentals of CS? Algorithms?
        
             | el_oni wrote:
             | and data structures. Theres a book called Algorithms +
             | Datastructures = programs which i've heard good things
             | about.
             | 
             | I've also heard good things about 7 programming languages
             | in 7 weeks, as well as crafting interpreters.
             | 
             | The latter 2 I intend to pick up this year
        
             | Jtsummers wrote:
             | No particular order but how they came to mind:
             | 
             | Data structures, algorithms, algorithm analysis, various
             | discrete math topics (set theory and number theory, a bit
             | of graph theory, are usually included in a typical CS
             | undergrad curriculum), models of concurrency, models of
             | computing (lambda calculus, Turing machines), complexity
             | classes, Chomsky hierarchy, type theory (some might
             | consider this more advanced, varies by school and its lean
             | towards practical or theoretical CS), systems of logic.
        
             | tombert wrote:
             | If software engineering whiteboard interviews are anything
             | to go by, strictly hash tables. Hash tables are the only
             | thing that matter, unless of course the interview process
             | is broken...
        
             | sn9 wrote:
             | https://teachyourselfcs.com/
        
             | syndicatedjelly wrote:
             | Dan Grossman's "Programming Languages" series on Coursera
             | was important in helping me connect the dots. And that was
             | after only completing the first of three parts of the
             | course...
        
           | cjohnson318 wrote:
           | Yeah, I'm comfortable buying a book on C/C++, or Swift even,
           | but for React or Vue or whatever, I'm buying a digital copy.
        
           | ssrc wrote:
           | _Just for the moment, consider the idea of implementing the
           | requirements shown in the figure using a network of connected
           | microcomputers, one microcomputer per bubble._
           | 
           | Structured Analysis and System Specification, Tom DeMarco,
           | 1978.
        
           | ta_1138 wrote:
           | It's often hard to tell what information is truly
           | fundamental, and what will age badly. I look at many books of
           | software engineering that were popular in the early 2000s,
           | like The Pragmatic Programmer, Agile Software Development or
           | the Design Patterns book by the gang of 4. Those books aren't
           | taking about technologies that we expected to be superceded
           | in 5 years. And yet, a lot of the text regarding object
           | orientation and design patterns is outdated at best, and
           | outright harmful at worst.
           | 
           | One can also look at, say, concurrency. A topic often seen as
           | unimportant in the 90s, but ultimately taught at the lowest
           | level, with mutexes, threads, semaphores and such. Those
           | aren't going away, but how often is concurrent programming
           | all about manually setting mutexes? We use higher order
           | abstractions, but those change too. Many languages are
           | encapsulating this in monads, whether people know their
           | promise implementation is a monad or not. But that's not the
           | only way, and the most popular way can change: Maybe
           | languages in 10 years will be all about continuations and
           | direct styles. Maybe it'll be something else. The fact that
           | in the end, the same basic features from the 80s and 90s will
           | exist at the bottom somewhere isn't that useful for most
           | programmers.
           | 
           | And html generation... I was writing UIs before web apps were
           | there. A lot of things that seemed fundamental went away when
           | the browser was embraced. But will the browser live forever,
           | or be superceded? I suspect that it will all get replaced, or
           | be utter legacy, eventually. Will that eventually be 10
           | years? 30? It's very hard to say what will remain
           | fundamental, and what will not.
        
       | miiiiiike wrote:
       | I bought a copy of "Sams Teach Yourself C++ in 24 Hours" at a
       | CompUSA in 1999. The guy at the checkout looked at it, laughed,
       | and told me about this article.
       | 
       | When I was 16 I was looking at programming books at Borders and a
       | guy handed me a copy of "The C Programming Language"; changed my
       | life.
       | 
       | So much of my career has been shaped by running into developers
       | or just people interested in programming out in the world.
       | 
       | Thanks.
        
         | hinkley wrote:
         | I miss CompUSA.
         | 
         | I still firmly believe that the move to transparent bags is
         | what killed them. For me it ruined my annual tradition of
         | buying Christmas presents while family was next door in another
         | store, but I'm sure for others it was being treated like a
         | criminal. Those magnetic readers aren't great but they aren't
         | in your face.
         | 
         | Once I stopped going in routinely I stopped going in at all.
        
           | paulddraper wrote:
           | Really? It hasn't killed Costco yet.
        
         | stouset wrote:
         | I got started buying Borland C++ Builder in... 1997, I think,
         | and read the book that came with it which was similarly named.
         | It was quite bad, I remember the chapter on pointers more or
         | less said "I can't explain why you'd want to use them, but when
         | you find a situation that requires them you'll know you need
         | them" or something like that.
        
         | bluedino wrote:
         | >> I bought a copy of "Sams Teach Yourself C++ in 24 Hours" at
         | a CompUSA
         | 
         | Some of those books were laughably bad. But thing I miss from
         | back then, was the feeling that the book was going to be the
         | key to getting you started writing whatever crazy idea you had
         | for a program in your head.
         | 
         | I think the last time I had that feeling was walking out of
         | Microcenter with a new MacBook and an iPod Touch, ready to make
         | the next Angry Birds...
        
           | tombert wrote:
           | I actually didn't think that the Sams books were so bad,
           | albeit a bit misleading if you think you're really gonna grok
           | C or C++ in 24 hours.
           | 
           | I learned C first in high school because I found a pirated
           | copy of "Learn C in 24 Hours" online, and I actually felt
           | that they did a reasonably good job getting me started,
           | though if I recall correctly some of their examples with
           | pointers and memory management were actually incorrect.
           | Still, it was enough to make programming interesting to me,
           | and when I dropped out of college the first time I was able
           | to salvage a somewhat decent career because of that interest.
        
           | jamesbfb wrote:
           | > But thing I miss from back then, was the feeling that the
           | book was going to be the key to getting you started writing
           | whatever crazy idea you had for a program in your head.
           | 
           | Yes! I miss it too. For me, that book was Head First PHP &
           | MySQL[0] - Late 2000's, I was living and working in Thailand
           | for a family friends small logistics company in the capacity
           | of a BA, trying to move them into this century. We were
           | trying to find a vendor for any system that would allow us to
           | keep track of the movements of shipping containers within a
           | container yard, and something sparked and I thought "hey, I
           | did a semester of programming at Uni, how hard can it be?!",
           | over the span of the next 6 months or so, this book helped me
           | put together a solution that scarily, they are still using to
           | this day.
           | 
           | Fast-forward 15ish years and here I am, still cutting code,
           | although in the capacity of a dev lead, but after all that, I
           | have the book to thank.
           | 
           | [0]https://www.oreilly.com/library/view/head-first-
           | php/97805961...
        
         | ainiriand wrote:
         | Boy I had the same book that I borrowed from a friend. I was
         | truly in love with that book and went over it a few times. My
         | friend ended up giving it to me as a present, something that
         | truly shaped who I am now.
        
         | nyjah wrote:
         | I used to love standing at borders looking at all the computer
         | books. I still have my copies of Ivor Hortons beginning C and
         | beginning c++. I never see that guy getting love in the
         | programming author world, but that was my guy when I was a
         | teen.
        
           | pipes wrote:
           | I still love going to the bookshop and looking at the
           | programming books! (I'm in my 40s)
        
         | zozbot234 wrote:
         | I wonder who's going to write the "Teach yourself Rust from
         | scratch in 21 days" book. If C and even C++ can be learnt
         | effectively as a first programming language, there's little
         | reason why Rust couldn't be. And if not Rust, maybe Golang
         | could play that role.
        
           | sn9 wrote:
           | The Rust book is basically that. An hour per day would
           | probably get you through it in good time.
        
             | zozbot234 wrote:
             | TRPL assumes familiarity with some existing programming
             | language, such that much of its focus is how Rust differs
             | from more common languages. A true "from scratch" book
             | would probably first teach idiomatic Rust as something not
             | too different from a pure functional language (in that the
             | default approach in Rust is to pass objects by value and
             | forbid all shared mutable state, just like FP languages do)
             | and introduce interior mutability subsequently as a way of
             | supporting more "imperative" patterns of coding.
        
         | itronitron wrote:
         | Unfortunately "The C Programming Language" has enough
         | typographical errors in it to seriously undermine it's utility
         | as a book with which to learn programming.
        
         | noneeeed wrote:
         | One of the hills on which I am prepared to die on is that "The
         | C Programming Language" is the best programming language book
         | I've ever read. Every developer should read it and learn C at
         | least once, even if they promptly forgot it all.
        
           | bch wrote:
           | You're not going to die on that hill. There are so many
           | people that share your opinion that you might have trouble
           | finding space, but you're not going to die on that hill.
        
         | mentos wrote:
         | For me it was "Visual Basic Professional 3.0 Programming by
         | Thomas W. Torgerson" from Barnes and Nobles in 1997. I had
         | downloaded Visual Basic 3.0 from 100 different email
         | attachments on AOL and wanted to learn how to make
         | punters/progs.
         | 
         | I remember transcribing code from the book to attempt to play a
         | sound file when my program opened. I remember being stunned
         | when it actually worked!
         | 
         | What an honor it has been to make a career in software
         | development since.
        
         | jprd wrote:
         | Sheet. Thank YOU for that comment!
         | 
         | It connected me back to some of that magic.
         | 
         | The same magic at "computer fairs (faires)". That same magic
         | when you happened across that other nerd in the college/school
         | lab doing something cool and subversive.
        
         | highwaylights wrote:
         | Still, I kind of feel like I want to print a fake "Teach
         | yourself open-heart quadruple bypass surgery in 24 hours"
         | sleeve and leave it on the shelf to see what happens.
        
       | tempodox wrote:
       | Yep, thats a reasonable time horizon. After 10 years you can call
       | yourself a seasoned beginner.
        
       | ResNet wrote:
       | I am quite impressed that the ancient Amazon.com link [0] on the
       | page (with quite a few non-trivial query params) still returns
       | relevant results today. A good case of _Cool URIs don 't change_
       | [1].
       | 
       | [0] http://www.amazon.com/gp/search/ref=sr_adv_b/?search-
       | alias=s...
       | 
       | [1] https://www.w3.org/Provider/Style/URI
        
       | aldousd666 wrote:
       | I have been dropping links to this article since 1998. Lol. It
       | has definitely stood the test of time
        
       ___________________________________________________________________
       (page generated 2024-01-15 23:00 UTC)