Live data from Hacker News

Teaching how to code is broken

neil.computer

221–230 of 258 posts

Re: Teaching how to code is broken

#221
I’ve always been a fan of “Learn by Do.”

I seek out projects that “push the boundaries,” but I do so carefully. I don’t try to implement a new air traffic control system.

This has the significant advantage, that almost everything I learn has an immediate practical application. I am constantly learning to ship.

It has the significant disadvantage, that it may not address some theoretical elements that could lead to practical advantages, down the road. That’s a real issue. I tend to reinforce established lore; not come up with creative new ways. Since my method favors practical application, it can be conservative. It can take some time time to “get around to” new tools, techniques, theories and discoveries. I am not “surfing the bleeding edge.”

It also means that I’m not so good at LeetCode, and I’m a lousy jargonaut. I do feel that my way reinforces a “ship mentality,” and that (I believe), is incredibly valuable.

I write about my approach, here: https://littlegreenviper.com/miscellany/thats-not-what-ships...

Re: Teaching how to code is broken

#222

As someone learning right now this reflects perfectly my frustration with the teaching systems I’ve found. The first part, let’s say the basic logic of programing is fine and relatively fast to learn. I have no problem with lessons starting there. Where I find the problem is with the actual translation to real projects with the languaje, how to interface the code with the data, the server and the outside world. The j…

I have a solution which has worked well for decades. Pick a textbook, read it from cover to cover, do the exercises. Don’t pick any textbook but a tried and true one like Structure and Interpretations of Computer Programs or How to Design Programs. I’m forgetting a lot of titles but you get the idea. Yes, these books will not teach you the coolest language on the block ATM, but you’ll be able to solve problems with any language.

It has worked well for me as IMO almost nothing beats a good textbook.

Re: Teaching how to code is broken

#223

As someone learning right now this reflects perfectly my frustration with the teaching systems I’ve found. The first part, let’s say the basic logic of programing is fine and relatively fast to learn. I have no problem with lessons starting there. Where I find the problem is with the actual translation to real projects with the languaje, how to interface the code with the data, the server and the outside world. The j…

I think it's pretty normal and not even a problem to not understand everything your first go-around with some new tech.

I really wouldn't expect anybody to actually understand the modern web after one course. These things take time, experimentation, and deliberate practice before they will really sink in.

Moreover, you will always have to try to understand things at some level of abstraction if you want to be productive in any reasonable amount of time. To understand the entire stack of hardware, network, OS, browser, programming language, frameworks, and application code is at-least a decade-long journey.

Re: Teaching how to code is broken

#224
post #78

Earlier quoted context omitted.

E'ybody wants to be a bodybuilder, but don't nobody want to lift no heavy-ass weights. https://youtu.be/4UlgXIL0-3g?t=10

I know it's a pithy saying, but is it true? People tend to report the actual lifting of the weights as pretty pleasurable. It's the whole supporting lifestyle grind of consistently making it to the gym, only and always eating food whose ingredients you have weighed, etc. where you lose most people.

As part of the right routine and exercises, lifting weights can be very pleasant. Personally, I love doing a good set of dumbbell rows.

What keeps me (and I think a lot of people) from getting ripped is the sheer consistency needed. Doing anything that isn't strictly necessary for 1-2 hours 5-6 days per week every week for years is extremely difficult imo. I get knocked off course very easily, sometimes for months at a time, and I have yet to find a solution for this.

Re: Teaching how to code is broken

#225

My approach is to employ folks with enthusiasm. If they're teachable, they'll figure out whatever pile of tools they get thrown into on the first task. Then they'll have some skills and the next task will seem less daunting. Of course some mentoring is useful. But just the stuff that's pertinent to the task at hand; concrete help that gets them moving forward. Because, somebody is paying for results. And because prod…

Enthusiasm is perhaps the easiest thing to fake in an interview, and something many of us fake automatically, as smiling and seeming engaged is something a lot of us learn to do when meeting new people. I doubt it correlates with productivity outside of something like a sales role. Most of the world's work seems to get done by people who don't appear particularly enthused.

Reminds me a bit of this essay: https://news.ycombinator.com/item?id=19877916

Production engineering can be “pedantic,” and “boring.” Lots of punchlists, and “polishing the fenders.”

Re: Teaching how to code is broken

#226
post #155

Earlier quoted context omitted.

Have you actually been through this before ? I ask because my experience wasn't the same so I'm interested in other perspectives. One experience that jumps to mind right away - a few years back I was in charge of mentoring a group of interns. The thinkering/enthusiastic guy was smart and reminded me of myself at that stage - but I was a terrible employee at that point and it took a lot of failing to get productive, a…

