Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Why Programming is Difficult (joearms.github.io)
177 points by krosaen on Feb 7, 2014 | hide | past | favorite | 171 comments


Most 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.


At my current job I was introduced to the notion of 'past you' and 'future you'. I hadn't really thought about actions in those terms exactly, but the act of doing something today so that in the future when you come back to it you'll be in a better position, is the essence of the philosophy.

I have found that taking the time to rewrite the code that finally works into something that I can explain to myself in the future has paid dividends when I came back to it, and when I have not done that, we'll that can be annoying.


I agree.

However, "You know it's dirty back there, but it's not stopping the fridge from keeping your food cold."

If you don't properly maintain your fridge and allow too much dust to build up you could end up burning out the compressor.

Everything needs to be done thoughtfully, in moderation, and with purpose.


Yup, if we want to beat the analogy further, I would say the constant attention to code "smells" and such is like cleaning behind the refrigerator daily when you see dust has landed. I think there is a great middle ground, where you actually consider the possibility that the improvement to the code will be a net loss (time investment to improve code and time it saves in the future). Lots of books about this, many people don't get the full theories, and instead take the talking points (x lines of code per method, don't do Y, do Z, etc).


The analogy falls apart when you consider that:

1. Fridge dust compounds linearly with time. Technical debt compounds faster the more technical debt you have.

2. Most of us aren't in the fridge business. The downside of a burnt out fridge is probably a lot lower than the downside of a terrible code base.


Technical debt only compounds if you're building on top of it. A module that is written once and never needs to be modified doesn't get any worse over time. Therefore, once it is working correctly, there is no point in wasting effort to clean it up until it needs to be touched again.

Note that I assume basic documentation, proper naming conventions, and adequate testing are part of "working correctly". Those are the things you do as you write the code initially. It's the refactoring/rework/gold plating that you leave for later, only if you need it.


One 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.


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.

That's sort of like throwing a punch so hard that you throw yourself off balance.

I would suggest that you take that energy and first write unit tests or a code coverage tool or an assertion framework that doesn't intrude on production. (I've done all of the above, but I may have been "cheating" by using a language with exceptional access to the meta-level.)

This would allow you to refactor with greatly reduced introduced bugs. That would be more like keeping your balance thus staying in a good position to exploit an opening.


This happens to me too, but I try to take a more optimistic look at it. I've found that code that I've written that turned into a monstrosity is code that I'll rarely want to touch again. If I don't want to touch it, then I'm less likely to add (or remove) features, fix bugs, etc.

But if I find the time to clean that code up---make it simpler and clearer, usually---then I find that I'm no longer fearful of touching that portion of code. I'm reinvigorated to fix bugs, add/remove features, etc.

So yeah, while the intangible effect is, "oh I've made the code simpler that really does feel good," I've also found tangible effects because I'm more motivated to work with that code in the future.


> 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.

I can absolutely relate to that. It has happened that I find code so terribly written that needed to be modified. As nobody on the team actually understood how it was supposed to be working, I ripped it out, and rewrote it in a cleaner way. I knew this may introduce regressions, but I knew the modification I had to make would very likely do the same thing. But if there were going to be bugs, I'd rather have them come from a maintainable codebase.

> You know it's dirty back there, but it's not stopping the fridge from keeping your food cold.

Unfortunately, the more technical debt you accumulate, the more difficult it is to change anything. So, yes, enough dirt will eventually lead to "we can't do X because it's too risky/too much work". Ideally, we should all do some refactoring every week.


I feel the same way, only I usually end up packing up those nice refactorings and tucking them away. I do not want to introduce a live site bug while trying to make things "nicer."


I've had the same problem at times. It's kind of a mental masturbation; adding more abstract structures and more higher order functions.

Need to strike a balance between Get Shit Done and leaving behind code that isn't a pain to maintain.

In fact, often the kind of abstractions I've created when I'm in that masturbatory mode described above, it turns out that the abstractions aren't worth it in the end because they're only used once, and it doesn't actually make the code cleaner or easier to maintain going forward!


