23 ms·
Why Programming is Difficult
- benched 13y agoI think programming is easy. When I sit down to code something, it feels deterministic, and everything falls into place. I attribute this to: 1) IQ 3 standard deviations above. If I hadn't been this way when I started, I probably wouldn't have started. 2) I've been practicing hard, 25 years. That's a lot of time to try a lot of ways to do a lot of things, and find what works. Here's what's difficult for me, and what only gets more difficult as my own time grows shorter and I'm less agreeable to wasting it: Working on teams, under managers, within organisations. Sitting in the third meta-meeting that week, listening to posturers quibble over what Agile means, rolling my eyes thinking obviously it's anything but agile. Performance reviews and arbitrary subjectivity-based rewards dressed in time-consuming process they swear will make it more objective. Perennial "Strategic Roadmap Shifts", listening to yet another CEO spout boilerplate bullshit about how this is the one way to glory, never shall we mention that one from just six months ago - that never happened. And that means another project cancellation. Then one by one the coworkers you like the most get fed up and leave, until the day it's your turn to get fed up and leave. On to greener pastures to enjoy a few months of a semblance of accomplishment before the whole cycle starts to repeat again. All that is what never gets any easier for me. Like everybody always says, "It's the people!"
- sitharus 13y agoAfter 10 years in the industry I relate to that second paragraph far too well. What makes programming hard is that people who aren't programmers don't understand what we do.
- bovermyer 13y agoPart of the job is helping others understand what you do, in a way that's convivial and not condescending.
- atwebb 13y agoI think this really cannot be understated. It will help you get ahead and in many, many different ways while also strengthening your base knowledge and understanding of the subject matter.
- sitharus 13y agoI guess I should have put more than 10 seconds in to my first reply, but I totally agree. That's the hard part. Now I'm in a senior role I spend most of my time explaining what has to be done. All the hows and whys take a long time to explain thoughtfully. If all you can do is "I'm smarter than you and I say so" that's not a good explanation. I know we like to complain how meetings and presentations take up valuable programming time, but without them there's no way to explain to a CEO what unit tests are for, or why we're now adopting JQuery and removing Prototype from our 5 year old application. It's always possible, but you have to be aware of what everyone else who supports your organisation values.
- sanderjd 13y agoIt seems to me that the more common problem is programmers willfully refusing to understand what people who aren't programmers do.
- elwell 13y agoBeing the only technical co-founder at my startup, I have to agree with you (though I won't say my IQ is 3 standard deviations above avg).
- _sabe_ 13y agoJust because you feel things are easy doesn't mean you're doing it right ;) http://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect http://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect
- ecdavis 13y agoJust because the Dunning-Kruger effect exists doesn't mean that skilled people who can accurately self-assess don't also exist.
- kbenson 13y agoJust because a possible alternate explanation is put forward does not imply that explanation is deemed probable. It can simply be more information to consider.
- exelius 13y agoProgramming is easy. Software development is hard (and there are lots of pieces of software development that don't involve programming.)
- psychometry 13y agoDo you think that your inability to relate to other people in your organization is related to your obvious superiority complex? No one cares what your IQ is. There are many different kinds of intelligence and some of them, like social and emotional intelligence, also contribute to your personal success within any particular organization.
- JasonFruit 13y agoI won't dispute that the things called "social intelligence" and "emotional intelligence" exist, but is it really correct to refer to them as intelligence? I think that unduly twists the language to make a social point.
- benched 13y agoI relate to straight shooters who say what they see. I understand that fronting, ass covering, being indirect, and speaking the mel[odious] language of business are ways to play the game. Mention of IQ induces reflexive invocation of multiple intelligences like ipecac, but IQ-style intelligence is directly relevant to programming. High emotional intelligence makes it worse when you're in a toxic corporate environment.
- psychometry 13y agoThe only people who are overly concerned with IQ and take advantage of every opportunity to mention their own score are the people who have nothing to offer but an IQ score. You come across as incredibly haughty and condescending.
- mitochondrion 13y agoI agree that his comment seemed haughty, but I'd like to mention that yours does as well. I disagree that "only people who are overly concerned with and take advantage of mentioning their IQ". More likely, it's just that smart people with empathic intelligence don't mention it. You know, because they realize that others don't like feeling "dumb".
- 13y ago
- bitwize 13y agoParaphrasing Feynman: You do not understand "ordinary people." To you they are 'stupid fools' -- so you will not tolerate them or treat their foibles with tolerance or patience -- but will drive yourself wild (or they will drive you wild) trying to deal with them in an effective way. Find a way to do your programming with as little contact with non-technical people as possible, with one exception, fall madly in love! This is my advice, my friend.
- 3rd3 13y agoAnd this attitude is why humanity is doomed. Smart people sit in private and we are governed by idiots.
- eevilspock 13y agoTechnical or mathematical smarts doesn't necessarily translate to wisdom, and as many of the comments herein show, perhaps hinders wisdom. Perhaps we are governed by idiots. Yes, I'm sure that if we were governed by people with "HN smarts" and worldview, I'm sure society would be so much better off. After all, look at all the great things Silicon Valley and startups are doing to make the world a better place!
- blindhippo 13y ago"After all, look at all the great things Silicon Valley and startups are doing to make the world a better place!" Hey, don't disparage javascript framework number 23182! It's going to disrupt the universe for the good of all man kind!
- 3minus1 13y agoNixon was a genius
- iqdummy 13y ago"I attribute this to IQ 3 standard deviation above..". Did you really just say that? If you're so smart why didn't you complete the sentence?
- jodrellblank 13y agoDid you really just create an account to insult someone?
- iqdummy 13y agoI did and Hacker News made it so easy!
- killertypo 13y ago> I think programming is easy. When I sit down to code something, it feels deterministic, and everything falls into place this is something i've always felt and was always confused by when I saw others coding. Nothing was ever "hard," coding just made sense to me. So logical, so easy to do, concepts may be difficult to grasp at first, but it never took long to grasp and commit it to memory.
- RollAHardSix 13y agoI can actually agree with this also. (Sometimes things fall apart in implementation but we won't go down THAT route) Most of the time software is fairly 'easy', find the source problem, map out a solution, use your design patterns, and then implement it. I am NOT book-smart by any means (and 5 years Marine Corps vs College did not help that(though going back now while working in the industry seems to be helping to fix it somewhat), however I've always clicked with programming. Sure at times I lack experience that someone who has 10-15 years experience in a certain language might have, but 90% of the problems really only need 2-3 years experience to come up with workable solutions. I consider myself lucky though, my first job was re-writing an entire code-base to OOP with only one Senior Dev (who was hired a month after me) for guidance. And he taught me everything you could learn, involved me fully in decisions and together (yes a full team of two lol!) stood up Agile Development practices. I really think that a combination of variously-challenging levels of work combined with an excellent mentor, and being treated as a full-equal is the key to training software engineers to be amazing engineers and giving that 'click'. But I will also say, it takes a certain type of person, some of the people I've seen in school will never be amazing, they lack the flare of passion, but I do believe that the certain type of person needed, is more relevant in Software Development.
- joe_the_user 13y agoWhen you start your post with "I have a high IQ so programming's easy for me", I indeed believe that working with other people might be a problem for you. But I would still add that I'm doubtful that someone can work on large projects and not have communicating and working with other people be an actual part of programming (rather than that "other problem", "people"). If your projects need you to produce code that other people will modify, I would claim that your coding is going to be a matter of communication. Perhaps you write one-shot firmware for toasters or missiles so this doesn't apply. But I think any student of programming in general tends to see the task as a process of communication and not just cleverness. On this subject, I'd recommend Steve McConnell's Code complete. http://www.amazon.com/Code-Complete-Practical-Handbook-Construction/dp/0735619670 http://www.amazon.com/Code-Complete-Practical-Handbook-Const...
- yogo 13y agoSpot on. For the most part I think you can take anyone on HN to build 90% of the applications out there. After all, it mostly boils down CRUD (different levels), with the other 10% requiring specialized knowledge of algorithms and certain systems. All this to say that coding is the easy part. The more time-consuming part is figuring out exactly what the end users need, whether that involves communicating directly with them or with a project manager. After it's shipped? Even more communication because there will be some bug that you, or your test suite, would not have caught from an everyday user, and there's only one way to find out how to reproduce it...
- joe_the_user 13y agoYou mean 90% of the web applications out there. The other situation where communication is important is once you have a large enough application that you have to start dealing with other people's code and design. There is a lot of hellish bureaucracy in even the best of these situations but I think there is none-the-less some important learnings available there.
- lutusp 13y ago> I attribute this to: 1) IQ 3 standard deviations above. (...) A person with an IQ at or above 145, who is also fully conversant with reality, would know that IQ testing has a reputation nearly as bad the field of psychology that popularized the activity in the first place. http://en.wikipedia.org/wiki/The_Mismeasure_of_Man http://en.wikipedia.org/wiki/The_Mismeasure_of_Man > 2) I've been practicing hard, 25 years. A person of your age should know better than to use IQ as a point of argument -- assuming the IQ score is real and has created a tangible intellectual outcome. With all respect.
- sejje 13y agoI don't agree. I've never used my IQ as justification for anything, granted, but I had no idea it wasn't considered a solid measurement. I just assumed it was like most of the other tests I did well on, and filed it away. You're paying more attention to it than I am.
- lutusp 13y ago> I don't agree. Evidence trumps opinion. http://en.wikipedia.org/wiki/Intelligence_quotient#Criticism_and_views http://en.wikipedia.org/wiki/Intelligence_quotient#Criticism... > I've never used my IQ as justification for anything, granted, but I had no idea it wasn't considered a solid measurement. It isn't remotely a "solid measurement", in fact it's a field surrounded by justified controversy on multiple grounds. The two primary objections are that (a) the tests favor certain population groups and discriminate against others for reasons other than intelligence, and (b) existing tests only really measure a person's ability to take intelligence tests. > You're paying more attention to it than I am. Yes, but I'm paying exactly the same amount of attention to it as the original poster, with a different perspective.
- truthteller 13y agofrom your link: "The American Psychological Association's report Intelligence: Knowns and Unknowns stated that in the United States IQ tests as predictors of social achievement are not biased against African Americans since they predict future performance, such as school achievement, similarly to the way they predict future performance for Caucasians." so the consensus in psychometrics is that iq tests are not systematically biased against particular groups. and of course it measures a lot more than a person's ability to take intelligence tests". just look at the "social outcomes" section of the wikipedia page...
- RankingMember 13y agoMy IQ is 10 non-standard deviations above and my Mensa membership card is twice-laminated. Beat that. :B
- Double_Cast 13y agoNot only did I ace my IQ test, I suggested improvements through annotations. Also, my Battle School graduation plaque is thrice-laminated. #rekt
- shadowfiend 13y agoRather than focusing on the IQ remark, I'll mention that the entire point of this post is that programming is not just “sit[ting] down to code something”. A program written in a vacuum when you're sitting in your chair is useful to precisely one person at precisely one point in time: you, right now. When you're working on teams, under managers, within organizations, you're working to build something that's useful for other people. One of those other people may, coincidentally, be you, but you are not the only such person. Even more importantly, you're working to produce code that can be understood by other people. But that doesn't require an IQ 3 standard deviations above anything, it requires understanding how the people around you think and how you can put your thoughts in a way that they can understand. Now I'm not saying that there aren't useless meetings in the world, the world is full of them. And your ultimate conclusion is, like Joe Armstrong's, that the difficult isn't in producing stuff the computer can understand; the complexity lies in the fact that it's for people. However, programming without an understanding of the people who will use your program is like a factory worker whose job is putting a screw in the right place on the car. The work is pointless if the end result isn't a car someone wants to use. If we could specify software as easily as a single model year of a single car, we could factory work that software and you could just code without worrying about people. But we don't seem to be able to do that, because software is so malleable that we can't resist the innate desire to reshape it constantly. Anyway, back to the point: yes, the difficult part is the people. But it's also the most important part. Here's a suggestion for avoiding the feeling of wasting time: try to embrace the fact that people are important to the process, and challenge your intellect by trying to understand what those people want and how you can match users' expectations while keeping the overhead for developers to a minimum. It's a hard problem, but once you get your head into it it can be as fun to solve as how to architect an application.
- gaius 13y agoThis is why, when I see 22-year-old kids in interviews claiming 10 years of programming experience, that's a negative signal for me. Commercial programming is solving problems you didn't choose, in a language that's not your favourite, using existing code you didn't write, for people you would never have met outside the job, in less time than you would like. In most real situations writing the code is the easy part, figuring out what it should actually do is the hard part. Claiming 10 years experience only shows that this candidate doesn't even know what experience is.
- platz 13y agoTry programming in a language with dependent types.
- adamnemecek 13y ago> I think programming is easy. What sort of programming do you do?
- notacoward 13y agoA very good question. Anyone who says programming seems deterministic has clearly only been exposed to a trivial kind of programming.
- mannykannot 13y agoAre there no aspects of programming that present any sort of challenge to you? Lockless concurrency? cryptography? The various things that the AI community has been struggling with over the last quarter-century?
- igorgue 13y agoYou sound like a jerk man, I'm as smart as you (and many people here are way, waaaay smarter than you and me together). It took you 25 years to get where you're right now, does that mean programming is easy? It's the total opposite. In most professions you're ready after 4 years of training, in contrast programming not really. I don't know how old you are, definitely older than me, but I really hope you don't tell those things you just commented to "the people" you work with.
- SiVal 13y agoLook, I'm so bright that people can't look at me without wincing. (At least I assume that's why they can't bear the sight of me.) But even after decades of experience, I still find programming difficult. It's not just people issues; it's technically demanding, too. It wouldn't be if I had just gone on writing orbital mechanics software in Fortran decade after decade, getting more automatic with each passing year, but that's not what "programming" means to me. Every decade or so there is a sea change: corporate mainframes > personal computers > database-backed websites > online economy > mobile > ? Within each paradigm, there are new platforms with new languages, APIs, libraries, and tools that matter. Yes, I learned years ago how to manually lay out the logic for looping and branching and recursing and callbacking. Like manual-focus Nikon lenses, they're all still useful today. But it's maddening that the advanced skills that give me leverage in one era are built into the APIs, libraries, and frameworks of the next and no longer give me any advantage. It's maddening that no matter how much I learn, every new team seems full of people half my age who know far more than I do about the tech stack we're using, and I have to wait for the next technology pivot (sometimes more than a year!) to obsolete their advantage and reset the game yet again. Having to rebuild your skillset over and over is both a technical and emotional challenge that makes software development ("programming" in the real world) hard.
- tantalor 13y agoAccording to Leiserson, the qualities of "great software" are, * performance * modularity * correctness * maintainability * security * functionality * robustness * user-friendliness * programmer's time * simplicity * extensibility * reliability * scalability http://www.catonmat.net/blog/mit-introduction-to-algorithms-part-one/ http://www.catonmat.net/blog/mit-introduction-to-algorithms-...
- dmunoz 13y agoI enjoyed this post for one very simple reason: it makes me realize that, no, I am not the only one who dislikes these parts of programming. Too often when problems like those mentioned by Joe are brought up in discussion, the (seemingly) majority of programmers argue that these are just complexities we have to deal with. Perhaps they're just the vocal ones. I admit, it is a pragmatic attitude, but I constantly daydream about an environment, both technical and social, where these problems mostly disappear. Thankfully, we're starting to approach some solutions on the technical side with virtual environments, deterministic builds, etc.. The social side I hope will fall out of having better environments for reproducible behaviour. Although I believe a total solution is technically impossible (at least practically, e.g. requiring total system verification, managed behaviour, etc.), I think we can make a lot of improvements to the environments we currently use.
- Consultant32452 13y agoI have always argued that programming is not "intellectually difficult" (for me) but is rather "emotionally difficult" for a lot of the reasons mentioned in the blog post.
- elwell 13y agoIf programming was 'easy', we would probably be having trouble finding work.
- Ryel 13y agoI don't know whether I think programming is hard or not. I think it's difficult for the fact that it requires a unique way of thinking and it takes a series of consecutive and uninterrupted thoughts in order to form a piece of logic. I cannot even imagine learning programming and not having instant access to learning material/answers to my questions.
- sh4na 13y agoI tried to read the whole thing, but gah my brain just couldn't get past all the spelling mistakes. :-/
- buckbova 13y agoYou should have kept reading: > When I’d finished this article, I wanted to spell check the content. At this particular time emacs-ispell mode decided to that it could not find aspell, the program that I use for spelling checking. Does emacs have a grammar sanity check as well as spellchecker?
- philosophus 13y agoI think that was a little joke.
- tenpoundhammer 13y agoGood Article, I have found the hardest part of software to be the team work. It's hard to agreement on what's right, to write code that other people understand, to understand other peoples code, and generally just to get a good productive team working. In fact a lot of software design is just for making things easier for humans. Otherwise we could have files that are 14,000 lines long.... The hardest part of software is the people.
- killertypo 13y agostrong ideas that are held weakly! I try my hardest to cultivate a mindset that allows people to speak freely and express their ideas and also drop said ideas when a clearly better idea arises. Every idea brought to the table should have a counter argument, we should all carefully discuss the pros and cons of everyone's ideas, and we shouldn't hold so tightly onto a pipe dream because we really want to use xyz tech or because "we're used to doing it x way!" If something is clearly better, safer, smarter, or mitigates risks that another idea doesn't then you need to accept it. I do not care how comfortable you are with your idea. It is time to switch gears and make the sensible choice based on the facts, not your personal bias.
- tenpoundhammer 13y agoSo true, then there is also the fact that some conversations aren't even worth having....
- killertypo 13y agochange conversations to meetings and you've got yourself a huge win.
- Mikeb85 13y ago> Good Article, I have found the hardest part of software to be the team work. This... I'm trying to work with someone whose only programming experience is with IDEs on Windows that hand-hold every step of the way. Something as simple as creating a file, compiling it and running it in a terminal is something he's never done. I've spent more time trying to explain incredibly basic concepts than actually getting anything done.
- yodsanklai 13y agoTo me what is difficult about programming is to deal with huge undocumented and badly written legacy code, and also understanding tons of frameworks and APIs. Algorithms are the easy part.
- abvdasker 13y agoYes. My company's CRM uses a single 2500-line Perl script to handle all of its licensing emails. The script was written by our current VP of engineering in 1998 when our CRM was still built on ActiveX. I started porting this code over to Ruby for our now Rails-based CRM and I am beginning to doubt I will ever finish.
- codygman 13y agohttp://xkcd.com/224/ http://xkcd.com/224/
- 3minus1 13y agoI really agree with this so hard. Especially web programming with multiple frameworks and plugins.
- Kluny 13y agoMaybe take another run at the spell checker problem though. I don't think you fixed it well enough.
- buckbova 13y agoMost difficult part for me is letting go. I am compelled to febreeze every bit of code smell I come across. I often rewrite large sections of working code into better structures, more readable/concise syntax, better naming of variables/functions, etc. and In the process I have at times introduced bugs. But that isn't enough to deter me. I feel like I've accomplished something but in reality I have done nothing. It's kinda like cleaning behind the refrigerator. You know it's dirty back there, but it's not stopping the fridge from keeping your food cold.
- matwood 13y agoOne thing I'm also guilty of is fixing code that I'm not currently touching. I like consistency and having a project with code from old me (and old others) mixed in with code from new me (and new others) really bothers my OCDness. The problem is that changing working old code in lieu of fixing bugs or adding features is just another form of procrastination. There is a time and place for code cleaning. If the code isn't something you are already working in, then leave it. If you are tasked to fix a problem or add something to existing code then cleaning it up is acceptable. Keep mind, I'm assuming there are tests written. Nothing pisses off your co-workers more than cleaning up working code and breaking inadvertently breaking something.
- pattisapu 13y ago"Art is never finished, only abandoned." -Leonardo da Vinci
- isuraed 13y agoThis is a great metaphor for software. There is diminishing returns to refactoring and elegance. Sometimes the open source community goes too far (ever try submitting patches to big OSS projects.. Some are ridiculously picky with minor details like code style.)
- Pacabel 13y agoCode style is extremely important. A lack of consistency with existing code makes both the new and old code harder to work with in the future. And neglecting to maintain a consistent coding style often indicates neglect in other areas, such as correctness and robustness.
- fit2rule 13y agoProgramming is difficult because people are profiting from the difficultability of it. For as long as you can give someone a money-making machine, but say that it will be 'a lot of esoteric work' to make it, grease it, keep it clean .. there will be development work. By the very nature of the business, if you are not improving something, some human-describable human activity, by using esoteric magic, you're probably not that good. If you're making it indescribable in the process of making improvement, perhaps you've been in the business a long enough time to know, the only difference is whether the customer can be bothered to learn the language, or not. Anyone can 'program computers'; computers are a universal language.
- rom16384 13y agoActually I think programming is profitable because of two things: * Not everyone can program * Of those that could program, only a small part of them *want* to program The combination of these two conditions limits the availability of programmers.
- tenpoundhammer 13y agoAnyone can learn plumbing, framing, or drywall too, that doesn't mean we should all learn to do everything we need done. Furthermore it's not feasible or practical for anyone to be a master of everything. This view point overlooks the fact that people don't have infinite time and resources for learning and/or creating stuff. It also ignores the role of specialization.
- cracell 13y agoWhy not? I used to think that specialization was the right path to go on. Learn everything about just a few things. But as I've gotten older I've realized that most skills have far reaching applications beyond the specific task. Learning how to garden has improved my code structure and how I think about relationships and similarities between things from learning about the relationships between different plant species, families and cultures. As well as looking at how they grow (it's very functional). My point being that a lot skills overlap and I think we can master far more than we give ourselves credit for. But because we think it's not feasible few of us open ourselves to the possibility.
- danso 13y agoHere's why I think programming will never get much simpler than it is now...as our stacks and applications become more sophisticated and powerful, so do the relations between the systems...Apple has managed to make things simpler on iOS by clamping down on what developers and users can do, which is one possibility for a "simpler" future. But for those who do want to be developers and have flexibility...complexity will just have to be a way of life. As an example, I recently tried my hand at making a Chrome extension using the Yeoman build tool. It was a simple plugin to allow you, on Reddit IAMA pages, to hide all comments except those from the IAMA subject and their direct questioners, and to also auto-load all comments: https://github.com/dannguyen/iama-highlights-chrome-extension https://github.com/dannguyen/iama-highlights-chrome-extensio... Figuring out how to use the yeoman build tool took about 30 minutes (it's not quite fully developed)...it took about 30 minutes to browse through the Chrome extension documentation and then think of what I wanted to do. About 10 minutes to write the actual jQuery. ...And then about 3 - 4 hours figuring out why the comment auto-loader wasn't working. I thought I could simply just have my jquery activate the "click" event on all "load more comments" links...but a recent Chrome upgrade clamped down on security, effectively sandboxing all extension code and preventing it from executing existing inline JavaScript. IMHO, this is a good security measure. But it just goes to show you that when things are made "easier" (the scaffolding of the extension, the jQuery to do DOM/AJAX work), there are still intractable tradeoffs and details that have to be dealt with...in this case, security.
- philosophus 13y agoI had a similar experience with a very basic Android app I did for a Coursera class. It took me about an hour to finish it, and then 3-4 hours to figure out that the test cases would only run successfully using one particular Android virtual device at a particular API version. It didn't work on any other AVD's or on my phone. This was an exercise designed by a compsci professor at a major university. Who knows how many additional hours would be necessary to determine the exact reason for the error?
- sdegutis 13y agoI think "bad environment" is the worst of all the problems. At first we had no environment, so we had to make it ourselves. A few companies did this, and turned into monopolies. Then we started trying to make free/open-source environments to combat this problem, but they ended up so incredibly scatterbrained that compatibility is a very real and current nightmare. The monopolies are trying really hard to give us good environments, but first of all they come at a cost, which isn't accessible to many (Apple's hardware, MS's software, etc). And secondly they are not community-driven efforts, so we have little control over them. So the battle rages on between the plethora of options I have for a programming environment. Meanwhile I'm just trying to write some simple apps that help me pay the bills (we get dangerously close to not being able to each month) and the competition between environments only slows me down.
- Mikeb85 13y agoFree/open source OSes are great programming environments that leave you in control. As for the compatibility 'problem', install the compiler/interpreter version you need from source, use chroot if you need to, etc... If you're making apps to run on said scatterbrained systems, you can ship statically linked libraries with the app, or use a cross-platform solution (Java, HTML5, something like Haxe, etc...).
- dorkrawk 13y agoI think a big problem with environments is the balance between "having control" and "having to control". Sometimes just getting things set up to the point where I can actually do the work I wanted to do sucks up a lot of gumption.
- sdegutis 13y agoEvery time I try linux, I lose several days in config files, and at the end, it's still not perfect, just "good enough for now".
- jbeja 13y agoAnd thought that i was the only one.
- walshemj 13y agoPrograming is the easy part of the job - getting the customer to agree exactly what is they want is "hard"
- moistgorilla 13y agoMaybe for web development. For everything else... no.
- AnimalMuppet 13y agoI've hit that problem in embedded systems, too. It's not just web development (though it may be worse there).
- walshemj 13y agoActually its all types.
- ng6tf7t87tyf 13y agoI wish it was more difficult, and that the entry to programming jobs was left to those who can actually code rather than the field full of blaggers who currently manage rot get jobs and cannot even code fizz buzz
- w4f7z 13y agoProgramming is hard. Proof-reading? Impossible.
- joe_the_user 13y agoThis article only scratches the surface of the "programming is easy, programming is hard" riddle. It's a big question really, linking up with the "mythical man month" and all the paradoxes that commentators have observed since people began thinking about the process of programming. The way I would put it is that programming gives a person more power to realize their ideas than any other device in existence, in that sense, programming is the easiest thing ever. But since programming put so much power at your finger-tips, it gives you more ways to shoot yourself in the foot than any other activity. So programming while avoiding the pitfalls can suddenly look like the hardest thing in the world. Arguably humans have a natural facility with language. And I am inclined to believe that our ability to produce programs leverages that facility. But again, the upshot is we wind-up with a really big cannon that, if aimed at all wrong, blows our feet clean away.
- duwease 13y agoAmen. When I think, "I love my job", I'm generally thinking about the "easy" part, where the tools are all under my control and well known, and I just have to build something with them using my knowledge of algorithms and architecture. However, the reality tends more often to be: - Frantic Googling trying to figure out the magic code to pass to a black box 3rd party component that will prompt it to spit out exactly what I need - Banging 3rd party components together to see what happens to be compatible - Trying to figure out how to work around the limitations of an API without being too inefficient or complex - Spending 4 times longer on conference calls discussing a problem than actually fixing it
- bryan_rasmussen 13y agoI don't care about the programming, what I want to know is why is using a spellchecker so difficult?
- knodi 13y agoProgramming is not difficult.
- yetanotherphd 13y agoProgramming used to be hard because of the hyper-optimization needed to get things to run. Now programming is hard because of the giant scale of existing open source codebases. It's not just the libraries, it's the toolchains, the build systems, the versioning tools, and that's just the things I've touched myself. Someone once compared classical mathematics with modern mathematics, with the analogy of open pit mining vs deep shaft mining. I think programming has followed a similar trend. Modern programming involves strategically using existing tools, combining them without making major modifications to any of them. Of course, this is just for the individual programmer working on a discrete task. There is still room to participate in or lead large projects.
- bitcuration 13y agoIn short, working with computer is easy, working with people is hard. This is also reflected by salary. It pays to have the skill communicate, influence, or manipulate people. Most programmer job is simply translate others thought to language that computer can understand. Therefore the difficult is never the programming part, but the understanding human being part. Comparing to human ability making computer close to understanding human, civilization has developed much more advanced in manipulate human to think like computer, evidenced by all the gadgets surround us today. Comparing to programmers inventing new ways to make computing smarter or say closer to human, majority of corporate line of business IT programmers are merely temporarily filling the gap between human and computer, but for how long? There is no need exaggerate the Corporate experience, that's a translator job can be easily replaced by cheaper labor and eventually by smarter computer.
- thiloberlin 13y agoWith the words of my mentor at my first programming job: Beginners guess programming is hard. Advanced ones think programming is easy. Experts know programming is hard.
- varg 13y agoGreat post Joe! /patrik.