It sounds a bit like you got things the wrong way around. The guy who reminded you of yourself needed more mentoring, and the other guy was doing just fine.

I think the issue is that if you're smart and haven't failed yet it's hard to internalise such feedback/criticism in a constructive manner (when you're usually right it's easy to assume you're always right). Giving someone the opportunity in which they are likely going to fail over some who's just going to do what's necessary is hard.

Re: Teaching how to code is broken

#227

Earlier quoted context omitted.

I have never met a programmer I respected skill-wise that wouldn't randomly spend a weekend locked in a room solving an esoteric problem they felt they had to solve (for no reason). Over the Christmas holidays everyone at my company writes PoCs or hobby projects, being glad to have some free time away from paid programming in order to enjoy recreational programming. What I'm trying to get at is software engineering i…

This “you gotta program all day every day or else you are unfit for it”-attitude is incredibly toxic and harmful. No other profession has this. No dentist gets told he gotta setup a practice in his garden shed to practice pulling teeth, or else hell be a horrible dentist. No, doing job for 40 hours a week is enough to be one.

> No other profession has this

It is very common for professional athletes and for anyone who wants to live off their art (painters, musicians, writers, etc). Most academic types I know are like that too.

There are plenty of programming jobs where 40hs a week is enough and you get paid a good salary.

Now, if you want to join a FAANG, that's a different story. But no one wins a Grammy by playing exclusively in weddings either.

Re: Teaching how to code is broken

#228

Earlier quoted context omitted.

Having a good mental model of a language seems like one of the fastest ways to be more productive in that language. Do you have any recommended resources for developing a strong mental model of python? For reference, Dan Abramov’s course JustJavascript [1] provides an amazing mental model of JavaScript, and Josh Comeau’s css for js developers [2] course provides an amazing model for understanding css. I have 5+ years…

One way I've found is to dig into C/C++ extensions to Python. The Python C API reference is very helpful: https://docs.python.org/3/c-api/index.html It can be quite fun to implement a simple data structure (tree, queue, etc.). in C and bind it to Python. Otherwise, you can get a lot of dirty details by reading the source to complicated/magical libraries (e.g. pickle).

I can confirm this works.

I was struggling to find why does a = [1, 2, 3] a = b b = b + [1] return a different value as compared to b += [1]

Looking into the source code, everything became clear. The + operator returns a pointer to a new list np containing all the elements from a and b, while += merely appends and returns a pointer to the original list

Re: Teaching how to code is broken

#229

As someone learning right now this reflects perfectly my frustration with the teaching systems I’ve found. The first part, let’s say the basic logic of programing is fine and relatively fast to learn. I have no problem with lessons starting there. Where I find the problem is with the actual translation to real projects with the languaje, how to interface the code with the data, the server and the outside world. The j…

I think it's pretty normal and not even a problem to not understand everything your first go-around with some new tech. I really wouldn't expect anybody to actually understand the modern web after one course. These things take time, experimentation, and deliberate practice before they will really sink in. Moreover, you will always have to try to understand things at some level of abstraction if you want to be product…

This is true, and I expect that. Some concepts take time to understand and even longer to master. What I mostly find lacking is the lack of a high level map. What pieces do what, how they interact, then dive in. But the lack of context makes very difficult to keep plowing.

You don’t really know where you are going while typing boilerplate that barely makes sense, or jumping through 3 ways of writing a function (depending on the version , not on the actual necessity) when you have never used a function in the first place.

This makes harder to understand the concepts and make them stick.

Re: Teaching how to code is broken

#230
post #36

Earlier quoted context omitted.

I always thought the best way to learn programming is to find a program you want to create, and then figure out how to make that happen. This is still how i learn (most effectively) today. If i want to learn a new language or something, i write something that i always wanted to write in it anyways. That way it doesn't get boring. I think what you're describing might be similar in that canned-data is not interesting.

This is true. You do have to watch for the "adult piano beginner" syndrome, though. I'll explain: many piano teachers won't take adult beginners, purely because they have unrealistic ideas of how good they're going to be. They want to play a Chopin Etude or the Goldberg Variations or a Brahms Intermezzo, and don't want to spend time struggling with Clementi. Well, sorry. You won't be that good for a long, long time,…

That's how I stop myself every time a desire to buy a guitar shows up. I'd like to play some solos from Ten Years After, Iron Maiden, or Dire Straits, but then I realize that this will take forever to learn, and my middle age issues wouldn't help with that either.
Post reply on HN