Yes, that's my experience as well! I'll carefully design code so that it can be extended and then find out I need to extend it in an orthogonal way I hadn't imagined, and my "extensibility" completely gets in the way. I've eventually just settled on, "build something simple and extend it when needed."


Isn't that what unit tests are for? I seem to recall the original XP practices mandated unit tests mostly as a way to allow the programmer freedom to refactor without fear of breaking code.


Same here. My solution: address only the projects that really matter and to hell with the rest. The ones that matter you make perfect.

For example, I presently dance around about 6 projects. Only one really matters.


"Art is never finished, only abandoned." -Leonardo da Vinci


This 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.)


Code 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.


My latest addition to the never-ending TODO list : stalled project refactorings.


Good 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.


strong 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.


So true, then there is also the fact that some conversations aren't even worth having....


change conversations to meetings and you've got yourself a huge win.


> 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.


Taking a day to teach someone an entirely new (and arguably extremely backward) workflow is exasperating to you?


It's not about the workflow - it's about the fact that things like compiling files, linking libraries, are kind of basic concepts.

For his prior apps (flash) he created objects using only a graphical interface (never wrote a single class), and the 'program' was a single 9000 line file where everything (all vars, functions, etc...) was in the global namespace with absolutely no organization, encapsulation, etc...

Anyhow, for someone who claims to have been programming for 10+ years, I'd expect some understanding of how the underlying technology works, how languages and compilers work, etc...

I mean, I like convenience as much as anyone (my Vim setup behaves like an IDE with code completion, automatic compiling, etc...), but knowing the command line is a good thing when the app you want to build involves a Unix-y server...


Look, "someone only using IDEs with windows" is nothing like what you just described. You gave us all the wrong facts in the initial comment. You've identified all the wrong facts as important.

Your fellow is abnormal to the extreme. That he's never met anyone in 10 years to tell him drag & dropping is not programming is one thing.

Making your description match a good proportion of C# developers or even Java developers just shows your irrational bias against types of programmer you obviously view as inferior.

The problem is not that he's using an IDE, the problem is he's not a programmer.

Bloody luddites clinging to their consoles.


> That he's never met anyone in 10 years to tell him drag & dropping is not programming is one thing.

It's not drag and dropping, it's using a 'visual programming' tool that the environment encourages.

> The problem is not that he's using an IDE, the problem is he's not a programmer.

I wouldn't disagree, I like IDEs myself. I even use automatic completion in my word processor. The problem is that he never learned the basics.

> Bloody luddites clinging to their consoles.

It's funny how things always come full circle - search is the big thing now, everyone has an interface based on search. Windows 8, Linux, OSX, Android, iOS, everyone.

We enter http addresses into our browser, and search for things using (gasp) text, but using the command line makes one a luddite. Great logic that...


A civilian pilot with 10000 flight his logged is not the same as a fighter pilot with a 1000.

Don't mistake quantity of experience with quality.


Yikes, you may want to join a support group.


Here'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-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.


I 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?


I 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.


Free/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...).


I 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.


Every 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".


To 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.


Yes. 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.



I really agree with this so hard. Especially web programming with multiple frameworks and plugins.


Programming 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.


> Programming is difficult because people are profiting from the "difficultability" of it

That's backwards. Not "anyone" can program computers. Anyone can try, but most will fail. Just like "anyone" can "do math" or "do chemistry" or "do anything", but most will fail. The reason programming is lucrative, whether as an employee or entrepeneur exploiting programmers' labor (or supplying their own technical labor), is exactly because not everybody can program well enough to meet a market need.

It's a curious thing, this misplaced, or in some cases faux-humility about programming, or any other academic/intellectual endeavour. It dovetails very well with certain business interests who would love for nothing more than programming to be as commoditized as, say, janitorial work is. These interests are definitely getting their wish in some areas (e.g. web/mobile development).


I see programming mostly as janitorial work. Why? Because it's mostly complex rather than hard. Of course "real programmers" are upset with RoR jockeys when it turns out businesses pay for delivered value rather than technical complexity.


