skysight-inc/HackerNews huggingface dataset:
One thing that I would like to point out is, being financially successful and extremely competent programmer are two different things. An example Zed Shaw is an extremely good programmer, but if you read his legendary rant "rails is ghetto" you come to know besides being an extremely great programmer he had to struggle financially.

So being a good programmer is not synonymous to having your bank accounts with decent zeroes following some non zero number.

Incidentally, yesterday I was talking to a programmer who had been coding for 17 years, he codes bots for games in C++ when not coding other stuff. He did not take his degree seriously, and today is looking for an MNC to hire him, so that he gets married, for the chic wants a secure life.

What did the good programmers do differently? Its a difficult question to answer. Having said that, couple of things are:

1. starting early

2. getting lucky

3. focus and hardwork

4. marketed themselves properly

5. surrounded themselves with better programmers, to get better at it.

6. capitalized on the opportunity of solving a tough and challenging problem.

ending on a pragmatic quote: passion burns out, what sustains is greed. (taken from "Do you want to be doing this at 50")
Where'd You Get That Cool Shirt? This Software Knows
> then you'll need to provide some more details on that.

The scientific burden is not mine to show that the article reports a correlation and nothing more, the burden is on the authors to show that that they have demonstrated a cause-effect relationship. And based on their study design, they wouldn't dare -- they have no way to distinguish causes from effects, as you would know if you actually understood the article and the study it reports.
Campaigns Use Social Media to Lure Younger Voters
Three kinds of defaults
For algo/datastructures, CLRS (http://www.amazon.com/Introduction-Algorithms-Thomas-H-Corme...) is the gold standard.

For OS's, Tanenbaum (http://www.amazon.com/Modern-Operating-Systems-Andrew-Tanenb...) is popular.

'Math' is broad - if I can recommend only one book to cover all of Math I'd probably say 'The Road to Reality' (http://www.amazon.com/The-Road-Reality-Complete-Universe/dp/...). More practically (for the subset of math most programmers are likely to care about), you'll do fine with one good discrete math book and one linear algebra book. Throw in one each on Stats, Abstract Algebra, Calc (up to ~diffeq), and Real Analysis (in roughly that order) if you're a bit more ambitious ;-)
This is partly true, but mostly unhelpful.
I use these kind of questions in interviews. You either know the answers or you don't. There's no looking at your 'phone in an interview (at least not one with me being the interviewer).
An interesting side project of this would be describing how the difference between O(2^n) and O(3^n) or knowing what the heap operations are have been needed in your job.

And, since I'm asking already, I'd also like to know why you needed to know the information "on-the-fly" and couldn't have gotten there almost as easily with a quick refresher.

For example, I don't remember all the heap operations by heart but, if I needed to select a data structure for a critical task, I would go fetch Cormen and Skiena (the books, not the people) and get a quick refresher.
You need to find engineers who understand the stuff AND can also speak clearly. Or can train to improve in either.

I realize many engineers are not good at speaking to general audiences since they might use jargon or are really slow, stutter etc.. Probably they can improve a lot if you pay attention to it and consider it important and devote the necessary resources like time and money.
Just to get the facts straight, the linked article had this to say:

If you can't answer the majority of the questions on these four papers, and you're working or intend to work as a software developer, you should ask yourself why — most likely you're either you're missing something you really should know, or you're lucky enough to be working within a narrow area where your deficit doesn't matter.

The reader can judge for themselves whether this is claiming that "people who don't know the answers shouldn't be programmers." I personally find that characterization rather rude toward the author.
A logarithmic image transformation
This sounds like you are literally unable to identify the controversy... Is that the case? Or is it that you think it's totally appropriate to arrest somebody for making a crude joke which some people find offensive?
Instead of "Trends for Websites", you can use "Google Ad Planner " https://www.google.com/adplanner which has more detailed traffic statistics.
I think this is a common theme - technical people who also have business skills are more likely to succeed; business people who have technical skills are similarly more likely to succeed.
>> Correlation is not causation

> You speak from experience?

It's not as though I invented this idea:

http://en.wikipedia.org/wiki/Correlation_does_not_imply_caus...

> There is strong orthogonal logic that supports the hypothesis that simulated violence is effective in generating, inducing, and manipulating aggression in human subjects.

There is no evidence whatsoever to support a cause-effect relationship such as you suggest. If a study were to be designed that could uncover such a relationship, it would violate experimental ethics and would not be funded.

And your link offers no scientific support whatsoever for your claim. It's an opinion piece, not a scientific study. It offers precisely zero evidence in support of its opinions.
"Starting early", super important!
"Getting lucky", yes - both in time and in income - striking gold is not much worth if you can not step up on the possibility - and sadly, for many, having kids or a ill parent, or loosing a steady income is to big a obstacle to tacle... Meaning, you might not have that many a year to live that, wild, frivolous, entreprenourish life...
40 Things To Say Before You Die
Working link http://nyti.ms/PPadsD
Exploring Perl 6 through its Modules (video from YAPC::Asia 2012)
> Why would it be unethical if people voluntarily agree to participate?

12-year-olds? The study we're discussing examines the behavior of minors. Minors cannot give the kind of consent you're suggesting.

Also, the sort of strictly designed experiments that might turn psychology into a science, are extremely expensive and not likely to be funded. The reason? Research standards in psychology are so abysmally low that a well-designed study would be so expensive by comparison that the granting agencies would refuse to fund it.
I haven't looked to see if every question is covered by these, but here's some standard textbooks I like:

Algorithms and Data Structures:

http://www.amazon.ca/Introduction-Algorithms-Thomas-H-Cormen...

http://www.amazon.ca/Algorithms-4th-Robert-Sedgewick/dp/0321...

Computer Architecture and Operating Systems:

http://www.amazon.ca/Computer-Architecture-Quantitative-John...

http://www.amazon.ca/Design-Implementation-FreeBSD-Operating...

Mathematics:

http://www.amazon.ca/Calculus-James-Stewart/dp/0495011606

http://www.amazon.ca/Introductory-Statistics-Prem-S-Mann/dp/...

http://www.amazon.ca/Introduction-Mathematical-Cryptography-...

Networking and Systems:

http://www.amazon.ca/Computer-Networks-5th-Andrew-Tanenbaum/...

http://www.amazon.ca/Database-Management-Systems-Raghu-Ramak...

http://www.amazon.ca/Distributed-Systems-Principles-Andrew-T...
Well that's great, but it still doesn't provide a clean API to C# does it? So it can't really be a replacement for XNA?
> To reiterate, programmers that become successful do it by having skills beyond programming -- they know how to present themselves, they know how to negotiate, and they earn a reputation for reliability.

Apart from those, being able to build the right app at the right time helps too.
Jonathan Worthington's slides: http://jnthn.net/papers/2012-yapcasia-modules.pdf

Modules referenced in Jonathan's talk:

* https://github.com/moritz/json/

* https://github.com/jnthn/grammar-debugger/

* https://github.com/jnthn/zavolaj/

* https://github.com/jnthn/rakudo-debugger
Or you use an interpolation algorithm optimized for down-sizing.
If you can't differentiate between living in a democratic economy and a capricious dictatorship, then it really isn't me who has a question to dodge.
I just wanted to add that I felt Tanenbaum's Modern Operating Systems was a tad light on some of the core topics (especially when trying to get a good grip on the issues behind concurrency). I personally recommend the book by Silberschatz: http://www.amazon.com/Operating-System-Concepts-Abraham-Silb...

I also think for understanding how operating systems work, nothing beats writing your own! I learned most of the concepts by building a toy OS during the better part of my undergraduate studies. I highly recommend this for people who like coding and are afraid of jumping into the theory too quickly. For example, analyzing memory allocation algorithms is never as interesting as when you have to pick one for your own kernel!
XNA C# != DirectXTK C++

Or did I miss something?
When the original iPhone launched, the mobile browser wasn't anything like as good as it is now, and it regularly blanked pages when you switched to other apps. Even just offline support was a huge thing to have, and you could only get it in an app.

Hence the bandwagon.
Great post. I think there's a huge selection bias when someone drops the kind of names the OA did. All those guys had hugely visible successes, but it's hard to know how replicable any of that is. Given equal skill to Carmack or Hickey, I don't see a brilliant guy having a reasonable chance at writing the next Quake or Clojure. Those successes are black swans.

There are a lot of guys making $250k or more working on some obscure B2B product or enterprise team somewhere. Just because we don't hear about them doesn't mean they aren't just as happy or find as much meaning in their work, and it's certainly a lot easier to optimize for if that's what you want.

That said, I think programming is a bit like a professional athlete in that you can't have a great lifelong career by sticking purely to the technical aspects. You need to be learning how your skills apply to real businesses and building your network. Fortunately I think these things happen naturally to some extent, but it can't hurt to think about them.
16 in the first 1.5 hours.
Oh, he forgot to send it to me too. I'll poke him!
Yeah, bad example there. The asymptotic running time of the heap operations, or quicksort runtimes, for example, though, were more like trivia, even though you can basically get them if you know the algorithms and reason about them a bit.

I know the running time of quicksort offhand, but I'd still consult wikipedia on the off chance I'm wrong.
Last time I checked this article was about the CIA. One of the commonly accepted jobs of 'CIA' is someone who maintains the existing order and power structures. You won't make many friends in he CIA if you go against it.
I guess it depends if you interpret:

> you should ask yourself why

As referring to "you can't answer the majority of the questions" or "you're working or intend to work as a software developer". I read it as the latter, but I guess it could also be read as the former.
> It's easy to dismiss a field when you compare a complicated problem to an easy problem, and then object to a lack of answers for the complicated problem, because there are so much more and better answers for the easy problem.

Psychology is not dismissed as a science because it's complicated, it's dismissed because it's not science. The fact that it's complicated is irrelevant to its standing among sciences.

And offering the explanation that it's comparatively complicated fails any test of common sense -- remember quantum theory? It's more complex than any psychological theory, and yet we acquire perfectly reliable results to ten decimal places. In fact, quantum theory is the single most successful scientific theory in existence, yet no one fully understands it. "Anyone who is not disturbed by quantum physics has not understood it." -- Neils Bohr.

> Let's face it: Physics is easy!

Only to those who don't understand the subject.

> In contrast, the social sciences are really hard.

Psychology is not a science because psychological research is so difficult? Okay, but if I were a psychologist, I would ask you not to be on my side.

> ... for finding the truth is really hard here.

Science is not about finding truth, and scientific theories never become true. Some of them resist falsification for extended periods, but all of them are perpetually falsifiable in principle by new evidence.
Profiling your WebGL Game with Chrome's about:tracing
I think great programmers are very much like other great people. To quote a cliche.. they stay hungry and foolish.
Australia sucks America's dick more and more every day. It's one of the main things I hated when I lived there.
The entire article deals with this. I'm not going to reiterate.
Many of those people have very individual approaches to development and are in a sense making massive contributions to the industry.

I'm not sure if you've heard about the concepts of Structure and Agency [0] in sociology? Consider the importance of: (1) being able to go off the beaten path to chase a new way of thinking/working or an idea which can improve many other people's lives, and (2) being in a company or position which gives an increase in high-value opportunities.

In any case, forget about just being a standard developer if you want to reach this level of impact. You own neither the platform on which you can reach a large group of people; nor the intellectual skill, anti-authoritarian outlook or vision required to create at a standard that sets you apart from your peers. There is something qualitatively different here from the careers of normal developers.

By the way, the ease of defining these qualities actually means it's not so hard to go about reaching them. If you can engineer software, you can engineer your career.

[0] http://en.wikipedia.org/wiki/Structure_and_agency
nope, not anymore (as mentioned above) i.e.: https://www.google.com/adplanner/#siteSearch?uid=twitter.com...
killed the product (for most websites on the web), too.
I don't know if the default json library in python is written C or not (never had a problem where json decoding was even close to a bottleneck), but there are at least a couple of very high performance json libraries for python written in C, so that shouldn't be much of a problem.
The intention was "why don't you know these things", in the sense of "I really think you should go out and learn / re-learn these areas, because I think it's very likely that knowing them better will help you produce better code".
trakt.tv is a pretty good website, integrates with XBMC and VLC Media Player, I think. Also posts to your Facebook wall and Twitter page, and lets you tick off watched or owned shows/movies.
His flavor text is also a great read:

http://www.phabricator.com/docs/phabricator/#flavortext
Thank you. I'll get reading!

Thanks also for proposing the test and posting the papers online. It's hard to discover what level of knowledge is assumed of software developers if you've never worked in a large team and haven't entered the field via graduate or postgraduate study.
Ramsey theory and Fermat's Last Theorem
Yet, at least in the European countries I've lived in, you won't get through HR without a CS degree, unless you're doing your own business.
> My definition is different from yours.

We don't get to pick any definition of science we like. Science is by definition an agreement between people, a consensus about what evidence means, what falsifiability means, and finally what science itself means. Everything else is post-modernism.

> Science is anything that searches for the truth in some matter.

That is precisely not how science is defined. Science is not a search for truth, and scientific theories never become true. Some become false, none become true, ever. All scientific theories are perpetually open to falsification by new evidence.

> For example, math isn't a science, because it isn't searching for any truths.

You just picked the only science that violates the general rule, that is able establish something as true, beyond falsification. So your claim about mathematics is exactly, precisely -- perfectly -- wrong.

> Psychology can be about discovering the truth about people's minds on a high level, so it can be a science.

You've just described religion, but science isn't religion. Science is based on skepticism and doubt, not on a mystical search for truth.
well, i think we got used to the fact that google just kills all the good stuff that does not make them (enough) money or are not directly relevant for their main advertising business. i.e.: i don't think they will ever kill GA, as it's necessary for their customers (advertisers) to see how much they get out of it, they will never kill google webmaster tools, as a good crawl-able web makes their job easier, so it makes sense to give webmasters the necessary data,....

but for anything that is not directly relevant for search and advertising, all bets are off.
I'd be happy to work with you some to get people to your site. Email is in the profile.
The first thing that came my mind is a mod or bot might have seen his handle and considered it a troll account b/c of it's similarity to Joseph Kony
Depends on the context. Some times it is used as a joke, other times it highlights a loaded question.
All very true. Although as I note in a thread below, I'm starting to wonder whether this was truly an explosion (ie of the combustion chamber and everything), or simply a nozzle collapse following a commanded shutdown of the engine. The latter would be relatively benign, aside from some aerodynamic effects which the flight dynamics software obviously handled without trouble.

And you're right -- for reusability, they do need to get their per-engine reliability above 98%. That would produce a mission reliability of 97.1% (assuming that 2 engines out causes a loss of vehicle, which I understand is only the case during the earlier phases of flight). At 99% engine reliability, you get 99.3% per-flight reliability -- which strikes me as the point where reusability starts to become very sensible. I have considerable confidence that SpaceX will be able to do this.
I love Inconsolata as well -- it's the only font on OS X that comes close to Consolas on Windows. For some reason though IntelliJ cannot render it well at all, so I've resorted to using Droid Sans Mono [1], which is awesome as well.

[1]: http://www.google.com/webfonts/specimen/Droid+Sans+Mono
MrFoof, while reading your answer i felt am reading my current situation.
I am a database Architect and a Data warehouse Developer, Develop ETLs, Cubes and what goes around it and mainly use Microsoft Technology for that, am now totally burned out from my current job, i feel so tired from the routine, i want to take the step and move into my own thing were i can consult and grow on my own.

i find it much easier for Programmers, Wepapp developers, iphone of android to find jobs, but for us Database/datawarehouse pros i really don't know where to start from with clients.

if i may ask, how did you start and approached Clients, Data is very sensitive, clients don't usually allow outsiders to look into it, how did you overcome those challanges
Because any professional worth of its salt is supposed to be able to work with googling.
Porn with heart
There are 3 common fallacies in this post that people continually bring up about modern languages. Thought i'd come on here and write some corrections:

"There is innate overhead when using an interpreted language, no matter how advanced the interpreter."

I think a lot of people think this is true, because they have an antequated idea of an interpreter which reads each line as a string, parses the string, then executes the code. Modern js (and jvm bytecode, similar-but-different scenario) 'interpreters' compile to native bytecode and the code runs directly on your hardware.

The speed overhead from modern language has a lot less to do with the 'interpreted' nature of the language, and a lot more to do with (a) code structure (overhead of objects, closures, namespace resolution, all that junk), and (b) the maturity of gcc vs other compilers.

Theoretically a language with a JIT compiler should actually be faster than a precompiled language in any scanario where you are intensely going round and round a loop which has a lot of logic inside it. The more the loop runs, the better the JIT compiler can optimise it based on the current runtime conditions.

"JavaScript is also garbage collected, while C is not, adding an additional level of overhead."

The overhead of the garbage collector is only really to do with memory and startup speed, not runtime speed. It does barely anything when not collecting. Every time you alloc in c, you must free, and those actions have to happen in proximity to each other. Free takes time. GC allows all those free operations to happen when the program is idle, instead of holding up your program.

The more stuff you create and delete, the faster a GC language should be compared to an equivalent program in a non-GC language.
Very similar effect can be found here:
http://www.andrewlipson.com/

Andrew is also the person who was behind some Lego(tm) reconstructions of Escher's work:

http://www.andrewlipson.com/escher/balcony.html
Yes, although I didn't get around to mentioning it in my introductory blog post, "self-taught" developers are part of why I'm doing this.
Faut-il ou pas publier les communiqués de presse?
> business people who have technical skills are similarly more likely to succeed.

Yes, and business people and managers who have technical skill and knowledge possess the advantage that they can detect when programmers are lying to them or exaggerating, and they can schedule realistic programming project times. Nothing is worse than a manager in charge of programming projects who doesn't understand programming.
I am not talking about Linus Torvalds, Larry Walls etc of the world. But I am going to talk about other developers who often make it big. I am talking of people who solve difficult problems, add value and make money.

Great folks I've met are high on productivity, they are quick in discovering things and generally maintain an aura of self confidence around them. Many of them start off because they a 'lucky break' somewhere but they build on it, they work hard and make their own space.

When we are talking of successful guys out there. We are ideally talking of guys who are >40 now. I know a relative of mine highly successful 40+ guy. Some of the things that I've noticed is, he is insanely hardworking, nearing 50 he can give any 20 year old run for his money. He is productive, doesn't blog much, not very active on social media. Doesn't go gaga on small wins, he has great focus on picking and solving tough problems. I mean problems that can add real great value.

A few things that I've noticed is he is agnostic to tool religion. He goes by what helps him, rather than our usual religious tool affiliations. He is also very well organized.

So to add it up:

1. Work really hard, I mean I literally. No excuses on this point.

2. Focus on solving tough problems, adding value and things that matter. Learn and master things that can help you solve problems. But there is no such a thing called 'permanent' technology. You have to learn to move on, because tools help you solve the problems. They are not your problems you would want to solve. Unless selling tools is your business.

3. Technology matters, but that is only a enabler.

4. Be a little disciplined and organized.

5. Celebrate big wins, write and talk about them. Network with people just like you and surround yourself with smart people.

6. Work hard on opportunities and always keep a tab on your next move. The more opportunities you convert to finished work the more you get next.