5 ms·
Good developers learn to program. Most courses teach a language
- somewhatgoated 6mo agoWho still does boot camps in $currentyear? You can get all these fundamentals for free and probably better from an LLM.
- ergocoder 6mo agoTo be fair, to learn to think, you have to learn the language first. Learning to program without knowing the language is useless and counter-productive. Of course, this doesn't mean you have to learn 10+ languages first... but you have to learn a real programming language (not a toy one) before you can learn to program. Edit: * a language
- Jtsummers 6mo ago> To be fair, to learn to think, you have to learn the language first. Which language is the language? A competent programmer can think about programming and reason about programs written in most languages without having to know that particular language intimately (with some exceptions that push outside the normal algorithmic language notation of the Fortran, C, Java, JS, Common Lisp, Rust, Go, etc. family of languages; but those are minority languages and a competent programmer shouldn't need more than a short period of time to become literate, if not expressive, in it).
- ergocoder 6mo agoI meant "a language". Corrected it. > A competent programmer can think about programming and reason about programs written in most languages without having to know that particular language intimately That's because the programmer already learned how to program. But when they started, they definitely didn't write only pseudocode that wasn't runnable (to see the results) for months/years.
- Jtsummers 6mo ago> they definitely didn't write only pseudocode that wasn't runnable (to see the results) for months/years. GT started students that way and it worked well for years. A full semester (number varied, but was the CS 101 course, 1301/1311/1501 or something like that), taught with only pseudocode. They got rid of it because of appearances, trying to be like every other school out there. Eventually settling on Python, I think, after a brief stint with Scheme (which ended after a major cheating scandal).
- deleted 6mo ago[deleted]
- jmalicki 6mo agoBullshit. You need to learn to leetcode in psuedocode first.
- ergocoder 6mo agoBullshit. I never see anyone learning to program using pseudocode (which isn't runnable to get feedback). If they used pseudocode, were they just run the program in their heads?
- linguae 6mo agoWhen I took an introductory programming class at Sacramento City College in fall 2004 during my senior year of high school, we spent the first half of the semester designing our programs using flowcharts and pseudocode. We were encouraged to check the logic of our flowcharts and pseudocode. In the second half of the semester, we implemented those programs in C++. I haven’t seen this pedagogical practice in any other introductory course I’ve seen since. I believe it’s a holdover from the early days of computing, when programmers didn’t have access to personal computers or even interactive computing, which meant that programmers needed to spend more up-front time on design. Think of the punchcard era, for example. I teach introductory programming in C++ at Ohlone College in Fremont, and I have my students write C++ on Day 1, starting with “Hello World” and going from there without flowcharts.
- dataflow 6mo agoI think it's for all intents and purposes impossible to program like this in this century. Like imagine just writing x + y in C++. Are you seriously going to enumerate every declaration of operator+ in the translation unit in your head to see if it's eligible (don't forget ADL)? And then every single possible implicit conversion or promotion that could make other ones eligible? And then go through all the overload resolution rules that practically no humans have memorized (with any template instantiations that may come into play) to figure out if the declaration you wanted is actually the best match? That's before you even look at its definition...
- 6mo ago
- wanderingmind 6mo agoThis, we learn natural language like English first before we can use it to express ideas, argue for or against those ideas with evidence. The problem is not teaching a programming language, the problem is stopping there and not teaching how to use it to solve real problems.
- deleted 6mo ago[deleted]
- hackthemack 6mo agoYeah, but most* companies hire for just whatever X programming language they use, and do not care if you know how to program and do not care that you could pick up whatever X is in a couple of weeks. (Anecdotally for "most", I am sure there are exceptions)
- jmalicki 6mo agoNot FAANG. They just need to know you can leetcode extremely fast in arbitrary languages.
- webxsid 6mo agoI agree with the sentiment, except you learn these things on the job, by making mistakes and asking questions.
- Pxtl 6mo agoIt's funny, I learned a pile of languages in my undergrad and some UML nonsense. None of it covered properly how to write code that was meant to be read, which IMHO is one of the most basic things. Just "hey nobody can understand why that line is the way it is, what should we do about that" is probably one of the basic building-block skills of developing on a team, and you teach it wholly by abusing prima donna cowboys until they write something legible or quit.
- mettamage 6mo ago> Reading code, mostly. Tracing data through five layers of someone else's design choices. Forming a hypothesis about why the bug is happening, then testing the hypothesis, then narrowing. Recognising that the function in front of you is too big and asking what part of it has its own reason to exist. Recognising that the schema in front of you encodes a decision someone made in 2019 and that the decision is now load-bearing for things they did not anticipate. Knowing which of the five tempting cleanups in the file is going to bite you in production and which is safe. It always struck me as strange that universities never had a course that would teach open source code. As in: grab a repo of a popular open source project, read part of it and do your best to create a contribution in it. The lectures should be about different open source projects and their design choices.
- mackeye 6mo agoumich currently has a course like this (but it's a bit of a blowoff)
- tnelsond4 6mo agoYou and I both know it's easier to rewrite a project from scratch than contribute to somebody else's project. Only half-joking.
- seba_dos1 6mo agoI see it mentioned often, but it's a completely foreign stance to me. I'll take contributing to existing project over writing one from scratch any day, even if it's shitty enough to require general renovation. It's so much easier to jump onto work when there's an existing skeleton already than do all this boring grunt work to set things up and decide on layout that maybe was exciting when I was still only starting to learn how to program, but hasn't been for decades anymore. I could see LLMs affecting that though. Their ability to output shitty and yet somewhat functional skeletons to work on manually further is just spot on.
- tharkun__ 6mo agoYou'd be (half-jokingly) amazed at how many people are entirely incapable of understanding and debugging an existing code base. Like, literally: "Error message has string 'abdc-1234-something-whatever'". They can barely figure out to maybe search the code base for that error message. Unfortunately they can't find the full string. Now they're stuck and can't think of anything else to try. So, effing, amazing. How do these people ever get through (coding) life? Ever heard of substring search coz error messages frequently have parts that are concatenated/variables inserted? Search for parts of it until you find something. It's not that hard dude, yes the 1234 probably is some dynamic id, so search for just something-whatever and you'll instantly find the relevant code and you can debug further. But no, this "Senior" can't think of anything when not finding the full string anywhere in the codebase and would rather throw up their hands and let others figure it out. Either a really dumb "Senior" that somehow got through so far at previous companies or they're silent quitting during probation period already. If this continues it's not gonna be silent.
- deleted 6mo ago[deleted]
- tokkkie 6mo agojunior ask: how to start programming? me: write process in natural language first. no code yet. ...whatever you do, don't write code yet.
- hemc4 6mo agoIt started with all courses teaching algorithms but on the day job you wrote all algorithms by searching it on web or via a library. Now they teach language but you just ask agents to check the accuracy of code and rarely read it. Only few devs wrote new algorithms and only few devs will now write the actual new code. These few devs don't need courses but all other devs need to pretend that they are part of these "few" so they need all the courses, just in case...
- jmspring 6mo agoGrew up with this guy. We both did community college courses on programming before we were out out high school. I'm impressed with the library he's built up and CCs tend to be more pragmatic than UCs in California. This isn't a plug/whatever - just good content from an old friend. https://www.youtube.com/@ProfessorHankStalica https://www.youtube.com/@ProfessorHankStalica
- ChrisArchitect 6mo agoAside: so this guy pops up 3 days ago with this vibecoded sort of site and is epically AI-blogging so now we have three posts on the front page at the same time-ish? Great. Take it easy OP.
- ChicagoDave 6mo agoI’m convinced my love of grocery store checkout logic puzzle books are the foundation of my programming skills. I was also good in tenth grade geometry which is all logic.
- pillars 6mo agoSorry I am pasting my old comment here, but the intention is same Before learning programming one should know what is computing in general? It sets good mental model, after that you can easily pickup and start writing program yourself . Data, data, data :))) Some basic notions to know: Input → Computation → Output Information is omnipresent (this is just an intuition, not a claim). It serves as both input and output. Computation—also known as a procedure, function, set of instructions, transformation, method, algorithm, or calculation. In my early days, I ignored the fundamental notion of data and procedures. But eventually, it clicked: Programs = Data + Instructions Watch Feynman on computing—he even starts with the same concept of data, introducing computers as information processing systems. And processing requires algorithms (i.e., instructions or procedures). Programming is simply writing instructions for the computer to perform computations. A computer is just a machine for computing. Computation is a general idea: a transformation of one form of information into another. https://en.wikipedia.org/wiki/IPO_model https://en.wikipedia.org/wiki/IPO_model Richard Feynman Computer Science Lecture: https://www.youtube.com/watch?v=EKWGGDXe5MA https://www.youtube.com/watch?v=EKWGGDXe5MA Old documentry on programming: https://www.youtube.com/watch?v=dFZecokdHLo https://www.youtube.com/watch?v=dFZecokdHLo George Hotz video: what is programming? https://www.youtube.com/watch?v=N2bXEUSAiTI https://www.youtube.com/watch?v=N2bXEUSAiTI https://denninginstitute.com/pjd/GP/gp_overview.html https://denninginstitute.com/pjd/GP/gp_overview.html https://htdp.org/2003-09-26/Book/curriculum-Z-H-5.html#node_sec_2.5 https://htdp.org/2003-09-26/Book/curriculum-Z-H-5.html#node_... https://www3.nhk.or.jp/nhkworld/en/shows/texico/ https://www3.nhk.or.jp/nhkworld/en/shows/texico/
- corygiltner 6mo agoAlright, this website is horrible to read and feels like MySpace in 2002. Did anyone actually spend time and read this? Or are we all just riffing off the title?
- stackghost 6mo agoFirefox Reader Mode saves the day yet again! Look on my works, ye Chrome Heathens, and despair!
- asp_hornet 6mo ago> feels like MySpace 2002 I can see why many people wouldn’t like it but I like it because of this. It’s not my style and I wouldn’t do a site like this for myself but it represents a time when the web was an extension of personal expression. This appears to be the author’s personal style and taste. I’d wager the software he writes for others doesn’t look like this so this is probably creative outlet. I don’t need to look at yet another shadcdn, tailwind cookie cutter sass when reading someone’s blog.
- stackedinserter 6mo agoIf you want to be a good developer, learn to program. If you want to be a well-paid developer, learn leetcode.
- teaearlgraycold 6mo agoI’ve felt what I learned in my CS degree has been sufficient to allow me to perform well in leetcode interviews.
- AmblingAvocado 6mo agoyea dawg maybe if you graduated in the last 4 years lmao
- recursivecaveat 6mo agoApplicants definitely peak in their leet code ability at graduation. Probably doesn't help that they're have lots of free time and motivation to grind for their first job. It's a mistake to hold more senior people to same standard.
- wavemode 6mo agoThe harder leetcode interviews I've had, I definitely was not prepared for simply from college material. Some companies really throw the kitchen sink at you. The more reasonable coding interviews I've had, on the other hand, I could have solved before even going to college. Those companies were (rightfully) just trying to get a sense for whether you can write and debug code in the real world, not memorize algorithms.
- kakwa_ 6mo agoHonest question, is leetcode tests an actual failure from the recruiting company perspective? Sure, it means that from time to time you will reject people like the Homebrew creator. And it also means the recruiting process now sucks for the applicant. But in a context where it's extremely tricky to evaluate an applicant during the short span of an interview, it seems honestly like the least "arbitrary/trusting your vibes" recruiting method we have now which could be deployed at a large scale. At least, you are getting people you know had the ability to remember this stuff, and also were willing to put in the effort to learn it.
- chao- 6mo agoIn the early 2000's, I entered a university at the EXACT trough between the Dotcom Crash and the Web 2.0 Moment. In fact, I transferred from a lower-tier uni to a top-tier CS uni. At the time, they had still retained their "weed out" approach to intro CS (in Lisp) from the late 90's, hoping to keep kids from taking CS while thinking "I'll make a website and money will rain from the skies!" My new uni completely rejected my previous uni's Intro CS curriculum. They forced me to retake their version: A Lisp-then-Java cycle that was a theoretical whiplash, which initially I resented. Who wants to re-take a class for topics they "already" learned? By my second year, I saw the light. I understood the approach. While my highschool friends at other unis had courses to learn {{topic}} and separate courses to learn {{language}}, the uni I was at had a policy of "languages are incidental" for most courses. Professors had a list of the languages that they would accept for projects. "Anything but Perl" was common, although "systems" courses required C. For every class with a required language, it was not taught during class. There would be an optional lab that you could attend to learn at least one of the languages allowed for the course. The expectation was that you could learn enough in two or three weeks before the first project kicked off, and the TAs really were there to help you figure it out (most courses had 20-30 students for 2-3 TAs). The "bookend" intro courses that taught extreme FP and extreme OOP served as a forcing function that made me realize "Oh, languages really don't matter. Just pick up the details for the paradigm, and get on with the work." As much as I resented having to "redo" an intro course cycle at first, I am forever grateful for the fearlessness that the overall experienced instilled in me.
- tharkun__ 6mo agoFor every class with a required language, it was not taught during class. This. We did have the oblig "learn language X" course. Which used to be C and had just switched to Java at our uni. But it was just to learn a language. The Operating System class used Minix in a VM to teach concepts. You were expected to just use a Minix vi (that was fun!) or somehow figure out yourself how to best use something outside while still having a fast enough feedback loop. Nobody taught us C (since we were already a Java language year. You were just expected to figure it out. Quite a bunch of people couldn't and literally quit CS entirely over that course. I loved it!). We had to add a memory compactification algorithm to Minix to pass the course. That was a fun learning experience! And made me appreciate modern (well, I guess this was like 25 years ago now lol!) operating systems. Scripting languages course: Pick one and do a project and turn it in. That was it. (I turned in something I had written in Perl as a side-job for hire and got an A without doing any course work at all (except for the two initial attendance checked classes)
- djmips 6mo agohttps://cs.ossu.dev/coursepages/spd/ https://cs.ossu.dev/coursepages/spd/ UBC teaches programming
- p4bl0 6mo agoI'm responsible for a CS bachelor degree in France (licence informatique). In our curriculum, we teach how to learn programming and then programming paradigms, not languages, and we use a lot of different programming languages for that from the first semester. At the end of the first year, our students have already approached 4 programming paradigms using ~10 different programming languages, during the second year this is reinforced by the introduction of a new paradigm (OOP) and some more advanced course using different languages (for example the introduction to functional programming in the first year mostly uses Racket, but our second functional programming course in the second year uses OCaml).
- deleted 6mo ago[deleted]
- eager_learner 6mo agoit appears to me that there may be a gate-keeping involved that stops the hordes from really learning how to program. Look at the books on programming in the last 15 years--none teaches how to program and problem-solve.
- sn9 6mo agoHow to Design Programs: https://htdp.org/2026-2-25//Book/index.html https://htdp.org/2026-2-25//Book/index.html