Comment by deergomoo

Comment by deergomoo 3 days ago

58 replies

> You don't need a computer science background to participate - just a little programming knowledge and some problem solving skills will get you pretty far.

Every time I see this I wonder how many amateur/hobbyist programmers it sets up for disappointment. Unless your definition of “pretty far” is “a small number of the part ones”, it’s simply not true.

duxup 2 days ago

On sorta the same topic:

In the programming world I feel like there's a lot of info "for beginners" and a lot of folks / activities for experts.

But that middle ground world is strange... a lot of it is a combo of filling in "basics" and also touching more advanced topics at the same time and the amount of content and just activities filling that in seems very low. I get it though, the middle ground skilled audience is a great mix of what they do or do not know / can or can not solve.

I don't know if that made any sense.

  • josephg 2 days ago

    This is also true of a lot of other disciplines. I’ve been learning filmmaking lately (and editing, colour science, etc). There’s functionally infinite beginner friendly videos online on anything you can imagine. But very little content that slowly teaches the fundamentals, or presents intermediate skills. It’s all “Here’s 5 pieces of gear you need!” “One trick that will make your lighting better”. But that’s mostly it. There’s almost no intermediate stuff. No 3 hour videos explaining in detail how to set up an interview properly. Stuff like that.

    • gh0stcat 2 days ago

      I've found the best route at that point is just... copying people who are really good. For my interest (3d modeling) if you want voice-over and directions, those are all pretty basic, but if you want to see how someone approaches a large, complex object, I will literally watch a timelapse of someone doing it and scrub the video in increments to see each modifier/action they took. It's slow but that's also how I built some intuition and muscle memory. That's just the way...

  • Vinnl 2 days ago

    Makes sense that that's the case: there's usually a limited amount of beginner's knowledge, and then you get to the medium level by arbitrary combinations of that beginner's knowledge, of which there's an exponential number, making it less likely that someone has produced something about that specific combination. Then at the expert level, people can get real deep into some obscure nitty-gritty detail, and other experts will be able to generalise from that by themselves.

  • joseda-hg 2 days ago

    It's one of the worst parts of being self taught, beginner level stuff has a large interest base because everyone can get into it.

    Advanced level stuff usually gets recommended directly by experts or will be interesting to beginners too as a way of seeing the high level.

    Mid level stuff doesn't have that wide appeal, the freshness in the mind of the experts, or the ease of getting into, so it's not usually worth it for creators if the main metric is reach/interest

    Structured (taught) learning is better in this regard, it at least gives you structure to cling on to at the mid level

  • ahoka 2 days ago

    Yes, and it's hard to point to reference material to newcomers. Hey, yeah that's actually a classic problem, let me show you some book about this... oh there's none. Maybe I should start creating them, but that is of course hard.

    But also, the middle ground is often just years of practice.

  • fifilura 2 days ago

    Middle level is where you pay with sweat.

  • greener_grass 2 days ago

    CodeWars has a nice Kata grading system that features many intermediate level problems.

macintux 3 days ago

