What Makes A Great Programmer?
thinkvitamin.com
thinkvitamin.com
C'est magnifique, mais ce n'est pas la guerre, c'est de la folie
"Folie" (folly) is an amorphous, uncounted quantity, like water or sand. War is a one-of-a-kind entity, like "Peltier effect." So you speak of "some water" but "the Peltier effect."
When thirsty, you could say that "I want to drink the water," but unless there was an antecedent already set up in the conversation, it would sound a bit silly.
Once you tell me that la guerre is definite and la folie amorphous, then sure, I'd know to use the articles that way. But I would never have guessed this. It seems you have to know how the nouns feel to a French speaker; you can't simply compute the right answer from the concepts.
and git is a tool like vim.
Courage, on the other hand, means paying attention to the dangers and going forward whenever it's not a mistake.
Having said that, fearlessness can be the correct attitude when dealing with situations that are extremely risky from the start, such as startups.
I've actually worked on a project that had the owners approached me at the start, I would have told them it was impossible due to various concerns. It turned out to be massively successful and they created a new niche, but only by rushing head-first into it and refusing to stop.
What is holding programming back from the degree of empiricism found in a field like mechanical engineering? Is it that it's hard to fund or even structure meaningful experiments? Should someone be developing non-ferromagnetic monitor/keyboard sets so that we can study programmers of different levels of demonstrated ability with their heads stuck inside MRI machines? (Such research has been done with piano virtuosos playing on electronic keyboards and rappers.)
http://www.ted.com/talks/charles_limb_your_brain_on_improv.h...
Another thing I'd note, is that a lot of debate about programming is word salad full of reasons why you can't say X or Y. There seems to be a lot of the Epistemic Viciousness that exists in martial arts schools.
I don't think programming is necessarily unique in this regard. As with any other profession, there are things that can be measured, and things that you just have to trust your gut on.
Edit: yep. It comes from Informal Sociology (1963) by William Bruce Cameron. Never heard of him? Me either.
By the way, this the first time I've seen quoteinvestigator.com come up in the search results. That's welcome; it's a great site. If you like this kind of thing, check it out. http://quoteinvestigator.com/2010/05/26/everything-counts-ei...
p.s. fully agree about the barriers to empirical study of programming.
I always get a bit irritated when people make the "people first" argument. It's not that I disagree with putting people first. It's just that "putting people first" always seems to mean "being a good cog in the machine".
There's more to putting people first than writing documentation and explaining your code to other people. Those are important, but they mean putting the task first, not the people. To put people first, you have to do things like: listen to others, empathize with them, use tact, compromise, and occasionally do something impractical for no other reason than to help work suck a bit less.
Even if a good text editor like vi won't make you a great programmer, it most definately will make you a better programmer!
First, you'll be more effective and thus achieve more. You can squeeze more refactoring and trying out different things when you are more efficient. This could lead you becoming great at some point.
Second, it's about your mindset. Programming is about automatizing and a great programmer should aim for the highest achievable level of automation. Why should your tooling be left out of the equation? With proper tools you can automate more.
If a developer has more then 1 year active developing to do, learning e.g. a good editor will pay off.
The top answers on Quora offer a lot of food for though.
The best I got out of high school back in the early 90's was an "Intro to Computer Programming" using Turing[1], of all things on a Macintosh Classic. Of course we didn't have the internet either back then, but I digress.
You guys are so lucky to be growing up post internet. :)
[1]: http://en.wikipedia.org/wiki/Turing_(programming_language)
I have to agree that you guys are lucky to be growing up post-internet.
(For fun, I just checked and they now teach C++, VB, Java, PHP and SQL.)
I kind of like Rand's take on the subject:
As an engineer, there is a short list of tools that you must be rabid about. Rabid. Foaming at the mouth crazy. [http://www.randsinrepose.com/archives/2009/11/02/the_foamy_r...]
And sure, there isn't going to be a single set of tools for every programmer and every workflow, but good tools and a thorough understanding of them are something I would expect from a great programmer. I agree with most of the author's points, and don't want to at all suggest that becoming a vim wizard will on its own make you a great developer, I guess I'd hate to discourage anyone from seeking "text editor zen".
* "talk" most of the time means "listen and understand".
Additionally, and I don't know if it's just a coincidence, but the best programmers I know are fluent at least in one musical instrument.
Should this trait has anything to do with it?
As Joel said: Smart, and Gets Things Done.