8 ms·
I 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 d
by benched 13y ago
I 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.