Janitorial work isn't "complex" in any way that approximates programming--even the programming that "RoR jockeys" do. If the two were on the same level of complexity, "RoR jockeys" wouldn't be paid as well as they are. And, yes "real programmers" earn more than "RoR jockeys," because what "real programmers" do is both more complex and harder. But I think calling them "RoR jockeys" or implying they aren't "real programmers" is both wrong and juvenile. Otherwise I don't think you've written anything that conflicts substantially with what I wrote.


>It's a curious thing, this misplaced, or in some cases faux-humility about programming, or any other academic/intellectual endeavour.

Programming rewards the rational, and compilers and bugs have no sense of survival that would make them relent in the face of intimidation. So programmers deal with compilers and computers on their terms: the unfailingly rational.

Humans are not computers. Humans do respond to intimidation---or rather, they respond to relative intimidation. Programmers are carrying tweezers in the fencing societies that corporations are.


Anyone 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.


Why 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.


I agree. I think music and sports consciously impact your code as well. Skills with a mix of creativity and endurance are going to affect the way you think about problems, in general.


> Anyone can 'program computers'; computers are a universal language.

If that were true, programmers would be making minimum wage and would be ranked alongside people who wash cars.


And that is in fact how it is in many parts of the world.


Actually 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.


> Anyone can 'program computers'

No they can't. Anyone can try, most will fail, because few are suited for it.


> Anyone can 'program computers'

Often with the most hilarious results.


Amen. 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


Programing is the easy part of the job - getting the customer to agree exactly what is they want is "hard"


Maybe for web development. For everything else... no.


I've hit that problem in embedded systems, too. It's not just web development (though it may be worse there).


Actually its all types.


According 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-...


This 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.


I 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.


I 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.


Programming is hard. Proof-reading? Impossible.


I 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.


In 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.


Programming 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.


With 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.


Maybe take another run at the spell checker problem though. I don't think you fixed it well enough.


I tried to read the whole thing, but gah my brain just couldn't get past all the spelling mistakes. :-/


You 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?


I think that was a little joke.


I don't care about the programming, what I want to know is why is using a spellchecker so difficult?


If programming was 'easy', we would probably be having trouble finding work.


Great post Joe!

/patrik.


Programming is not difficult.


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!"


When 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-Const...


Spot 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...


You 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.


Rather 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.


This 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.


Well there's professional experience and non-professional/hobbyist experience. In your interview you should probably clarify that. They're both different but I think there is value to the things teenager might have learned working on some toy project.


Sure, and I value that, it's how I got started myself. But the experience of working on your own projects only translates to a fraction of the work a professional programmer does.

10 years experience would put you at the level of a lead programmer, or an entry-level architect.


Well, sure, and ten years' experience working for some other company with their technologies and in-house legacy code, libraries, design methodologies, and idiosyncratic ways of using even open source tools is not ten years' experience anywhere else.

A 22 year old with ten years of programming experience has ten years of experience doing what he's been doing. He may have built a Mongo-based sports statistics website for his high school. A 32 year old with ten years of corporate dev may have been creating in-house database utilities for MegaCorp's 20 year old Oracle customer database. He's had ten years of corporate database development experience. Is his experience clearly more suited to a Mongo-based startup selling hats to sports fans because his experience was corporate?

Or is it not a matter of corporate vs non-corporate experience but just how much experience doing which of the things we need someone to do?


Regardless of age, I'd much rather take the developer with experience using one or more relational database systems. It's much easier and effective for them to downgrade their knowledge and experience to the MongoDB level than it is for somebody with only MongoDB experience to upgrade to a proper understanding of database systems.


Part of the "corporate experience" is working with teams on existing code under strict deadlines. That's not something you can just learn on your own, unfortunately. I would, hands down, take the 32-year-old in this scenario (all else being equal).


Fair enough. I just felt like that was probably something I was guilty of when younger. If you have no pro experience and you are asked that question then your most likely instinct is provide a number and base it on hobby projects. Later on you realize there are other ways to answer such a question :).


> In most real situations writing the code is the easy part, figuring out what it should actually do is the hard part.

true that. i said more or less the same thing myself shortly after starting work at a big company. just replace "real" with some variation of "business" or "corporate."

