5 ms·
Programming is a frustrating job, you're pretty much doomed to be a beginner forever. It's part of what makes it exciting day in and day out, but it can also be
by VeejayRampay 11y ago
Programming is a frustrating job, you're pretty much doomed to be a beginner forever. It's part of what makes it exciting day in and day out, but it can also be overwhelming.
- pech0rin 11y agoI think the point of the article is that you are not a beginner forever. You are a beginner when you know absolutely nothing about programming. After years of experience, no one should be an actual "beginner", by the authors standards, because you understand programming conceptually. Being a programmer can be frustrating for a lot of reasons, but not understanding the basics of coding should probably not be one.
- TheOtherHobbes 11y agoThe difference between a beginner and an early programmer is that the beginner has no mental model at all for mapping code statements to the things code statements do - because they have a limited to nonexistent idea what the latter are. The heart of programming isn't learning syntax, it's in learning how to translate solutions into sequences of symbolic operations, which can then be translated in turn into the syntax of a specific language. Beginners also need to learn to use a keyboard, an IDE, and a debugger, and probably also a package manager, a distribution tool or system, and how to look stuff up online. So the cognitive load is huge. But it's the mental model that trips people up. You literally can't do anything with code until you learn the core symbolic grammar for the most common operations. And even after you do that, there's always more to learn as you can go deeper into more sophisticated models like functional programming. It's not at all obvious to outsiders how that grammar works. (Which is why programmers tend to be so bad at UX - operations and relationships that are "obvious" to someone with programming aptitude are completely unintuitive to people from other backgrounds.)
- jerf 11y agoNo, there's definitely an underlying substrate of significant commonality between the various programming languages and technologies. If you're at 10 years in and you still feel like a beginner, you're doing something wrong. Obviously I can't expect to pick up a brand new technology and instantly expect to be a wizard, but I do expect that I can pick up a new technology and be functioning at a high level in a week or two, tops, because it's almost certainly just a respelling/reskinning of some technology I've used before. (The whole "young guys who know way more than their old-fogey elders" was, in my opinion, an isolated one-time event when we transition from mainframe tech to desktop tech. Despite its recurrence on HN, I think "age discrimination" is naturally receding and will just naturally go away as the people on this side of that transition continue to age, and skill up.)
- MrDosu 11y agoIf you pick up a new tech and it's " just a respelling/reskinning of some technology I've used before" you are doing something very silly or are not using new tech at all. If it's basically the same there is no reason to switch.
- eclipxe 11y agoEverything comes down to data structures and algorithms. It's just a matter of how much syntactic sugar you want on top of it. Image processing? Machine Learning? Real time communications? Functional programming? HTML/CSS/Javascript? Meteor? NoSQL? It's all the same thing under the hood, just better syntax and tooling. Data structures and algorithms.
- rgbrenner 11y agojerf is right.. you have a mental model of how a programming language works, and a new language is just changing the syntax used to represent those same concepts. Does that mean there's no reason to switch? No.. since some languages are better at representing some ideas; some languages have better abstractions for certain ideas; etc. I think starting with a lower level language helps with this way of thinking. If you learn everything about C (for example), and later learn a higher level language, it's easy to think of how you would implement a certain feature of the higher level language.
- c22 11y ago> I think starting with a lower level language helps with this way of thinking. If you learn everything about C (for example), and later learn a higher level language, it's easy to think of how you would implement a certain feature of the higher level language. I cannot agree with this more. A lot of people seem to think that a "better" language to learn programming with is one that is "easier" or "more forgiving", but everyone I know who started with C became excellent programmers whereas ability among the group who started with something else is somewhat more hit or miss.
- 11y ago