Someone else in the thread lamented the problems as "too easy" and I wondered what world I was living in.

  • mattbillenstein 2 days ago

    Realize in anything, there are people who are much better than even the very best. The people doing official collegiate level competitive programming would find AoC problems pretty easy.

    • Barrin92 2 days ago

      >The people doing official collegiate level competitive programming would find AoC problems pretty easy.

      I used to program competitively and while that's the case for a lot of the early day problems, usually a few on the later days are pretty tough even by those standards. Don't take it from me, you can look at the finishing times over the years. I just looked at some today because I was going through the earlier years for fun and on Day 21/2023, 1 hour 20 minutes got you into the top 100. A lot of competitive programmers have streamed the challenges over the years and you see plenty of them struggle on occasion.

      People just love to BS and brag, and it's quite harmful honestly because it makes beginner programmers feel much worse than they should.

  • alexfoo 3 days ago

    The group of people for which the problems are "too easy" is probably quite small.

    According to Eric last year (https://www.reddit.com/r/adventofcode/comments/1hly9dw/2024_...) there were 559 people that had obtained all 500 stars. I'm happy to be one of them.

    The actual number is going to be higher as more people will have finished the puzzles since then, and many people may have finished all of the puzzles but split across more than one account.

    Then again, I'm sure there's a reasonable number of people who have only completed certain puzzles because they found someone else's code on the AoC subreddit and ran that against their input, or got a huge hint from there without which they'd never solve it on their own. (To be clear, I don't mind the latter as it's just a trigger for someone to learn something they didn't know before, but just running someone else's code is not helping them if they don't dig into it further and understand how/why it works.)

    There's definitely a certain specific set of knowledge areas that really helps solve AoC puzzles. It's a combination of classic Comp Sci theory (A*/SAT solvers, Dijkstra's algorithm, breadth/depth first searches, parsing, regex, string processing, data structures, dynamic programming, memoization, etc) and Mathematics (finite fields and modular arithmetic, Chinese Remainder Theorem, geometry, combinatorics, grids and coordinates, graph theory, etc).

    Not many people have all those skills to the required level to find the majority of AoC "easy". There's no obvious common path to accruing this particular knowledge set. A traditional Comp Sci background may not provide all of the Mathematics required. A Mathematics background may leave you short on the Comp Sci theory front.

    My own experience is unusual. I've got two separate bachelors degrees; one in Comp Sci and one in Mathematics with a 7 year gap between them, those degrees and 25+ years of doing software development as a job means I do find the vast majority of AoC quite easy, but not all of it, there are still some stinkers.

    Being able to look at an AoC problem and think "There's some algorithm behind this, what is it?" is hugely helpful.

    The "Slam Shuffle" problem (2019 day 22) was a classic example of this that sticks in my mind. The magnitude of the numbers involved in part 2 of that problem made it clear that a naive iteration approach was out of the question, so there had to be a more direct path to the answer.

    As I write the code for part 1 of any problem I tend to think "What is the twist for part 2 going to be? How is Eric going to make it orders of magnitude harder?" Sometimes I even guess right, sometimes it's just plain evil.

    • volkadav 2 days ago

      Sorry to focus on just one aspect of your (excellent) post, but do you have recommendations for reading up on A*/SAT beyond wikipedia? I'm mostly self-taught (did about a minor's worth of post-bacc comp sci after getting a chemistry degree) and those just hasn't come up much, e.g. I don't see A* mentioned at a first glance through CLRS and only in passing in Skiena's algorithms book. Thank you!

      • alexfoo 2 days ago

        Not sure. I covered them during my Comp Sci degree in the mid/late 90s. I'm probably not even implementing them properly but whatever I do implement tends to work.

        Just checked my copy of TAOCP (Vol 3 - Sorting and Searching) and it doesn't mention A* or SAT.

        Ref: https://en.wikipedia.org/wiki/The_Art_of_Computer_Programmin...

        A quick google shows that the newer volumes (Volume 4 fascicles 6 and 7) seem to cover SAT. Links to downloads are on the Wikipedia page above.

        Maybe the planned 4C Chapter 7 "Combinatorial searching (continued)" might cover A* searching. Ironically googling "A* search" is tricky.

        Hopefully someone else will chip in with a better reference that is somewhere in the middle of Wikipedia's brevity and TAOCP's depth.

    • CobrastanJorji 2 days ago

      Yeah, getting 250 or so stars is going to be straightforward, something most programmers with a couple of years of experience can probably manage. Then another 200 or so require some more specialized know-how (maybe some basic experience with parsers or making a simple virtual machine or recognizing a topology sort situation). Then probably the last 50 require something a bit more unusual. For me, I definitely have some trouble with any of the problems where modular inverses show up.

    • ctxc 2 days ago

      That's a pretty crazy background. I wish you'd put your profile in your bio so I could follow you!

  • booleandilemma 3 days ago

    It's just bluffing, lying. People lie to make others think they're hot shit. It's like the guy in school who gets straight A's and says he never studies. Yeah I'll bet.

    • ryandv 3 days ago

      They... sort of are though? A year or two ago I just waited until the very last problem, which was min-cut. Anybody with a computer science education who has seen the prompt Proof. before should be able to tackle this one with some effort, guidance, and/or sufficient time. There are algorithms that don't even require all the high-falutin graph theory.

      I don't mean to say my solution was good, nor was it performant in any way - it was not, I arrived at adjacency (linked) lists - but the problem is tractable to the well-equipped with sufficient headdesking.

      Operative phrase being "a computer science education," as per GGP's point. Easy is relative. Let's not leave the bar on the floor, please, while LLMs are threatening to hoover up all the low hanging fruit.

      • byearthithatius 3 days ago

        You say in your comment: "Anybody with a computer science education ... should be able to tackle this one" which is directly opposed to what they advertise: "You don't need a computer science background to participate"

      • saberience 2 days ago

        "Anybody with a computer science education who has seen the prompt Proof. before should be able to tackle this one with some effort, guidance, and/or sufficient time."

        I have a computer science education and I have no idea what you're talking about. The prompt "Proof." ?

        Most people who study Comp Sci never use any of what they learned ever again, and most will have forgotten most of what they learned within one or two years. Most software engineers never use any comp sci theory at all, but especially not graph theory or shit like Dijkstras algorithms, DFS, BFS etc.

alexfoo 3 days ago

Got to agree. I'm even surprised at just how little progress many of my friends and ex-colleagues over the years make given that they hold down reasonable developer jobs.

  • crystal_revenge 3 days ago

    My experience has been "little progress" is related to the fact that, while AoC is insanely fun, it always occurs during a time of year when I have the least free time.

    Maybe when I was in college (if AoC had existed back then) I could have kept pace, but if part of your life is also running a household, then between wrapping up projects for work, finalizing various commitments I want wrapped up for the year, getting together with family and friends for various celebrations, and finally travel and/or preparing your own house for guests, I'm lucky if I have time to sit down with a cocktail and book the week before Christmas.

    Seeing the format changed to 12 days makes me think this might be the first time in years I could seriously consider doing it (to completion).

    • julianz 3 days ago

      Yep, the years I've made it the furthest have been around the 11-12 day mark. The inevitably life and kids and work get in the way and that's it for another year. Changing to a 12 day format is unlikely to affect me at all :)

  • onion2k 2 days ago

    In order to complete AoC you need more than just the ability to write code and solve problems. You need to find abstract problem-solving motivating. A lot of people don't see the point in competing for social capital (internet points) or expending time and energy on problems that won't live on after they've completed them.

    I have no evidence to say this, but I'd guess a lot more people give up on AoC because they don't want to put in the time needed than give up because they're not capable of progressing.

    • alexfoo 2 days ago

      Yeah, time is almost certainly the thing that kills most people's progress but that's not the root cause.

      I think it comes down to experience, exposure to problems, and the ability to recognise what the problem boils down to.

      A colleague who is an all round better coder than me might spend 4 hours bashing away trying to solve a problem that I might be able to look at and quickly recongise it is isomorphic to a specific classic Comp Sci or Maths problem and know exactly how best to attack it, saving me a huge amount of time.

      Spoiler alert: Take the "Slam Shuffle" in 2019 Day 22 (https://adventofcode.com/2019/day/22). I was lucky that I quickly recognised that each of the actions could be represented as '( a*n + b ) mod noscards' (with a and b specific to the action) and therefore any two actions like this can be combined into the same form. The optimal solution follows relatively simply from this.

      Doing all of the previous years means there's not much new ground although Eric always manages to find something each year.

      There have also been some absolutely amazing inventions along the way. The IntCode Breakout game (2019) and the adventure game (can't remember the year) both stick in my mind as amazing constructions.

    • wccrawford 2 days ago

      That's exactly why I don't do more than I do. I do some of the easy ones and it's fun. Then it gets a little harder and I start wondering how much time I want to put into this.

      And then something shiny and fun comes along during a problem that I'm having trouble with, and I just never come back.

    • dominicrose 2 days ago

      It's hard for most people to focus on a single thing for a long period of time. Motivation tends to come and go. I started the 2024 solutions in 2025, without the pressure and got to the end this way (not without help though TBH). Secondary motivation can help, like being bored or wanting to learn another programming language.

    • lan321 2 days ago

      I've never tried AoC prior but with other complex challenges I've tried without much research, there comes a point where it just makes more sense to start doing something on the backlog at home or a more specific challenge related to what I want to improve on.

    • foo42 2 days ago

      I find the problem I have is once I get going on a problem I can't shake it out of my head. I end up lying in bed for hours pleading with my brain to let it go if I've not found the time to finish it during the crumbs of discretionary time in the day!

  • ksenzee 2 days ago

    This type of problem has very little resemblance to the problems I solve professionally - I’m usually one level of abstraction up. If I run into something that requires anything even as complicated as a DAG it’s a good day.

  • sethops1 3 days ago

    I think this has a lot more to do with time commitment. Once the problems take more than ~1 hour I tend to stop because I have stuff to do, like a job that already involves coding.

  • TiredOfLife 2 days ago

    Because like 80% of AoC problems require deep Computer science background and deeply specific algorithms almost nobody is using in their day to day work.

    • queuebert 2 days ago

      But what about all those LeetCode interviews? /s

  • ryandv 3 days ago

    Why try any more? There are so many fucking frauds in this field.

llmthrow0827 2 days ago

It's totally true. I was doing Advent of Code before I had any training or work in programming at all, and a lot of it can be done with just thinking through the problem logically and using basic problem solving. If you can reason a word problem into what it's asking, then break it down into steps, you're 90% of the way there.

  • ab5tract 2 days ago

    The statistics speak a far different story, I’m afraid.

    • 0xEF 2 days ago

      Comparing previous years, they're exactly what I'd expect, to be honest. Only people serious about completion will...well...complete it. Even if they do not know any code, if you pick something well-documented like Python or whatever, it should not be a tremendous challenge so long as you have the drive to finish the event. Code isn't exactly magic, though it does require some problem-solving and dedication. Since this is a self-paced event that does not offer any sort of immediate reward for completion, most people will drop out due to limited bandwidth needing to be devoted to everything else in their lives. That versus, say, a college course where you paid to be there and the grade counts toward your degree; there's simply more at stake when it comes to completing the course.

      But, speaking to the original question as to the number of newbies that go all the way, I'd say one cannot expect to increase their skills in anything if one sticks in their comfort zone. It should be hard, and as a newbie who participated in previous years, I can confirm it often is. But I learned new things every time I did it, even if I did not finish.

      • saberience 2 days ago

        I have to say, I've read many out-of-touch comments on HN over the years but this is definitely among the most out there, borderline delusional comments I've ever seen!

        The idea that anyone who doesn't know any code would:

        1) Complete in Advent of Code at all.

        2) Complete a single part of a single problem.

        let alone, complete the whole thing without it being a "tremendous challenge"...

        is so completely laughable it makes me question whether you live on the same planet as the rest of us here.

        Getting a person who has never coded to write a basic sort algorithm (i.e. bubble sort) is already basically impossible. I work with highly talented non coder co-workers who all attended tier-1 universities (e.g. Oxford, Harvard, Stanford) but for finance/business related degrees, I cannot get them to write while/foreach loops in Python, and simply using Claude Code is way too much for them.

        If you are even fully completing one Advent of Code problem, you are in the top 0.1% of coders, completing all of them puts you in the top 0.001%.

    • dominicrose 2 days ago

      There is a minority of people who can outsmart everyone without a degree.

magimas 2 days ago

mh, maybe it's cheating because it's still a STEM degree but I have a PhD in physics without any real computer science courses (obviously had computational physics courses etc. though) and I managed to 100% solve quite a few years without too much trouble. (though far away from the global leaderboard and with the last few days always taking several hours to solve)

rts_cts 3 days ago

I have a EE background not CS and haven't had too much trouble the last few years. I'm not aiming to be on the global leader board though. I think that with good problem solving skill, you should be able to push through the first 10 days most years. Some years were more front loaded though.

gardenhedge 2 days ago

Agreed. I have a CS background and years of experience but I don't get very far with these. At some point it becomes a very large time commitment as well which I don't have

saberience 2 days ago

Agreed. There is no "beginner" or amateur programmer who could complete even part of a single Advent of Code problem.

  • alexfoo 2 days ago

    I disagree, the odd few are quite simple and can be done with pencil and paper.

    https://adventofcode.com/2020/day/1 for example. It's not hard to do part 1 by hand.

    You need two numbers from the input list (of 200 numbers) that add to 2020.

    For each number n in the list you just have to check if (2020-n) is in the list.

    A quick visual scan showed my input only had 9 numbers that were less than 1010, so I'd only have to consider 9 candidate numbers.

    It would also be trivial for anyone who can do relatively simple things with a spreadsheet.

  • alach11 2 days ago

    Usually the first day or two are readily solvable in Excel with just regular spreadsheet formulas.

Peritract 2 days ago

In general, the problems require less background knowledge than other coding puzzles. They're not always accessible without knowing a particular algorithm, but they're more 'can you think through a problem' than 'have you done this module'.

That's not the same as saying they're easy, but it's a different kind of barrier, and (in my opinion) more a test of 'can you think?' than 'did you do a CS degree?'

eloisant 2 days ago

The point is not that it's easy, but that you don't need much knowledge beyond knowing how to code.

In this sense it's accessible: you won't get stuck because of a word you don't understand or a concept you've never heard of.

  • deergomoo 2 days ago

    > you won't get stuck because of a word you don't understand or a concept you've never heard of

    I very much disagree here. To make any sort of progress in AoC, in my experience, you need at least:

    - awareness of graphs and how to traverse them

    - some knowledge of a pathfinding algorithm

    - an understanding of memoisation and how it can be applied to make deeply recursive computations feasible

    Those types of puzzle come up a lot, and it’s not anything close to what I’d expect someone with “just a little programming knowledge” to have.

    Someone with just a little programming knowledge is probably good with branches and loops, some rudimentary OOP, and maybe knows when to use a list vs a map. They’re not gonna know much about other data structures or algorithms.

    They could learn them on the go of course, but then that’s why I don’t think basic coding knowledge is enough.