13 ms·
Don’t Believe Anyone Who Tells You Learning To Code Is Easy
- felixrieseberg 12y agoThere's merit in reminding people that a lot of development contains a decent amount of Googling, but I'm not sure that "knowing which code is best to copy-paste" is the main trait of coding. What's certainly true is that learning how to code is dramatically easier than it ever has been; and is likely to get easier as time passes. Learning how to code is indeed pretty easy, knowing how to build a complex product goes beyond that, though.
- darkmighty 12y agoIt is remarkably easier, that far I can tell. The number of "building blocks" so to speak in a programming language are quite numerous for most tasks (i.e. not core algorithms) -- something I learned quickly which frustrated me when I started programming in HS -- unlike in math where dominating elementary logic/algebra allows you to solve incredibly complex problems just by thinking hard enough, in languages/libraries tools and problems are tightly coupled, and numerous. So often the better way is just googling, seeing examples, and a lot of copy-pasting.
- demallien 12y agoYou know what? I don't think it is easier to learn to program now. Many years ago when I was a child and I got my first computer, it booted straight into a BASIC interpreter. The computer also came with a manual that taught you about if statements, for/next loops, gotos and gosubs. It showed you examples of how to draw to the screen and get inputs. Compare that to today. There was nothing to install. It was all already there. There wasn't even an environment to launch, you booted into the REPL. You didn't have to hunt for tutorials on the internet, everything you needed to get started was in the manual that came with the computer. And everything in that manual was appropriate to the computer. You didn't have to worry about having the wrong version of dev environment, making the tutorial incorrect. That's not to say that programming hasn't improved in other respects. I could spend years trying to build a basic TCP/IP stack on that old 8bit computer, which already comes pre-installed on a modern computer. I can grab a free copy of just about any language I've heard of. Huge numbers of libraries freely available allow me to stand on the shoulders of giants. But, nothing available today approaches the simplicity of that old 8 bit system for learning to program...
- _RPM 12y ago" As a programmer, there is a limitless amount of stuff to learn" I absolutely disagree with this. I learn new things at least once a week about computer science in general. No one knows everything. "They don’t tell you that a lot of programming skill is about developing a knack for asking the right questions on Google" So, she relies on S.O. for all her programming problems, what if other people don't? SO is _not_ my first choice anymore. Man pages are such high quality.
- jhspaybar 12y agoI was recently going through the man pages on how to manipulate the route table and thought to myself, "man, these are kind of lacking compared to what I usually see." I get to the bottom and in the Bugs section is a single sentence, "This page is incomplete." Good times :)
- yen223 12y ago"As a programmer, there is a limitless amount of stuff to learn" "I learn new things at least once a week about computer science in general. No one knows everything." How do these statements contradict each other?
- ef4 12y agoAlso see Peter Norvig's "Teach Yourself Programming in Ten Years". http://norvig.com/21-days.html http://norvig.com/21-days.html
- octonion 12y agoCoding is easy.
- deleted 12y ago[deleted]
- illicium 12y agoBut software engineering is hard.
- ef4 12y ago> They don’t tell you that a lot of programming skill is about developing a knack for asking the right questions on Google and knowing which code is best to copy-paste. And they don’t let you in on a big secret: that there is no mastery, there is no final level. The anxiety of feeling lost and stupid is not something you learn to conquer, but something you learn to live with. Just because you haven't achieved mastery yet doesn't mean it doesn't exist. It takes a very long time. Until you've worked with masters, you may doubt they exist. But they do.
- psyklic 12y agoI disagree with the author -- I never feel lost and stupid. There is always a way of bringing an idea to life, even if there are compromises and tradeoffs. But nowadays, I am forced to rely on third-party libraries. These libraries often change constantly and have "in-development" nuances. So, the OP regrettably is correct that searching the Internet is a requirement for working on modern applications. I do reminisce about the pre-Internet days, when all I needed was my brain and a simple reference book!
- ef4 12y agoIf those libraries are open source, you can still do it. ;-)
- cordite 12y agoMy mom taking python on coursers constantly feels lost and stupid. She's doing it again even though she passed last time. I remember feeling that way when I was eleven, teaching myself. But I think this feeling goes away with self confidence and experience.
- woah 12y agoI bet the person who maintained your code felt lost and stupid though! The benefit of libraries is that the reference exists at all.
- psyklic 12y ago
- Balgair 12y agoI'll hijack here a bit (sorry). A good friend of mine in in a PhD program at UCLA. She's into solid-state physics and modeling. They use IgorPRO a lot in this field (oddly, also audiology). However, she can't use it a lick. She tries, she really does, but she just can't. Why? Dyslexia. She has dyslexia. All the variables on the screen just look the same. i++ and i--, or +i and 'hi', or for() and if(). Just the same stuff to her. Its something not usually discussed, as I think most programmers don't have it so bad. 'Up to 17% of the population'[0] may have some form of dyslexia. It's something that really does impede many many people from just reading, let alone coding and programming. Does anyone know of a work-around for this at all? Thank you. [0]http://dyslexiahelp.umich.edu/answers/faq http://dyslexiahelp.umich.edu/answers/faq
- dethstar 12y agoThis is perhaps more fitting in one of those QA sites or as an ask hn but i did some googling for you: http://programmers.stackexchange.com/questions/9657/programming-with-dyslexia http://programmers.stackexchange.com/questions/9657/programm...
- Balgair 12y agoThank you!
- nandemo 12y agoThe first google result suggests that IDEs and code-coloring might help: http://programmers.stackexchange.com/questions/9657/programming-with-dyslexia http://programmers.stackexchange.com/questions/9657/programm... Out of curiosity, does she not have a problem reading (or writing) physics papers?
- Balgair 12y agoYes, of course she does. But programming also takes it's own learning curve on top of it all.
- sal1800 12y agoWith programming, art, carpentry and many other things, you just have to accept that the first project you finish will likely not be very good and the best thing to do is to throw it away and start over. If you can embrace that idea, you can eventually learn to code. The goal is to understand what you are doing and why, not just blindly copy and paste code that seems to work. Break it by changing something and fix it enough times and you will gain insight about how it all goes together. Even the most complex problems can be made easy if you can break it into smaller tasks and build up to the finish.
- jv22222 12y agoI've been coding PHP html css and JS for nearly 20 years and I still learn huge swathes of new information and techniques all the time. I wouldn't say I've mastered it. I'm pretty good at foreach though.
- marincounty 12y agoI found the free cs50 courses at Harvard helpful. I honestly didn't have the patience to sit through the videos, but I listened to the mp3's while exercising. All the buzz words started to make sense. I don't think I'll ever become a Programmer--just don't have the drive, but I can put up websites--half ass, but they are improving. Yea, I know a bit about ROR, and Django, but would never call myself a Programer, or a cutesy Coder. In terms of making a living in this field, I honetly think who you knows matters more than what you know? I guess that's the case in a lot of fields? I've never had the stomach to suck up to someone I didn't truely like. I guess you have too though?
- jimbokun 12y agoI really feel like, relative to many other fields, programmers sincerely their field to be a meritocracy. They don't always live up to the ideal. For example, a lot of programming interviews used to heavily feature mathematical riddles and brain teasers. More recently this has come to be considered a bad way to evaluate potential programmers, but at least the intent was trying to find out something about the candidate's intelligence, and not just trying to make a personality fit or something.
- gradys 12y ago>They don’t tell you that a lot of programming skill is about developing a knack for asking the right questions on Google and knowing which code is best to copy-paste" This is a misleading simplification. I'm sure I'm preaching to the choir here, but I'm going to elaborate anyway. Learning to program isn't fundamentally about learning what text to type in to a box somewhere. It's about learning to think computationally. "Think computationally" is vague and doesn't mean very much to the beginner. That's because it's something you need to learn with practice. Think about writing in normal human languages. You could say there are two things going on when you are writing an essay, for example. At one level, you are thinking about the concepts. What are your arguments? How are you going to support them? At another level, you are thinking about how to write them down -- how to encode them in a way that readers will understand. The same distinction exists in programming. At one level, you need to think computationally. What are the inputs I have access to? How can I use them to produce the right outputs? What data structures should I use? How should I handle this edge case? At another level, you are thinking about how to write all of this down so that the computer will actually be able to do it. Copying and pasting will help you with the second part -- figuring out how to write down the structures you come up with -- and real, experienced programmers do that all the time, but it won't help you with the first part -- figuring out what structures to write down.
- enraged_camel 12y agoOn the other hand, there is a lot to be said about knowing what question to ask and how to ask it. In the age of Stack Overflow, using the wrong terminology or being too specific with your question can lead to never finding that chosen, community-wiki'd answer with 500 upvotes that holds the solution to your problem (or shows you that you have been following the wrong line of inquiry, built upon the wrong set of assumptions).
- jimbokun 12y ago"Learning to program isn't fundamentally about learning what text to type in to a box somewhere. It's about learning to think computationally." But learning how to start programming isn't about that at all, even a little bit. Writing your first program is learning what a text editor is (no, it's not quite the same as a word processor), maybe learning about the command line interface on your computer for the first time, learning about the various dependencies between the tools and libraries you need to install to get started. There is Googling and discovering tutorials that are out of date or have mistakes in them, and figuring out what to do then.
- rdtsc 12y agoYou need multiple things to come together. Some are abstract and general, some are more specific. You need to know the tools you are using, the capabilities of your platforms. At some lowest level it is about solving problems and knowing how to drill down and understand requirements, split a large problem into sub-problems. In that respect it is not unlike an architect or an engineer or carpenter. Then it comes to about learning how to translate to an intermediate mental representation. Here where you you already think about the typical language paradigms. Like someone used to object oriented design starts seeing objects, factories, inheritance hierarchies. Someone used to actor based programming (like Erlang) starts seeing actors sending messages to each other. A Haskell programmer starts thinking about type-classes (presumably, I am not one). Then it comes down writing it. Here one needs to know the tools in detail. The specific language, platform, API. Say something object oriented at the higher level could become something in C++, Java or Python here. Here is where Google-ing helps. Knowing that say oh Python has this cool built-in module that can help me. Or yeah, I'll use a smart pointer here. Well you have to know about the smart pointers. Then here is boring but important stuff. Knowing how to use version control. Knowing how to estimate time, communicate with team-mates. Not being stupid about security. Anyway a lot of things have to come together to make someone a successful programmer in the general sense. Some acquire these capacities formally by going to college. Some acquire these on their own. The interesting thing is that regardless of how it was acquired, the usual instinct is to discount it while looking back. "Oh I just write Python, here is a book on syntax, learn it and start programming". That always somehow seems easy to programmers. And I have made the that mistake. Friends and family member I have tried to show/teach programming.
- alelefant 12y ago"And I have made the that mistake. Friends and family member I have tried to show/teach programming." I'm just curious, knowing what you know now, how would you go about trying to show someone how to program? I may have that opportunity soon and I was going to suggest thinking about a simple yet everyday problem that arises, and try to make it better with an app (could be phone, web app, client app, etc).
- rdtsc 12y ago
- sirdogealot 12y agoI only tell my friends that programming is simple as a way to encourage them to get started. Once they have begun, I tell them "sure, basic programming is simple, but you need to think hard about what you really want to do". That generally has a good outcome and they continue to be interested in programming and wanting to learn more about it. If you tell an interested person straight away that "it is incredibly difficult" then you will be discouraging a large number of people before they even begin.
- withdavidli 12y ago>And they don’t let you in on a big secret: that there is no mastery, there is no final level. The anxiety of feeling lost and stupid is not something you learn to conquer, but something you learn to live with. One of the biggest surprises when I started to learn, LANGUAGES ARE STILL BEING UPDATED. ?_? Totally thought that was done and over with, then I come to find language/framework updates can break entire programs. First time learning Rails was when they just upgraded to 4.x and all the tutorials was in 3.x. Now that was a "FUUUUU" moment. P.S. I thought the pictures was done quite nicely ^.^
- greenyoda 12y agoNot all languages ignore backward compatibility. There's Fortran code written in the 1960s and C code written in the 1970s that will still compile correctly with today's compilers, even though these languages have evolved continually over the years.
- brettgoulder 12y agoIf you are considering a career as a web engineer, I think the first thing you need to ask yourself, do you enjoy tying and untying knots over and over again. If you do, you probably have the right stuff to be a really good programmer.
- anishkothari 12y agoI've also heard web programming described as plumbing. I wish I knew this before I started my Master's degree in IT. Programming is frustrating if you don't have an engineering background... you keep running into new problems and people telling you what you could do better.
- PurplePanda 12y agoI would never describe either finding new problems or people telling me what I could do better as frustrating! They are both some of my favourite things to experience!
- krisgenre 12y agoLearning to code is actually easy. What's difficult is, to master it.
- minikomi 12y agoI would almost say.. Learning how to code is easy, learning what to code is hard.
- greenyoda 12y agoExactly. To expand on what you said: Learning to code is easy, just as learning to write English prose is easy - kids routinely do both of these things. However, learning to be a professional software developer or a commercially successful novelist or journalist is very different from learning to code or learning to write - for most people, it requires hard work, many years of experience and learning from lots of mistakes.
- R_Edward 12y agoI would further refine this to, "Learning to code is like learning to write prose: Easy to learn, and easy to do, but not so easy to do well. Especially since 'well' is at least a little bit subjective." There are plenty of people who can write well, who are not commercially successful. And there are people who are commercially successful who do not write very well at all. Cough-DanBrown-Cough.
- ant_sz 12y agoPrograming is easy for who has already learned it. The second language is easier to learn than the first one. I think that's why programers keep telling programing is easy. I admit that the learning curve of programing is a little steep. But isn't every skills in the world the same? Think about the first time a child learn to walk, the first time a child learn to speak. No healthy adults think these things hard to do now. The conclusion: the programing is just like any skills in the world, they are always hard for the new beginners but become easier and easier while you are getting familiar with them. Saying if it is statically hard or not isn't an accuracy statement.
- fred_durst 12y agoI've been programming for maybe too long now, but likely not nearly as long as the higher level advanced developers, but still the idea that people copy & paste code from Google/SO is horrifying. You are really just going to work on some real life project and just blindly copy some random crap you found online without even knowing what it does completely? Yikes.
- bowlofpetunias 12y agoUhm, that's how I still learn new languages. Copy, paste, modify just to get something done. The modify part leads to more concrete questions, more Googling, more detailed reading of docs, until at some point I'm engaged enough to go back to zero and actually start learning the language from the basics. (This doesn't work for those languages who's paradigm you first need to understand before being able to do anything, but most languages allow for hacking straightforward procedural code at the basic level.)
- fred_durst 12y agoI mean this in the best way possible, but do you like actually take your mouse over to the webpage, highlight the code, copy it, and then paste it into your editor? I am genuinely curious.
- philmcc 12y agoYes. I do this from time to time. Recent example, wasn't sure what the event was called in JavaScript when the window changed. Couldn't remember if it was resize or windowResize or whatever. SE had a sample dummy event listener add function, complete with // do stuff here. I cut and paste the whole thing and added what I needed. I suppose I could've retyped the addEventListener function from scratch but...I dunno, that seemed inefficient. I just needed the name.
- taurath 12y agoIf you don't know what a thing does and you don't have the time to learn it, sure. A few years ago when I was making my first applications I "used" regex's off of stack overflow long before I was able to take the time to learn the syntax myself. At the time it was much more important for me to learn design and compilation than it was to go off and learn regex.
- wturner 12y agoAt the college I use to work at they had a sound arts program and they still do. They decided to change this a bit and make a foray into the 'cool' world of programming. Instead of hiring software engineers to design the course they let the previous "sound recording" course directors and a few lab instructors attempt to write the program . All 4 or so of those people had never done any real programming with the exception of one, who as far as I know has never been in a professional programming or software development environment. In short he did some SuperCollider stuff as a personal hobby and was good at teaching MaxMSP. However, this is a different beast than teaching python or IOS which is what they intended. Especially at it pertains to audio. Eventually they wrote a course that included Python. I assume the instructors realized what they had bitten off as last I looked Python is no longer on the official curriculum. This story actually gets much worse as they wanted to do Objective C but they originally hired a former instructor who was a DJ to learn and teach it. That guy didn't show up for work one day ..... and never did again.
- gcv 12y agoThis is misleading. Learning to "code" or do the work horrifically called "software engineering" is definitely a huge pain in the ass. It's all about half-working fragile dependencies and outdated documentation. Don't do web programming. Don't do iOS. You can try it after you have used good tools first. Instead, start by learning about computational processes. Use Racket — it's a stable, excellent environment. Read SICP or at least HtDP. You'll have fun. It's challenging, because it requires an adjustment to the way you think, but it is not particularly hard.
- rimantas 12y agoOh, do iOS. You will know how elegant APIs look like.
- oldspiceman 12y agoThe only useful class I took in university was first year programming. I felt like god when I first wrote an output stream to a file. I couldn't believe it was possible. Most people didn't have those kind of feelings. I think that's the difference. You're either captivated or you're not.
- _random_ 12y agoThen you read some science fiction and futurology forecasts and understand that there is no way future isn't going to be revolving around programming in every way. And you feel even better.
- jimbokun 12y agoI have been programming a long time, and even now I often feel getting the environment set up to start something than just writing the actual code to solve the problem. Compiler versions, dependency injection configuration files (why yes, I am a Java developer, how did you guess?), build systems, source control, dependency management, library incompatibilities, setting up a test environment, setting up and configuring databases and web servers, etc. Maybe I don't actually spend as much time on these things as it feels like I do, but I do know futzing with this stuff when you just want to write real code to solve real problems is soul sucking and demoralizing. So I definitely relate to the hard part of programming, beginner or not, as just getting to the point where you can actually write some code and see what it does.
- BorisMelnik 12y agoI really see your point on that. I am a hobbiest scripter, I know HTML/CSS, dabble in PHP and Javascript and can read a lot of C. I tried learning Ruby/Rails a while back and spent 3-4 hours just trying to get the environment setup. I finally realized that Windows 7 was not a very popular OS to learn Ruby on and gave up. On the contrary, getting a PHP/Python/Javascript "environment" setup is no problem. Notepad + a hosting account or any Linux/Mac and you are good to go.
- beemoe 12y agoThis comment really resonates with me. It is what I think of when I hear that quote, "Technology has the shelf life of a banana". It demotivates from starting new side projects when the old ones take such efforts just to set up again. Code can give the impression that it has some timeless value like some truth that has always existed and you have captured, but in reality code cannot "exist"(or fulfill its purpose) in isolation.
- kpennell 12y agoThanks for this comment. I've found it to be spot on. It is absolutely demoralizing to spend weeks on trying to figure out env and deployment settings vs. actually making things with code. I hate dev environments so much. They destroy your will to learn.
- 12y ago
- andrewfong 12y agoTo borrow from PG, treat learning to code like learning to paint (or any other creative process). You might pick up the basics pretty quickly, but the quality of your first webapp will probably be comparable to that of your first self portrait.
- retrogradeorbit 12y ago"They don’t tell you that a lot of programming skill is about developing a knack for asking the right questions on Google and knowing which code is best to copy-paste." No, no, no! This always frustrates me. This is not 'coding' (maybe it is, and we should be doing less of it, and more programming). This is gluing together pre-coded snippets and trying to make it work. Continuing to do this is an impediment to getting better. Thinking that somehow this is what 'coding' is, is missing the point. I will read a stack overflow page perhaps in a search for some direction, look at all the 'solutions' like surveying a landscape of others approaches to the problem. Then I'll throw them all away and code my own. Possibly it will share a lot with one of the answers, what I would consider a good approach. But a literal copy and paste just doesn't happen. I would consider a copy and paste a recipe for inviting trouble, because you haven't really reasoned through the problem yourself, and thus don't really understand the solution intimately. Programming is a process of mental reasoning around your problem with an eye on the form of reasoning computers use, so you can express that reasoning to the computer in the language you're using. Because computers don't reason like humans 'reason' (ie. humans don't really 'reason'...), knowing how a computer reasons and behaves is alien and takes time to understand and learn and it takes time to become quicker at comprehending this. This is the path of becoming a better programmer. Gaining that experience so the process is less alien and you more easily can fathom how a computer will respond and behave with a certain approach of laying out of the logic you are trying to express. Copy and paste doesn't help you at all with this. In some cases it may prevent you learning essential lessons and hinder your improvement.
- bra-ket 12y agocopy and paste helps to get the job done
- jwdunne 12y agoI don't think so. A program is an infinite stream of jobs and is never quite 'done'. The less time you spend on keeping things nice and clean, the more frequent the jobs will be. After all, it still needs to be maintained. Unless you are using a library, it's gonna be better long-term going for complete understanding. Even then, it's usually a great idea to understand what a lib does under the hood.
- ankurdhama 12y agoLearning to Code is really really easy. Learning to create something useful by code is the hard one.
- drakaal 12y agoCoding is easy. The problem is too many "teachers" expect you to have a larger vocabulary than you need. I taught 3rd graders to code. I also taught 1st graders, but the 3rd graders it really clicked. They would come up with solutions to things I would not have thought were possible given the limited language we were working in. We started in "Project Europa" it is object oriented, module based, and the vocabulary is very limited. But students built all sorts of virtual robots to do all sorts of interesting things. When I learned to code I learned in RPG, and that doesn't stand for Role Playing Game. Then I moved on to Basic. Turbo Basic, and later QBasic. I wrote a 3D boxing game in QBasic. Yes. 3D graphics from QBasic. To this day my vocabulary in any programming language is pretty limited. Those around me get upset because I'll use a While loop and increment a counter rather than a For loop and the Index of the thing I am looping through. It is not that I don't want to use the wider vocabulary, or that I have anything against Lambda's. I don't dislike Tuples. I have nothing against using a Class. But I don't usually need more than my 12 word vocabulary to build things. If I do, that is a performance optimization. What? Itertools and product will do the same thing I did with nested For Loops? So? I didn't know there was an itertools. I didn't know there was a product. Someone said you need to develop a knack for asking the right question of google... Nah, sure StackOverflow has 90% of the answers you'd ever need to know, and they have a clever code snippet that I will admit comes in handy, but if you have to break thought to Google, you aren't breathing the code. It is like trying to learn Spanish by carrying the pocket guide with you rather than making do with the 12 words you know until you can learn 6 more, and then 12 more then 24 more words. Take the training wheels off and suck it up. Machines are big and fast, large vocabularies are for people who want to speak concisely. A 3rd grader may not use the best choice of words, but he can still explain to you how to make a peanut butter sandwich, or build something in mine craft. So don't let anyone tell you Programming is hard. Programming is easy. But there are a lot of ass hats who care if you should have built a function rather than copy and pasting the same code with minor variations 20 times. Or will say "you could have done that in one line with a lamba and a reciprocal function" "Yeah, and Einstein had someone else do most of the math for his proofs because he kind of sucked at calculus. I'll get to optimizations after I have something that runs."
- fivedogit 12y agoYou might as well say "basketball is easy". Sure, dribbling a ball can be taught instantly, but your 3 pt percentage or rebounding skill can continually improve over the course of a career. Just because you taught some 3rd graders a for loop doesn't make them coders and it certainly doesn't make them engineers. The programming is easy myth is doubly bad: it sets a false expectation for the aspirants and belittles actual engineers' lifetimes of study.
- spain 12y agoI highly disagree. The author says one of the main reasons coding isn't easy is because setting up the environment is so difficult. The problem is that if you try and learn "iOS" using XCode then of course the environment has a lot more weight and cause more issues that you really don't need to deal with as a beginner. A better option would be to fire up a simple Scheme or Ruby interpreter in a terminal and watch them go (after giving them a copy of your favorite programming book). Heck, with things like CodeAcademy you can just visit a website and eliminate the environment issue completely. I'd say the problem with programming isn't that it's difficult, but that it's intimidating. Writing a bunch of arcane symbols and words in a text file scares people off, while really it's just everyday logic people use in a different form (at least, the very basics are). I think that's also why programmers keep telling people it's so easy, so that they get over that irrational fear.
- Bizknacker 12y agoThough I'm a novice C++ programmer (working with templates at the moment), the only time I'd ever felt lost and stupid, which was just recently, was when it came time to write the end-of-chapter program in the book I'm reading. Oddly enough, the program wasn't difficult to understand. I've even written it and got it to run before! I think what happened this time around, is I had read the chapter again, started writing more notes and had a better grasp on the material than before, that when it came time to bring all the concepts together, the example program didn't include them! For the first time in years, I actually felt stupid, borderline retarded (in the literal sense). The example involved an abstract base class, Dragon, with 3 derived classes. The idea was to have a player fight a randomly selected dragon via Base class array and Base class pointer. At this point in the book, aggregation was discussed and shown in an earlier example, but wasn't implemented in the example. Mind you, no player class was created! So basically, arguments were passed to xDragon's defend and attack member functions via variables within the main function. So I'd decided to create a Player class instead, and have the Player And Dragon objects interact with each other in the main function. Problem was, I hadn't learned enough to know how to do that, to which I didn't realize until error after error and trying desperately to get it running. I'd refrained from using Google and Stack Overflow for the most part, save for a few compiler errors I'd never received. In the end, I'd decided to create a Game class that layered a Player and Dragon object. I had a feeling I should have written it that way from the start, but felt uncertain. The last errors that I was stuck on for a few days, I'd solved by way of "I wonder if this will help" lol. Up until then, I wasn't aware that if you don't have a separate implementation file for a class, and should you decide to layer an object from that class, the class must be defined within the class declaration. Having defined member functions outside of the declaration, although within the header file, gave me: include\BlackDragon.h|22|multiple definition of `BlackDragon::calcDamage(short)', first defined here. I will admit, it did put a damper on me. I felt like I was on a roll up until that. Perhaps I'll take a week or two break from programming get the feeling back again.
- deadghost 12y agoWhen I see "programming is easy" I think "dirty, filthy lies!" When people say everyone should know how to program I think "why?" There's some weird nerd myopia going on with the programming literacy movement. Programming takes an odd kind of thinking and is about as easy as anything else that takes a large amount of time and effort (read not easy).
- armada651 12y agoThe kind of brain necessary for programming is the one that sees something it doesn't understand and then does everything it can to learn what it didn't understand. The real reward in programming is clearly seeing how much your understanding has grown. But at the same time you're humbled by how much you have yet to learn.
- erikb 12y agoAlthough the basic assumption by the author seems to be correct, the author himself is not very far in his journey to become a programming master. I now study and work in programming for about 7 years. About 3 years into programming I thought the same way as the author: Tutorials and copy&paste. If you reach a certain level tutorials become a waste of time, because you don't need structural help any more. You also understand that you shouldn't google how to implement a specific solution in the language of choice but which solution in that language solves the given problem. You also don't copy&paste because just solving a single problem is not the question any more. You can already solve most problems. It's more that the desire to improve leads to learning new principles, which means hand-copying small code examples (sometimes from actual programs not from SO questions) and playing with them until you get a feel for it and then start to use it in your daily programming tasks.
- zhaphod 12y agoThere is an enormous difference between writing in English and writing like Shakespeare, Hitchens, Rushdie, or Stephen King. When it comes to coding most people confuse learning syntax with writing great software.
- vezzy-fnord 12y agoThey don’t tell you that a lot of programming skill is about developing a knack for asking the right questions on Google and knowing which code is best to copy-paste. And this is how the security industry makes its living.
- yuribit 12y ago"The anxiety of feeling lost and stupid is not something you learn to conquer, but something you learn to live with" That's exactly my daily felling, but I'm just a junior soft eng
- pekk 12y agoIt is easy. It just takes years and years to become any good.
- analog31 12y ago>>> One of the most dangerous things I’ve seen happen to people who are just starting to code is being told that it’s easy. I've encouraged my kids to learn programming. The one thing I haven't done is tell them it's easy. Anyway, they've seen me in bug hell, so they're under no illusions. But they're no strangers to learning hard things. >>> And they don’t let you in on a big secret: that there is no mastery, there is no final level. The anxiety of feeling lost and stupid is not something you learn to conquer, but something you learn to live with. Yes! Bring it on! Bright kids spend their entire school day at the final level -- 99th percentile on every possible measure. Those kids would benefit from an extracurricular activity with no final level (traditionally, "classical" music) that they can pursue at their own pace. >>> They don’t tell you that a lot of programming skill is about developing a knack for asking the right questions on Google and knowing which code is best to copy-paste. In my view, that's a general skill in its own right, worthy of learning. I fixed my refrigerator and clothes dryer that way. I rarely tackle any technical task without first seeing if somebody has blogged a tutorial. And I grew up fixing things before the Internet age. But I'd start kids on coding without the Google Everything approach. >>> [the anxiety / boredom graph] I enjoyed that. It does seem to ring true.
- snambi 12y agoA lot of coding today is "integration". This is where the code snippets and tutorials come into play. Imho, coding is probably less than 20% of development.
- Uncompetative 12y agoProcessing.js http://sketchpad.cc/h3QngEM9Vu http://sketchpad.cc/h3QngEM9Vu
- the_duck 12y ago"The anxiety of feeling lost and stupid is not something you learn to conquer, but something you learn to live with." I started practicing mindfulness meditation a few years ago. Mindfulness trains you to experience your emotions without judging them; in other words, it helps you to "live with" feelings like frustration and anxiety without getting overwhelmed by them. It's been an invaluable addition to my programming toolkit.
- collyw 12y agoDepends on what you want to do. I see lots of bioinformaticians writing simple scripts usually just counting stuff up, and doing some stats. It needs to run once, on one machine and often only on one dataset. That type of programming is easy. I am working for a sequencing centre, doing the database to run the place. I inherited a self taught bioinformaticians code after she had left. Second worst code I have ever seen (the worst was also a self taught bioinformatician, who didn't even indent stuff). The code was so bad, I had to refactor it just to debug it. The team leader didn't see a problem. It had worked. He didn't see the fact that it would have taken me a day or two to write this from scratch, if I had had an original specification, rather than spending a week to refactor her code until it worked. To this day, I have no idea what parts of the code are doing (I can see it is reading byte 8 of a binary file and doing something. I have no idea what the contents of that file are). At least now I have made the code modular so I can see the output of reading the file into a huge nested dictionary. Learning to code is easy. Learning to code well is not. Hell we can't even decide what coding "well" means. 100% test coverage? Shit that works? Something that is readable and maintainable? Something that runs faster than all the equivalent software? In the end I think experience will mean a developer can work out which of these is most important. Maybe just getting something that works is what is important, and the example I gave above is perfectly acceptable code.
- JoeAltmaier 12y agoThere are so many, many categories of program that its futile to say what it means any more. Expertise in any category doesn't mean squat about anything else. I've spent a lot of time doing embedded stuff. Totally different world. What matters here is irrelevant elsewhere. So any time someone says "I can program" you have to ask "Where? With what tools? For what audience?" and so on. Because there are so many niches (and so many being invented every week) its impossible to guess.
- ulisesrmzroche 12y agoWith strong tests, who cares about copy-paste though?
- klunger 12y agoThis is a topic I have been thinking about a lot lately, so this article is quite timely. I was a bad programmer for a long time. For a few years, I was an engineer and basically wrote quick and dirty matlab or python scripts to do physics based modeling and simulations. But, it was never elegant or efficient or anything that I guess you learn about in upper level CS courses. It didn't have to be. A customer would never see the code, it would never have to perform under critical conditions, it could almost never be reused because each project data set was completely different. The code was just supposed to crunch input and produce meaningful output that could be analyzed. I got to thinking that I was a pretty good programmer because I could write those scripts. Then I quit that job and moved to a different country. The only job here that I managed to get was as a software engineer. Here, I learned how very wrong I was. Writing quick and dirty scripts that crunch data is easy. Programming is hard. Really really hard.
- gremlinsinc 12y agoMy learning has progressed from one area to the next--each person learns differently, and coding can be easy to learn, but like everything else it's difficult to master. I started out on google, pulling snippets/coaxing them to do my will, then I became good at reading docs -- and implementing straight from the docs, for instance in Laravel/Rails apps. The next big change for me was going beyond the docs to the actual API to do even more customization, and override existing methods. It's a progression from low-level understanding to higher, and whatever gets you there - just don't give up.