5 ms·
In some ways programming should be easier than carpentry like that. In either case, you don't know what you don't know, and you have to learn what's possible, w
by majormajor 5y ago
In some ways programming should be easier than carpentry like that. In either case, you don't know what you don't know, and you have to learn what's possible, what's practical, and what tools to use for what. But in carpentry you also have to practice physical skills. "I know this router will let me do what I want but I'm not able to hold it steady enough," say. You have to translate "what I want to build" into "here are the discrete components, joints, cuts, etc" but also there's a physical skill and ability needed to perform the actions.
In programming, though, turning what you want to happen into statements the language can compile is purely a problem of that translation phase. There is a lot we can do in the language and environment to make that easier - consider all the overhead of a map operation in Java (with `.stream()` and `.collect()` and restrictions like "lambdas can't throw checked exceptions") vs a list comprehension in Python. A newcomer is going to be able to pick up the latter much more quickly.
I don't think that looks like "0 experience -> complex app in one day" but I think it could be a lot easier than it is today. It's already a lot easier than it was 20 years ago.
- dkersten 5y ago> But in carpentry you also have to practice physical skills In programming you have to practice mental skills. That is, abstract problem solving, logic, bigger-picture-how-things-fit-together. There's a reason many beginners struggle with concepts like pointers or recursion/recursive data types. These things become second nature with practice, just like the physical skills do, but to a beginner who has not practiced such things, they're equally difficult.
- Jtsummers 5y agoPointers are a great example of accidental complexity. Outside of very specific domains, most people writing software never need pointers. Introducing them to the end user who just wants a way to track project status is a great way to bar them from actively participating in developing their own solutions. Forcing them to be beholden to the IT department, rather than empowering them to accomplish their goals.
- bruce343434 5y ago> Outside of very specific domains, most people writing software never need pointers. You know it's not true. Pointers, references, whatever you call them. They exist for a reason.
- majormajor 5y agoThey exist for a reason in the same way that there are a bunch of different types of fasteners - there are situations where it's critically important, but writing the average line-of-business application isn't one of those, in the same way that you can bang together a custom shelf without knowing about more than a drill and screws. We're talking about accessibility for getting started. Pointers and recursion are good ways to scare people away. They were all my highschool CS teacher cared about... guess who avoided CS for a few years as a result until figuring out ways to use other languages to solve specific problems in non-CS courses several years into college?
- bruce343434 5y agoYes, mastering programming, like anything, takes time, practice and patience. Yes, school sucks. Now what is your point? To dumb down everything about programming to the most common denominator so that 1 day old noobs may be equal to grand masters? Not gonna happen. Why do you never hear these types of complaints when people say it takes 10000hr to master the piano? People never suggest taking shortcuts and people accept and respect the path of becoming a master. But when it concerns programming, everyone immediately jumps to "how can we make this as dumb as possible?" Guys. Shit takes time and effort. The freshmen will be fine.
- Jtsummers 5y ago> Yes, mastering programming, like anything, takes time, practice and patience. Yes, school sucks. Now what is your point? To dumb down everything about programming to the most common denominator so that 1 day old noobs may be equal to grand masters? Not gonna happen. Ah yes, those stupid noobs, fuck them all. The objective is not to "dumb down" but to permit the expression of intent by people to achieve their own ends, without the need for intervention by members of the programming guild. Not everyone needs to master programming, they need to achieve a goal. Just as someone can build a table without ever becoming a master carpenter (it's a saw, sandpaper, and a drill and screws or hammer and nails, done), many people have problems that could be solved with programming if only the manner of interfacing and directing a computer were not unnecessarily arcane. > Guys. Shit takes time and effort. The freshmen will be fine. Guy, it's not about the freshmen. It's about people who need to get shit done. It'll be fine if professional programmers aren't the only ones who can achieve their ends with programming tools.
- mapgrep 5y ago> abstract problem solving, logic, bigger-picture-how-things-fit-together. These skills are not unique to programming. It’s true that building sophisticated applications requires skills that need to be developed over time. But there are many many useful programs short of that that can be written with a beginner’s limited knowledge. We see already with python widespread use by non computer scientists in certain fields. I think going forward this will become more and more common across more fields and beyond academia.