not that there's anything wrong with making money or working at large corporations, but just like a 12-year-old might not have any idea what corporate experience is, someone who learned to program at school doesn't know what the experience of mowing lawns in order to buy a compiler is like for kid.


How do you know you're not underestimating what a 12 year old can do?


because labor laws.

He's talking about work experience and that requires a work environment. Not the semblance of one.


As long as you're creating something, what's the difference?

Are you not an artist if you've only painted things for your own enjoyment, and never any commissioned worrk?


The differences is that an artist doesn't have to worry about maintainability, scalability, orthogonality, or any other such concerns.

Art is art, code is code. Art is beautiful, code is clever. They are different.


More like: are you not an auto mechanic if you've only worked on your own car, tricking it out in ways that you enjoy?

No, you are not an auto mechanic.


yes try holding together a crufty pile of code that is your companys old billing system.

And when you have your first 1,000,000 month you CTO (who i think reported to vint cerf ) nudges you saying this had better be right or we are both of a job.


> Commercial programming is solving problems you didn't choose, in a language that's not your favourite, [...]

Programming jobs in software business definitely do include many where you can greatly influence the problems you work on and tools you use.

Maybe your applicants were looking for that kind of place (as would many on HN).


Maybe the kid has been contributing to open source projects? It seems like there are a lot of teenagers sending pull requests to prominent Github repos these days.


It's possible to have experience, but 'work' experience on a resume implies professional (paid) time.

Which in most places is illegal at 11 years, so it comes across to me as resumé padding.


It's perfectly fair and legal to claim unpaid, open source programming experience on a resume.

The comment I was replying to didn't say "professional experience," just "programming experience." I was responding to this:

This is why, when I see 22-year-old kids in interviews claiming 10 years of programming experience, that's a negative signal for me


Wow, the IQ thing really got under peoples skin, but I think his point is that the hard part of being a really good programmer is dealing with all the bullshit that managers invent to keep the mediocre programmers on the straight and narrow.

Problem being, those efforts essentially make one programmer indistinguishable from another by putting shackles on everyone. I admit there's a certain logic to it, building a business that's dependent on one person's talent can be dangerous. Better to make people interchangable.

All the same: Can you imagine John Carmack writing Doom back in the 90s having to deal with what most coders have to deal with nowadays (With all the "agile")? "No sorry John, you can't commit your highly inventive code without a proper story. We're going to need to have a planning meeting on this and size up story points. Please take a defect off the list. We don't need any heroes or cowboy coders."


I have to object that there is seriously more to project management than keeping the "mediocre programmers" in line.

I mean, there are overly ambitious programmers that do have to be reigned in, there are people held back by whatever structure you might and many variations of this.

And code has to be appropriate for it's purpose. I'm sure the code for Doom is great for Doom. If it is "cowboy code", it's probably not what anyone would want for an inventory control program that will be passed to someone else in six months.


But that's kind of the point isn't it: project management, and especially agile, is about making work predictable. There's an undeniable business logic to this that I wouldn't refute.

Yet works of greatness are almost never predictable. You can't reign it into story points or whatever. There's too many false starts, or sudden insights. It certainly takes process and discipline, but not necessarily the kind that can be measured and reported.

That's probably fine for most business, because your inventory control program doesn't need any individual brilliance; but I think it can be frustrating for really good programmers because they do want to create a work of greatness.


Yet works of greatness are almost never predictable.

Actually, most great artists work with a lot of constraints. There are many great realist painters who accept the constraint of realistically representing the world. Any programmer works with the constraints of the machine.

And working in the constraints of project management and multiple-person provides plenty of room for creativity I would say. Yes, you have the constraint of the code working and you have the constraint of the code being understandable. You might even have the constraint of telling the other programmers how to do the difficult thing you can do and they can't. Greatness is possible there given that greatness is possible with code that compiles as opposed to code which is merely unpredictable.

And project managers are always happy to have people finish faster than expected.


> 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

> 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.


I 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.


> I don't agree.

Evidence trumps opinion.

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.


>> I don't agree.

> Evidence trumps opinion.

I understood the parent to be saying that they disagreed that "someone that smart would have known IQ is bogus", not that they disagreed that "IQ was bogus".


