[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)