3 ms·
Software development, particularly in imperative languages, is as intuitive as it gets. Things like algorithmic complexity analysis, distributed and parallel s
by throwit1979 14y ago
Software development, particularly in imperative languages, is as intuitive as it gets. Things like algorithmic complexity analysis, distributed and parallel systems engineering, fault tolerance, cache invalidation and prediction, etc, can become fairly complex. But building a hobbyist project as simplistic as it sounds like the author is building? Easy and intuitive.
I'm really getting tired of this "programming is hard" meme. It's not.
- bbotond 14y agoProgramming is not hard to learn if you can already think rigorously. But most people have no experience expressing their thoughts using strict formalisms and have to learn that separate skill along with programming.
- nlh 14y agoI'm sorry for the ad hominim, but this view is extremely myopic. Maybe programming is not hard -- for you. Maybe software development is "as intuitive as it gets" -- for you. But that is an extreme generalization that's simply not fair. Programming is not trivial and something that everyone should by definition be able to intuit. It requires a very specific and logical way of thinking. It requires intellect. It requires practice. I'd venture to guess that a vast majority of people out there couldn't "just figure it out". Programming requires interest, practice, intellect and a very specific way of thinking. It can be taught, it can be learned, and it can even be mastered with enough effort (by some people). But let's not dismiss the hard work of the OP and of the many people out there trying to learn (or, frankly, failing to learn) by calling it intuitive and easy.
- UnFleshedOne 14y agoMaybe "as intuitive as it gets" means "as intuitive as it can be"? There is innate complexity there somewhere. Can't say if we've necessarily reached it though.
- tspike 14y agoI too find programming quite intuitive and easy. I also find your post condescending and unproductive. When did you write your first program? At what age did you have unfettered access to a computer? Do you find sports difficult? How about music? Cooking? Every activity worth learning comes more naturally to some than to others, influenced not only by aptitude but by background and learning style.
- jd 14y agoDon't forget that many people have trouble understanding something as simple as a variable. You have to learn to execute code in your head to not be completely surprised every time you run the program. Programming really doesn't come naturally to everybody.
- Atropos 14y agoAs a non-technical person with just a basic ability to program I would still agree with you - basic programming is only "hard" in the sense that the grammar of languages like French or German is "hard" - maybe the better word would be tedious? Take a very basic task like "Apply this text replacement to all .txt files in this folder and all subfolders". If you are a beginner programmer for example in Python, you have to search for the module and get a basic understanding of how it works. While you never run into any conceptual difficulty, this can still take you a lot of time and you will make strange errors along the way.
- tomasien 14y agoThere's no amount of understanding how short sighted and insight-less posts like these are, they still make me really dispirited when I read them.
- csense 14y agoEveryone's hating on the parent post -- it even got downvoted. While people who have struggled, or have taught struggling students, may understandably be put off -- mainly by what's being said, peripherally by how it's being said -- I think the parent has a legitimate point of view. I will admit that many beginners find programming hard and counter-intuitive. This fact, however, is a reflection of the utter failure of our education system to teach a few important things: Learning on your own. A K-12 curriculum is highly structured and guided, especially K-8. Consulting resources outside the curriculum and figuring things out for yourself is a valuable life skill that's seldom taught in a typical classroom. Thinking rigorously. A typical curriculum involves memorizing facts, not figuring out the consequences of known facts. Knowing something well enough to make detailed, testable predictions simply isn't taught. (When I learned the scientific method in school, it was simply memorizing the list ["Formulate hypothesis", "Test hypothesis with experiment", "Write paper"]. Even intro college physics was basically applying known theory to measure numbers in the lab, more engineering than science.) Tenacity. In school, when you learn your answer to a question is wrong, it happens at the end of the learning process, and it means you've failed at mastering that particular tiny corner of the curriculum, but need to move on anyway. However, in the real world -- particularly programming -- when you get a traceback or incorrect output, it's the beginning of a dialog between you, the language, and your mental model. Making a mistake doesn't reflect on your ability until you give up on fixing it. People simply don't realize how humbling programming is, in terms of the sheer number of mistakes that even the best programmers make. (Beginners don't use or can't yet understand tools like IDE's which instantly notify you of many errors -- especially syntax errors -- and incorrectly highlight many others, like missing quotes.) Differential diagnosis. "What I expect isn't happening. Situations alpha, beta, or gamma might conceivably be happening based on my mental model of how things work. I already observe y, which eliminates situation alpha. Now z would be different between situation beta or gamma, so I just need to print z out and rerun...aha! Now that I know z, I can eliminate gamma, so the problem must be beta..." This sort of intense critical thinking is absolutely vital to functioning in technical subjects, and also enormously helpful in everyday life. But it's a skill that has to be trained, and our education system completely misses it.