> I understood the parent to be saying that they disagreed that "someone that smart would have known IQ is bogus", not that they disagreed that "IQ was bogus".

Yes, and because of how the post was worded, we may never know. I suspect (and acted on the idea that) he was disagreeing about my claim about the veracity of IQ testing, but that's just a guess.


I think the wording is reasonably clear, and you are misreading it. "I disagree" alone tells us little, but all of the support below seems to serve much more strongly to justify disagreement with "you should know ..." than with "IQ ..."


No, actually, below the ambiguous "I disagree", we find "I've never used my IQ as justification for anything, granted, but I had no idea it wasn't considered a solid measurement." That seems clearly to point to a disagreement with the presumed objectivity of IQ testing, not its application to the OP.


Well, apparently it is not clear, because it seems "clearly" to me to mean the other. You are taking "I had no idea that X" to be a claim of "not X"; I think it is a claim that they had no idea that X - and the pragmatic purpose of this in the conversation was "... and therefore, I don't think having no idea is crazy". I think your interpretation in this context is - at least - uncharitable.


> Well, apparently it is not clear, because it seems "clearly" to me to mean the other.

Let's look at the original exchange. The person to whom I replied said, "I've never used my IQ as justification for anything, granted, but I had no idea it wasn't considered a solid measurement."

I replied, "It isn't remotely a "solid measurement", in fact it's a field surrounded by justified controversy on multiple grounds" ... and more in this vein.

How is that in any way ambiguous? It's a discussion of the credibility of IQ testing.

> I think your interpretation in this context is - at least - uncharitable.

My interpretation is based solely on the words used in the exchange. Charity has no role.


Again, "I had no idea it wasn't considered a solid measurement" does not mean "I am asserting it is a solid measurement". It is quite obviously not the same statement (use of the past tense, for one - they make no claim about what ideas they have now), "from the words in the exchange". It is true that sometimes "I had no idea that X" is used to mean "I don't believe you that X." It is also frequently used sarcastically to mean "obviously X". But from context, I think the statement was quite literally a statement that they had no idea. This was relevant because, again, you had just asserted to someone else that it was unreasonable to have no idea.

Lastly, charity has a role in any conversation - particularly those involving disagreement. If your conversation partner might be saying something stupid or something reasonable, taking the reasonable interpretation or checking what they meant produces better conversation. I myself would sometimes do well to remember that, in the heat of discussion.


wow.


Yeah. I want everyone give themselves a pat on the back for the quality of this discussion. Jeezas.


You are not being ambiguous. The poster who replied to you did not want to engage in an exchange with you, so he retreated from it - thus his use of the past tense "had" in reference to his prior belief. Given that every argument he provided referred to his not caring about the importance of whether IQ matters, I think this is the only reasonable way to read his post.


from 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...


> 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 ...

The flaw in the reasoning should be obvious to anyone but a psychologist -- the test outcome becomes a self-fulfilling prophecy, rather than an unbiased predictor of future performance. The contempt for science among psychologists is shocking.

> so the consensus in psychometrics is that iq tests are not systematically biased against particular groups.

Psychologists also came to a consensus among themselves (and, as usual, without any scientific evidence) that Asperger's was a real mental illness, and that Recovered Memory Therapy was a real therapeutic method. Fortunately, and to some extent because of these credibility issues, society is in the midst of dumping psychology as a serious endeavor:

http://www.nimh.nih.gov/about/director/2013/transforming-dia...

In summary, until there is some science in brain research, all this talk about IQ testing is overreliant on effects without any clue about causes -- on descriptions without explanations.

Notice the name of President Obama's recently announced program -- the "Brain Initiative", not the "Mind Initiative". The handwriting is on the wall.


the point is that they predict future performance equally for different groups, not just that they predict performance. your language is alarmingly exaggerated and pompous for someone who lacks basic reading comprehension skills and is entirely ignorant about the subject of intelligence testing.


> the point is that they predict future performance equally for different groups ...

That is false, and its falsity has been proven repeatedly.

http://en.wikipedia.org/wiki/Intelligence_quotient#Test_bias

