3 ms·
What makes programming unique is that(Assuming you are a basic "code monkey" level web dev or entry level embedded like me), you don't usually "learn" to code.
by eternityforest 5y ago
What makes programming unique is that(Assuming you are a basic "code monkey" level web dev or entry level embedded like me), you don't usually "learn" to code.
You get vaugely familar with it, memorize some patterns, and VS Code's autocomplete does most of the details.
Variables, objects, classes, take days or weeks to learn, but beyond that the "learning" isn't like anything else.
When you play guitar, you control every note with your hands in real time. Every mistake is immediately audible. There is no algorithm for playing the right notes. You either memorize them and can get your hand to do them accurately or you don't.
And you can't unplay a note.
Which makes it 1000x harder than programming.
Because of debuggers, unit tests, and the fact nobody expects it to work first try, it's iterative, interactive, and mutable.
There's no idea>implementation pipeline, every level including the idea is something you can debug iteratively with computer help.
Programming isn't just being an "IDE Operator", there's some actual skill involved, but "IDE Operator" is pretty much how it feels when compared to anything else.
If I find a library, and tell you about it, you will be able to use it in minutes. Your capabilities have greatly increased, yet all you learned was that FooLib exists, and two or three function names.
Design patterns and language features work roughly the same way.
Technology is the art of so arranging the world so that we don't have to experience it, says the quote. But that includes tech itself.
Learning a new tech is usually like learning to use a washing machine. There's often nothing you couldn't learn from a page or two long article.
The small percentage of things that do require actual learning are where most of the challenge comes from.
The level to which programming is more like being a machine operator is so extreme that a lot of people take years to UNlearn the habit of actually doing things by themselves.
Beginners reinvent the standard library all the time, and sometimes feel like they didn't really do anything if they just put 3 libs they don't understand together.
In any other activity, the more professional you get, the more unique things are, the more you do from scratch, the more deep understanding is needed.
In industry, the farther you get from hobby level the more standardized everything gets.
If someone really does deeply understand what they're doing, I'd call that computer science more than programming.
Programming is not craftsmanship. It is not martial arts or cooking or war. It's not philosophy or math or literature.
I don't do code katas, ever. Because unless you do Haskell or real CS level algorithms, there's... not that much to know about the fundamentals, and IDEs largely do away with a need to memorize specifics
All the actual skill is in structuring ultra complex projects, and in domain issues.
If your program involves math, the programming is probably trivial, an the reason it's hard is because of the math.
- reidjs 5y agoI agree with most of what you wrote, but disagree with the part about programming not being a craft, or that algorithms are not useful to understand. There is definitely a great deal of skill involved and certain parts of it can be mastered. as an art/science/profession there’s so much we don’t yet understand about software. there hasn’t been enough time to establish comprehensive standards and best practices. But that doesn’t mean anything goes. I know that’s not exactly what you were getting at, but just wanted to add my 2c ;)
- kwertyoowiyop 5y agoPlaying a guitar is not 1000x harder than programming.
- eternityforest 5y agoMaybe that's an exaggeration but t definitely seems like a whole order of magnitude extra difficulty. If you play a wrong note, you can slow down and practice more. If you do it ten times and still get it wrong... all you can really do is... just practice more. How long will it take? Who knows? It's like programming for a computer that randomly inserts errors on 1%-5% of lines. With programming, there is near zero challenge to implement something. Once you know what the bug is, you almost always know how to fix it, and are able to do so. And once it's fixed, it stays fixed. The whole industry has collectively worked for decades to move as much of the work out of the coder's head and onto the CPU. With any other activity, understanding means basically nothing. You have to somehow get your hand to physically do it. And you have to be able to remember the whole thing. You have to learn one part, and then learn the next part. But if you forget the first part you have to completely start over, and none of it goes anywhere unless you know it all at once. With programming... I have no idea how the code I wrote a month ago works. I might not look at it for a year. It's done, I've moved on, no ability to put anything beyond the most vague overview in long term memory is required. I have no idea how people do ANY real life activity to a professional level. Programming seems like not a challenge at all compared to even normal everyday things, even grade school level math, or any other occupation. Even being a cashier requires being able to see the number on the screen, figure out how many dimes and how many quarters that is, all in just a few seconds, then physically count them out, with close to zero error rate. You could be fired at 5% wrong change complaints. An accountant could probably be in trouble if they wrote down the wrong number 0.5% of the time or less. Programming is one of the only professions that has the ability to retry your basic mistakes. Every other activity relies on some inherent capacity to practice and become reliable at something.