6 ms·
Minor part of the article, but the thing about "tutorial Hell" is very true: > Students would watch (or fall asleep to) 6-hour videos, code along in their own
by gota 1y ago
Minor part of the article, but the thing about "tutorial Hell" is very true:
> Students would watch (or fall asleep to) 6-hour videos, code along in their own editors, feel like they got it, and then freeze up the moment they had to write anything from scratch. Classic tutorial hell.
This is why, across history, the tried and true method of learning a craft is an apprenticeship. You, the junior, tag along a senior. You work under a shop that is led by a senior-senior that is called a master. Apprentices become craftsmen, craftsmen become masters. AFAIK, the master does not 'offload' project guidance into non-craftsmen, it is an expected part of the craftsmen role to be project/product managers/owners.
I've said this a million times to close friends and at this point I'm only half joking. We, and I'm including myself in the 'developer' crowd although I may not deserve it, have really dropped the ball in not being a 'guild' since way back when. At least since the late 1980's; and certainly since before the Original Boom of software dev as a profession (I'm assuming it was late 90's? I know not)
(Although I suspect that if that were the case we'd have fewer developers throughout the 00s and 10s, which may have impacted the development of the field itself in unexpected, but likely negative, ways)
- pfortuny 1y agoActually, even before apprenticeship comes drilling. Repeat, repeat, repeat.
- rhetocj23 1y agoYou learn by doing and thinking. Not reading and watching. Pure and simple.
- gota 1y agoYes, but even if we all agree the problem with education at scale remains - there is a very finite and limited amount of 'attention' from craftsmen/masters to distribute, which limits the amount of apprentices. The alternative has been to massify education for 'students' (not apprentices) in passive lectures with 'exercises/homework', which does not work as well for most things and particularly for crafts. BTW for a very minor portion of the population the 'student' route is just as effective as the 'apprentice' route, but these are in my experience the exception
- scottyah 1y agoIf you train at the gym with bad form, you will hurt yourself in the long run. A person with a personal trainer giving feedback at the right time, decreasing the feedback loop from years to seconds will always outperform someone trying to figure it out on their own(assuming the trainer is competent).
- sjdjsin 1y ago[dead]
- leptons 1y agoIf you are trying to teach yourself programming and never read any documentation, you're going to make a mess of it. If you're trying to work out at the gym on your without reading anythi g about it first, you'll probably make a mess of it. There's a lot of info out there about how to train at the gym, as well as how to write code. People who know how to read can certainly get a long way by reading a few simple tutorials.
- 65 1y agoI disagree with the reading part, as that's a major component of learning. Programming only clicked for me when I had a goal in mind and started reading documentation: change the color of the button when I click it. How to do something on click? How to change the color of an element? Etc. From there my goals became bigger and reading documentation and examples along the way got me to where I am today. Video is the true deception. I was trying to design patterns for sewing recently, and as a novice I watched a few videos. And none of them ever stuck with me on how to design something myself. It was only when I read a book about pattern design that the concepts stuck. I think the friction of reading, parsing the info, and then acting on it is what allows learning to happen.
- rhetocj23 1y agoMy point is reading does not provide substantial value, it provides barely any because you have to net out the opportunity cost of time spent reading. The gains are realised when you think and do something with the information consumed. Therefore reading and watching are not the key to success.
- 65 1y agoPerhaps we're considering reading with different perspectives. Reading a novel? Yeah sure. Reading documentation just to read it? Sure. But it's essentially impossible to learn without information about a subject. How do you suppose someone learn programming without reading documentation? Without reading code examples? This is active reading compared to passive reading, such as reading a novel.
- theshrike79 1y agoLet's take two hypothetical people: One reads all of the C++ spec from cover to cover. Remembers every single word of it, doesn't write a line of code. One just starts fumbling around, writing code, reading just enough docs to get where they need to go. Which one is the better programmer?
- AstroBen 1y agoReading and watching fills your brain with whats possible Doing and thinking solidifies it, teaches you to use the things you've read about You need both When I'm learning something new I like to skim a bunch of content upfront to get an idea of what's there
- marcosdumay 1y ago> fills your brain with whats possible It doesn't. That's the problem. It fills your brain with procedure. For a short time. If you solidify the procedure, you will be able to perform that one task. What on software development is still useless. Only at the next step, where you know so much that you can think of your own new procedures that you have basic competence at software development. There are other professions like this, but for most, basic competence happens before you even solidify the procedures.
- yunwal 1y agoIf you understand the difference between greedy algorithms and non-greedy, you also understand the difference between learning by doing and building a solid foundation before tackling a problem. For most simple problems, it's true that the taking the seemingly shortest path to solving the problem is good enough. There are other problems where you simply have to understand the abstractions at a deeper level than you can visualize in code. It's there that things like reading a textbook or taking a course can help.
- AstroBen 1y agoCan you give an example? I mean: if you're learning a new language/library/framework it's really useful to have a broad idea of what the tooling for it looks like.. what features does it offer? You can look up the details when you need to It's really useful to have a broad knowledge of algorithms and what problems they're applicable to. Look up the details later If you're going into a new domain.. know the broad, high level pieces of it. You don't need to pre-learn the specifics of websockets but if you don't even know they exist or what they're useful for in web development.. that's kind of a problem Even more abstract concepts like how to design code there's a lot of good info out there If every generation had to re-invent the wheel from scratch we'd never get anywhere. The problem people have is they think ONLY reading is enough
- palata 1y agoRead/watch, do, fail, think, read/watch, do, fail, think, ... Learning requires effort and access to knowledge. And of course, learning requires that you know how to learn. This is what school tries to teach.
- anthk 1y agoRead, eval, print, loop. Learn, apply, review, repeat.
- majormajor 1y agoCreating new projects from scratch can trip up even experienced professional developers because in most jobs you come in, work an existing codebase, and iterate. Even if you need a new service or app, you often start with a copy-paste or a common template. When the team needs something more new, usually there's just one person who sets that up. Setting up the whole project from scratch and making all the 0-to-1 choices is much less common. An apprentice model doesn't really change that. Your average electrician gets called to many more "here's new construction that we're wiring from scratch" jobs than your average corporate engineer gets "we need to set up a new project from scratch without copying any of our existing files or folders."
- sph 1y ago> Creating new projects from scratch can trip up even experienced professional developers because in most jobs you come in, work an existing codebase, and iterate. I’ve worked on greenfield projects for so long (15+ years at this point) that my experience is the exact opposite. The few times I’ve had to contribute to an existing code base was a painful experience of figuring out where everything is, and why everything is done in such a weird way. There is no better feeling than doing that first `git commit -m 'initial commit'` In a way, it is interesting and a bit frightening to know that my experience is very different than most engineers are socialized and molded for team work and daily standups and code review which are alien (and scary) to me.
- rcbdev 1y agoWhat are you doing, where you're solely working on greenfield projects? I remember a professor of mine saying something specifically on never trusting a Software Engineer that has never had to work on legacy code.
- sph 1y agoI'm a full-stack consultant (the actual full stack, not whatever kids mean these days) and deliver "solutions" to clients. I've got my fair share of legacy code to maintain, don't worry. (I have this Django app I wrote 15 years ago that I should really port to Elixir which is my main thing these days - but there's no money in rewriting an entire application that's in production for that long) Here's my 2 cents: take any advice on professional matters from someone that has never left academia with a heaping dose of salt.
- abnercoimbre 1y agoA bit of a shameless plug: join a coding community [0] putting in-person meetups above online interactions [1]. It doesn't have to be ours, just any group of developers invested in the idea of craftsmanship. This may not solve your concerns directly but it's a step in the right direction. From where I stand, we're never going to find what you want in the workplace for reasons which predate LLMs: job hopping, remote/hybrid work, incurious managers etc. [0] https://handmadecities.com/meetups https://handmadecities.com/meetups [1] https://abner.page/post/exit-the-feed/ https://abner.page/post/exit-the-feed/
- deadbabe 1y agoMy problem with apprenticeship is that my workflow simply isn’t optimized for performative demonstration. It’s messy, haphazard, and a junior would have to sit around watching me do a whole lot of nothing at times. I don’t want to teach, I want to get work done. Juniors need to just accept they will have to learn the hard way, on their own, asking occasional questions and looking at tutorials until stuff sticks.
- fragmede 1y agoperformance aversiveness is a personal problem and should be worked through
- Anonbrit 1y agoAny dev who consists themselves senior and hasn't developed some mentorship skills doesn't deserve the title. Even if it's just freeing up half an hour a week to pair program with a junior on something or talk through their current assignment.
- Scotrix 1y ago+1 I dropped school relatively early (I was extremely bored and the way of education was certainly somewhere close from the Stone Age times). I did an apprenticeship as software engineer with some (extremely useless) school component. Most of the time in the late 90ties was trial and error, for me, the master and the master of masters. Playing around with Linux and make it ISDN routers with servers for websites built in HTML, Perl, PHP. This was devops (before it got hyped) and real engineering by figuring stuff out with almost no documentation, a lot of crazy creativity and push the boundaries of what’s possible. And it reminds me just a little like today’s world with AI and vibe coding just on a complete different level and with significant more pressure…fun times :-).
- nvarsj 1y agoUncle Bob has been saying this for decades. But - I'm not really sure it's necessary in software. The skillset can be entirely self taught if you're intelligent enough. There are an abundance of resources and all it requires is a terminal. Good software engineering principles can be covered in a 200 page book. You can't say the same for trades like plumber, electrician, etc. which still use apprenticeships.
- xboxnolifes 1y ago> The skillset can be entirely self taught if you're intelligent enough. > You can't say the same for trades like plumber, electrician, etc. which still use apprenticeships. Yes you can, and yet they still have apprenticeships.
- nvarsj 1y agoSorry, but in no way can you equate an electrical apprenticeship with being self taught. The variety and complete insanity of wiring in different installations requires wide exposure (under an experienced mentor) to be a competent electrician.
- tokai 1y agoSure you can be self taught in plumbing. Overall we are just much less accepting of big screw ups with plumbing and electricity than we are with most software.
- somenameforme 1y agoI'm skeptical of this. There is an extremely large barrier to entry in terms of the cost of the supplies and hardware. And how would you even begin to realistically get practice/experience working on and solving the countless issues plumbers are responsible for, all in different contexts with different setups? And then there's also a safety issue - plenty of environments and tasks plumbers are responsible for can be quite dangerous. Danger and self-learning isn't entirely a non-starter, but it's certainly an part of the 'balance' here. By contrast software just isn't comparable at all. You can sit at your desk, pay $0, and the only limitations to your experience is the amount of time you're willing to dedicate.
- littlecranky67 1y ago> This is why, across history, the tried and true method of learning a craft is an apprenticeship. Citation needed - at least for anything software development. Every single respectable software dev I met around my age bracket or older (40+), was self-taught. Mostly because in the 80s or 90s there wasn't much opportunity. But computers shipped with handbooks how to program them, at that time.
- hintymad 1y ago> This is why, across history, the tried and true method of learning a craft is an apprenticeship. And in our modern world, universities are still the best place for such apprenticeship. Not the ones per Mark Trevor's words (https://marktarver.com/professor.html https://marktarver.com/professor.html), of course, but a self-respecting university will train their students with progressively challenging and practical assignments. We started with implementing simple data structures and algorithms and solving simple puzzles all the way to implementing toy OSes, databases, persistent data structures, compilers, CPUs, discrete simulations, machine learning models. We started with implementing functions and individual components and quicly to building things from scratch. I'm forever grateful to the training I received in my univerity.
- leptons 1y agoI'm self-taught and did pretty much all of those things. All it took was reading the docs.
- guhidalg 1y agoI downvoted you because you are exceptional but the rest of the world is not. Most people benefit from traditional education, software engineering is not different.
- Muvasa 1y agoBS. Everything I learned from college was me anki and youtube. Lectures were wasting me time from actually studying. Most people I talked to they said. They didn't follow the lecturer at all just sat there like me for the attendence. There is no reason why we should continue to have mandatory lectures when you can just record them like Gilbert Strang did.
- cultofmetatron 1y agoits not THAT exceptional. I myself know several people who bootstrapped themselves into being descent software engineers. Traditional education is certainly fine for some people but its not the only way for the masses to learn. whats missing is the discipline of pushing yourself when you have no immediate extrinsic motivation. You might have had a point a few decades ago when the information itself was difficult to fine but with the internet and online courses, its easier than ever to teach yourself in a "nontraditional" setting.
- vulk 1y agoI use LLMs for teaching me how code exactly like that, I am the apprentice and the LLM move forward only If I say so, it does only explaining and teaching I do the writing. I much prefer it than looking for the next course or tutorial. The tutorial hell is mainly a problem of the people who decided that they can be teachers. From the countless books and courses I have purchased nothing actually teaches you anything, the whole model of teaching someone how to code is completely wrong in my opinion. At this point it is just plain frustration I rather prefer to tell the LLM to look for the latest documentation of a language or just go and look the documentation myself, a library, or whatever, and come up with a plan from it. My only gripe is that I am not sure if the LLM hallucinates and it is actually looking at the thing I pointed to or just spits the things that It was pre-trained on.
- lispisok 1y agoTech has the issue where any sort of gatekeeping is seen as bad because people in the field have so much hubris they think they can never be replaced and there has been a coordinated effort by capital to flood the field with labor to drive salaries down. You could go further and say the complete lack of professional standards is why we have this leetcode humiliation ritual interview process which has nothing to do with the actual job has become the gatekeeper.
- palata 1y ago> This is why, across history, the tried and true method of learning a craft is an apprenticeship. I would argue that, across history, the tried and true method of learning a craft is access to knowledge. It used to be that you had to sit next to a master to access the knowledge of the master. Now in many fields, you can just find it on the internet and learn at home, at your pace. Everyone is different, what's best for you may not be what's best for me. But what is absolutely necessary is access to knowledge.
- watwut 1y agoI am honestly very glad there was nothing like that when I was young. I could learn by doing things, reading things and maybe messing up and fixing after myself. I also do not think history shows that was the most effective. That is how it was done when it was the only option.