Quote: "However, IQ tests may well be biased when used in other situations. A 2005 study stated that "differential validity in prediction suggests that the WAIS-R test may contain cultural influences that reduce the validity of the WAIS-R as a measure of cognitive ability for Mexican American students,"[123] indicating a weaker positive correlation relative to sampled white students. Other recent studies have questioned the culture-fairness of IQ tests when used in South Africa.[124][125] Standard intelligence tests, such as the Stanford-Binet, are often inappropriate for children with autism; the alternative of using developmental or adaptive skills measures are relatively poor measures of intelligence in autistic children, and may have resulted in incorrect claims that a majority of children with autism are mentally retarded."

Just one sample from a large literature on this topic.

> your language is alarmingly exaggerated and pompous for someone who lacks basic reading comprehension skills and is entirely ignorant about the subject of intelligence testing.

Nice argument. Do give us more samples of your logically flawed reasoning. The readers of this forum will surely appreciate your credibility sacrifice.


FWIW, you're replying to Paul Lutus: http://www.arachnoid.com/administration/ ; I think you can assume he can read.


"the mismeasure of man" is a garbage book by the noted fraud and liar steven jay gould. it certainly should not be used as any sort of reference on intelligence testing.


I don't know enough about The Mismeasure of Man to say whether it's correct or not, but Steven Jay Gould is about as eminent a biologist as there has ever been. The allegation that he is a "noted fraud and liar" is a pretty gross mis-estimate his work, and my personal opinion is that a misapprehension at this level makes it very unlikely that you have good reasons for believing what you do. To casual lurkers: what the user "truthteller" has just said is essentially alarmist garbage, and you should regard their claims with skepticism of a pretty high degree.

In the future, note that calling someone a "noted fraud and liar" is a very serious claim, and you should think carefully about who you level it against. It's powerful language, but used against the wrong person, will make you look silly, and not them.


I've seen truthteller's comments before. He should probably be hellbanned but he's flown under the radar for some reason. He's been around for 119 days, has tons of comments and only a comment karma of 37.

Look at this gem:

https://news.ycombinator.com/item?id=6678987


are you some sort of indian nationalist?


You called India a "shit hole". The entire country. Do I have to be an Indian nationalist to not see that kind of a comment as inane? If you had some kind of comment to make about the positive side of British Raj and the crown's denial of Indians right to govern themselves, it probably required maybe a less "shit hole" of a comment.


> "the mismeasure of man" is a garbage book by the noted fraud and liar steven jay gould.

When you post like this, do you ever stop to think how you're making psychology and its supporters look?

http://en.wikipedia.org/wiki/The_Mismeasure_of_Man#Awards

Quote: "The first edition of The Mismeasure of Man won the non-fiction award from the National Book Critics Circle; the Outstanding Book Award for 1983 from the American Educational Research Association; the Italian translation was awarded the Iglesias prize in 1991; and in 1998, the Modern Library ranked it as the 24th-best non-fiction book of all time.[10] In December 2006, Discover magazine ranked The Mismeasure of Man as the 17th-greatest science book of all time."


the opinions of ignorant journalists are not really relevant. it was strongly criticized by experts in the relevant area. do you realize how intellectually lazy you look when you form strong opinions on subjects without even doing basic research first?


> ... without even doing basic research first?

If self-reference were a disease, you would be in an emergency room. You know nothing about me or the research I have conducted, apart from the fact that your argument represents an all-too-common logical error.

> the opinions of ignorant journalists are not really relevant.

> it was strongly criticized by experts in the relevant area.

So, which is it? Did journalists decide, or did experts decide? And do you know why neither of those sources carry weight in science, a field where evidence trumps eminence?

Do you know why I'm playing you along, even though you have nothing to contribute to this discussion? I just want the readers in this forum to see what passes for reasoning among psychologists and their supporters.


at this point you are just embarrassing yourself with your weird crusade attack "psychologists and supporters". I'm sure most readers in this forum feel intuitively that mental ability can be measured with some accuracy, so I doubt you will convince many people. and anyone who cares to look will find a vast psychometric literature that supports the validity of IQ.


> I doubt you will convince many people.

I don't need to. The director of the NIMH already agrees with me, and high-level policy changes are under way to permanently change the status of psychiatry and psychology, demote them to the status of astrology. Didn't you get the memo?

http://www.newyorker.com/online/blogs/elements/2013/05/the-s...

> ... anyone who cares to look will find a vast psychometric literature that supports the validity of IQ.

Yes, that works for people suffering from a bad case of confirmation bias, and who can't grasp basic scientific principles. The rest of us will continue practicing science and advocating in favor of neuroscience as psychology's obvious replacement.

IQ testing will become valid only when it is based on science rather than anecdote. Assuming that ever happens.


Most of the stuff in The Mismeasure of Man regarding Morton's skull research was wrong. http://www.plosbiology.org/article/info:doi%2F10.1371%2Fjour...


For anybody reading this in the future, "truthteller" isn't the voice of reason in this thread, he/she is a troll.

The link above by defens is a legitimate criticism of The Mismeasure of Man and is well worth reading. It doesn't speak to the overarching theme of the book, which is it's attack on the goals and the content of intelligence testing, but to a mischaracterization that Gould made of the conclusions of someone else's research, turning them into a bit of a straw man representing subconscious testing bias. It definitely weakens Gould's case in that regard.

The book is still an amazing hidden history.


> The link above by defens is a legitimate criticism of The Mismeasure of Man and is well worth reading.

I agree completely -- the Gould book was an important contribution to the debate about IQ testing, and it contained a number of errors. Both of the above statements are true -- indeed, it's rare for such an important work of this scope to be error-free.

It's my hope that, as psychology is replaced by neuroscience (a process now under way), the role of opinions will be substantially replaced by scientific evidence, which until now has been in deplorably short supply in this field.


You might disagree with him but calling him a fraud is uncalled for. He was a respected biologist and has had over 65 thousand citations to his work.

http://scholar.google.co.uk/citations?user=kALUT54AAAAJ&hl=e....


Paraphrasing 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.


And this attitude is why humanity is doomed. Smart people sit in private and we are governed by idiots.


Technical 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!


Nixon was a genius


Do 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.


I find it a little amusing that you would talk about social and emotional intelligence, right after you directly accuse someone of having a superiority complex.

No one cares what vis IQ is, but they care how good ve is at programming, and ve attributed vis programming ability to vis IQ. Do you think that connection is false, i.e. that there is only weak correlation between programming ability and IQ?


As soon as I read OP's sentence about his IQ, I knew someone would respond, showing their lack of emotional intelligence by attacking him over it.

Thread did not disappoint.


I 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.


I 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.


The 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.


I 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".


http://www.paulgraham.com/disagree.html - disagreement level 0 or 1, you're just throwing insults without addressing their position at all.


Straight shooters are great, but you will NEVER have a positive reaction when you talk with people about your IQ. Especially when 145 is so much higher than most. If you have a 145 IQ and you mention it to 1,000 people, you've just pissed off 998 of them.


Look, 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.


You 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.


After 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.


Part of the job is helping others understand what you do, in a way that's convivial and not condescending.


I 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.


I 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.


It seems to me that the more common problem is programmers willfully refusing to understand what people who aren't programmers do.


> 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.


I 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.


Programming is easy. Software development is hard (and there are lots of pieces of software development that don't involve programming.)


Are 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?


Being 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).


My IQ is 10 non-standard deviations above and my Mensa membership card is twice-laminated. Beat that. :B


Not only did I ace my IQ test, I suggested improvements through annotations. Also, my Battle School graduation plaque is thrice-laminated. #rekt


"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?


Did you really just create an account to insult someone?


I did and Hacker News made it so easy!


Try programming in a language with dependent types.


> I think programming is easy.

What sort of programming do you do?


A very good question. Anyone who says programming seems deterministic has clearly only been exposed to a trivial kind of programming.


Just because you feel things are easy doesn't mean you're doing it right ;)

http://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect


Just because the Dunning-Kruger effect exists doesn't mean that skilled people who can accurately self-assess don't also exist.


Just because a possible alternate explanation is put forward does not imply that explanation is deemed probable. It can simply be more information to consider.


And thought that i was the only one.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: