Meditations on programming, startups, and technology

The pursuit of excellence in programming

As I write a series of thoughts on the pursuit of excellence in programming, I must preface my essay by asking you to ignore that I wrote these words. I invite you to evaluate the opinions and ideas presented here not ad hominem, but rather on the basis of their own merits. It would be easy to otherwise mistakenly dismiss them with the infamous question posed by Steve Jobs to a blogger: “What have you done that’s so great?”.

This is to say that I talk about the ambitious and noble goal of achieving excellence in programming, fully conscious of not having achieved said excellence. For the time being, I don’t feel like I can point my finger at something that would impress Steve Jobs (or less critical observers). I’m just a traveler on the journey of learning, with a desire to share his experiences and plans.

Two visions of intelligence

Mastering a complex discipline such as programming requires a great amount of learning over the course of several years, perhaps even decades. Maximizing one’s ability to learn is therefore an early investment that can quickly repay itself.

The biggest impact on my ability to learn was caused by a shift in the way I considered the matter of intelligence. There are mainly two ways to think about it. You can either consider intelligence to be a static, intrinsic ability or a more dynamic, cultivable characteristic of human beings.

Cognitive scientists and psychologists conclusively determined that people who perceived intelligence as a dynamic characteristic, outperformed and were more successful than people who internalized intelligence as an intrinsic, static ability.

It’s worth noting that it’s not really important whether intelligence can actually be developed through application. It’s the perception of it that forges students’ approach to learning.

This difference in perception is often conditioned by early parenting. Kids who are encouraged to work hard to achieve results and are praised on the basis of their effort, tend to develop a perception of intelligence and results as something they can work on. Other kids are conditioned to think that they are doing well because they are “smart” and that their intelligence alone will most likely lead them to success.

Society has a fascination with genius, and parents like to fancy their little ones to be several standard deviations better than the norm, but conditioning children this way has dangerous and counterproductive consequences.

Kids who are labeled and praised because of their “innate capabilities”, will often suffer from an overconfidence that will affect their ability to challenge themselves through the depths of the unknown, because they feel it would threaten their status. What if they fail? It would mean, in their eyes, that perhaps they are not the smart person they have been assumed to be all along. We all have seen such kids failing here and there, and quickly making excuses such as, “Oh, I wasn’t trying at all”.

A parent who is cultivating a kid’s interest in hard work, may be more likely to encourage their child with words such as, “It’s OK. Keep studying, and you’ll definitely do better next time”. A parent proposing a model of static intelligence, may justify their child’s failure in a given subject by concluding that “maybe you are not cut out for subject X”. [1]

When facing failure, the “static intelligence” child may crumble under the weight of his own demise, as if failure was a reflection of their intrinsic value rather than a temporary speed bump and occasion for growth. A “dynamic intelligence” child will simply try harder next time. Genius or not, excellence and mastery of any subject requires hard work and many “smart” kids fall short when the bar is raised high enough so that “smartness” alone won’t cut it anymore. This usually corresponds with the switch from high school to college.

I’m very familiar with all of this, because I was one of those kids. I was labeled by my parents and science teachers as a “genius”. Even psychologists at school, who came to help us figure out what careers we were better suited for, ended up telling me that I could pursue virtually any career (at the time I was interested in nuclear physics) and that according to their (virtually meaningless) IQ tests I would be classified as a “genius”.

Please note that the problem wasn’t so much the label. Most smart kids figure out that they are smart on their own rather quickly. The real problem was that I wasn’t taught the value of long-term intellectual effort. Effort itself was considered as being somewhat detrimental to my status. Not only was I supposed to succeed, but I supposedly had to do so without putting forth any effort (a “utopic” ambition).

One of the first example of this that I can remember is when my father “caught me studying” for a few hours the same book before a test in middle school. He told me something along the lines of “Why do you need to study? A genius like you should figure out the test without studying.”. It’s absurd, I know, and probably one of the dumbest things my — otherwise bright — father has ever told me. As a young kid though, such a statement can have a strong impact on you.

Another example has to do with Latin. My teacher was a palm reading, crazy cat lady and I had no respect for her from the start. So I didn’t pay attention in class, on top of not studying Latin at home, I set myself up for failure. When the first translation assignment came around, I got a mildly negative score. My less than professional teacher told me, “Oh I thought you were good, but I guess you are not”. Afterwards my father added to this by saying something along the lines of, “Well, don’t worry, I guess languages are not your strength.”.

Boom. That was enough for me to stop having any interest in Latin and completely ignore a subject at which I wasn’t excelling. Nobody could tell me, “You are stupid because you don’t understand Latin,” if I didn’t try at all. So I was the high school kid who did advanced Calculus stuff on his own for fun, when my classmates where struggling with Algebra, yet I pretty much sucked at Latin. (In retrospective, the thought patterns required to excel at Latin where not very different from those required to excel at math or mastering English as a second language. I suspect that had I put in some effort I could have been very good at, and actually enjoyed, the subject.)

Over the years I had to readjust this perception entirely. By falling on my face more than once, I learned that excellence is only achieved through a combination of talent and effort. The real genius may lie in the ability to put in thousands of hours of focused study and practice, in the pursuit of whatever one person is trying to learn and understand.

If people knew how hard I worked to get my mastery, it wouldn’t seem so wonderful at all. — Michelangelo

By this new definition, I was a complete idiot who had to entirely learn from scratch how to appreciate the value of effort to hone and develop his “talent” (which is nothing but a seed on its own).

Learning to learn

Being very interested in programming, computer science, mathematics, and science in general, I decided at some point that I had to entirely change my attitude towards learning if I were to master any of those disciplines. Effort was now more important than intelligence on its own, and I would feel satisfied only when doing a really good job in the pursuit of something challenging, that couldn’t be achieved by sheer “talent”.

The saddest thing in life is wasted talent, and the choices that you make will shape your life forever. — Calogero ‘C’ Anello from A Bronx Tale

In the process, I started to internalize a few principles and I dealt with issues related to both the art of learning and the art of programming.

An awful feeling

There is a cognitive bias known as the Dunning-Kruger effect [2], in which subjects who are inexperienced or less competent within a given discipline, tend to overestimate their abilities (they are in other words affected by illusory superiority [3]).

The other side of this coin is that the more you study, the more you realize how little you know and how much there is to know (a concept put forward by Socrates back in the days of Ancient Greece). This is both a pleasure and a discomfort. There is a huge amount of satisfaction in finding things out. Yet, being in doubt and fully aware of how little you know tends to be an unpleasant side effect all learners have to live with. Doubt truly is the water that’s fundamental for the growth of the flower of intellectual curiosity. [4]

My approach in this case is to embrace and dominate my ignorance and fears. Whenever there is a concept that I feel particularly ignorant about or that is way over my head, I try to tackle it as if my life depended on it. There are still countless things I’m ignorant about, but this approach as really paid off for me over the years.

If you are trying to learn a whole branch of computer science or mathematics, it will take a long time, so you may want to start first with smaller “fears” that can be mastered, at least at an introductory level, in a short amount of time. Rather than thinking, “Oh yeah, I should really learn Git”, for months, act on the thought. The essential knowledge to work with Git or Hg doesn’t take months to learn (assuming you have a need for either of these particular tools).

But you are in this for the long run, so don’t be afraid of improving your craft by studying advanced topics that require a bigger commitment in terms of time as well. There is no royal shortcut, mastery of our craft will require thousands of hours of dedicated study and practice.

Theory and practice

Masters of any intellectual discipline tend to have good working knowledge of both theoretical and practical aspects. Pursuing excellence in programming requires the study of many insightful books that will widen your view of the field and as a result necessarily improve your craft.

Working with books alone is not enough though. Programming requires writing and reading programs every day for years. That’s why I have a rule: I refuse to go to sleep if I haven’t read and written some code on a given day (this doesn’t include the code I write for work, of course). So far, this rule has had a positive impact on my ability to code.

It is a mistake to think that the practice of my art has become easy to me. I assure you, dear friend, no one has given so much care to the study of composition as I. There is scarcely a famous master in music whose works I have not frequently and diligently studied. — Mozart

Breadth Vs. Depth

As we progress in our journey towards the pursuit of excellence in programming, a question that will no doubt pester people’s minds is whether one should go for breadth of knowledge, or depth. There are countless programming languages, paradigms, methodologies, technologies, et cetera.

The truth of the matter is that if we are to become GrandMaster programmers, we cannot ignore either of them. In practice, depth has a much stronger impact in the way we construct software. It is through deep understanding that we can see the whole through the parts. There is therefore value in specializing in just a few languages and technologies, and really mastering them in-depth.

Getting things done in software development requires a certain pragmatism and proficiency with the tools at hand. There is no escaping it. Depth is therefore necessary, but not sufficient.

I find that the web is particularly good at covering the breadth aspect of things. There are always new and interesting areas I can learn about and experiment with. I don’t need a whole 600 page book to get a feeling for — or to better understand — certain technologies that are not crucial to my area of specialization.

While there are quite a few exceptions I could mention, I’d say that I tend to use the Internet as an aid for horizontal scaling of my knowledge, and books for vertical scaling. And again, more often than not, the depth level is mostly determined by the amount of time, practice and effort I put into it, rather than the media I’m using.

Where to find time

One of the objections I hear often, particularly when it comes to reading books is, “I don’t have time!”. In a few extreme cases, that may actually be true, but I think that most people severely underestimate how much time is “wasted” on a daily basis (even just surfing online).

Breaks are extremely important, and I’m not advocating any regime of incessant study. I simply know how crucial it is to be constant. It’s a marathon, not a sprint.

My second rule is: I refuse to got sleep if I haven’t read at least a chapter of a book that day. Very often I get caught up in the book I’m reading or working through, and end up getting through much more than just one chapter (it really depends on the book, of course). But for me the rule is clear: no sleep allowed until one chapter has been read every day.

Try this approach and you’ll see that reading doesn’t have to take up much time, yet doing so you can still read several books (including technical ones) every month.

We are what we repeatedly do. Excellence, then, is not an act but a habit. — Aristotle

For certain books, it is convenient to have the book in PDF format on your computer, as you switch from the book to the editor/console and back. However, generally speaking the computer tends to be quite distracting and thoughts like “I’ll just check my email quickly” can easily lead to hours spent doing something else.

For this reason I prefer to read from a paper book which is also easier on the eyes for extensive reading after a day in front of a computer screen. Even if I’m using the computer at the same time to input code, the physical presence of a book next to my laptop is enough to remind me that I shouldn’t get distracted online. (For me the depth and focus required by books is also an antidote to the re-wiring that the web tends to do to our brains. [5])

By the way, a few days ago Amazon announced a gorgeous, brand new graphite color Kindle DX [6]. I think I may pull the trigger and get it for my upcoming 30th birthday. Buying numerous paper books is expensive, and given the price of Kindle books, this move would end up being cheaper in the long run. The large e-ink display almost looks like paper and the device is not as distracting as an iPad (you read on a Kindle, and that’s it). Plus, it’s lighter than most technical books and surely takes up less space in your home.

Achieving focus

With so much going on within the programming world, distractions are easy to come by. My approach is to focus only on the given macro-task at hand. If I’m trying to learn about process calculi for example, then for the next few months my “learning time” will be ruthlessly dedicated to that subject, as if the rest of the programming ecosystem stopped in time.

Then there is focusing at a micro-task level. Learning about a given subject can always be divided into a long series of smaller steps. When I’m focusing on one such, tiny step, then everything else ceases to exist (or at least in theory).

One trick I use to achieve solemn focus on micro-tasks, whether reading code, writing code, or reading a technical book, is the use of the Pomodoro Technique [7]. In short, I use timer software [8] which alerts me when 25 minutes (a pomodoro) have passed, and gives me a 5 minute break for each pomodoro. Every 4 pomodoros, I can take a longer break.

When I first started using this technique I thought it was mostly a gimmick and I had a hard time taking breaks. I just wanted to keep going and the “tracking” seemed silly. However, I must say that it strikes an elegant balance between the desire to focus for extensive periods of time and the importance of taking regular mini-breaks.

This approach has become routine for my mind now, so even if it is just a gimmick, it’s still a good way for me to get focused and “in the zone”.

Aiming for sprezzatura

The pursuit of excellence requires a huge drive from within, and a fundamental dissatisfaction with just being good at a given discipline. I believe this is true regardless of the profession at hand.

As I progress in my journey, I’m discovering how the key is to make the pursuit of excellence a habit. This goes against my nature of being an intellect sprinter, but I’m in for the long run and I’m really learning to enjoy the, marathon like, process.

My long-term goal is to program with sprezzatura [9], where the process is so internalized and part of my subconscious that it almost looks effortless (as if the act of programming was committed to muscle memory). It will be an overnight success, 15 years in the making.

Regardless of the improvement level achieved, I will always have the joy, privilege and need to continue to learn for the betterment of myself and my craft. When there is no set destination, the journey is what really matters.

Ancora imparo. (I’m still learning.) — Michelangelo


[1] These concepts are explained, in a much more eloquent manner, in the early chapters of the excellent book, The Art of Learning by Josh Waitzkin.

[2] Dunning-Kruger Effect on Wikipedia.

[3] Illusory Superiority on Wikipedia.

[4] For more on the importance of doubt in science, check out the beautiful epilogue in What do you care what other people think? by Richard P. Feynman.

[5] For more on this phenomenon, read The Shallows by Nicholas Carr.

[6] The new Kindle DX on Amazon.

[7] The Pomodoro Technique.

[8] Pomodoro for Mac OS X.

[9] Sprezzatura on Wikipedia.


Carlos Marcelo Cabrera translated this article into Spanish: La búsqueda de la excelencia en la programación.

Get more stuff like this

Subscribe to our mailing list and get interesting updates like this.

Alternatively you can subscribe by RSS or Atom.

41 Responses to “The pursuit of excellence in programming”

  1. Claudio says:

    Really nice, thanks a lot for sharing your thoughts and practices.

  2. Josh says:

    An excellent, if long, article. (I’ll admit fading a little toward the end) I agree in a large part, and especially that intelligence is a dynamic thing. I’ve noticed an improved focus and mental acuity when I read at least a little on a regular basis, and less when I don’t. Certainly a hard working person with a little sense will have more success than an exceptionally gifted person who is lazy.

    Also, I’ve taken a [half] conscious approach to the question of breadth versus depth. I’ve favored breadth of knowledge with depth where passionate, then also depth where needed. I trust my ability to learn and apply when I need something. By learning some on a variety of areas, I will know available options for addressing a problem. With that breadth of knowledge, I can identify a use and add depth to apply it then.

    By no means am I more gifted or exceptional, but mildly creative and perhaps more willing to work and achieve than many. That’s what makes me a good developer, in my opinion.

  3. Guganeshan.T says:

    Great insight Antonio! Thank you for an awesome article.

  4. Really, really helpful guide for people like me, who’re just about to graduate from University (‘Ancora Imparo’ is my University’s motto :)). Thank you so much for sharing your thoughts.

  5. Hi! Im really interested in the source for the following statement:

    Cognitive scientists and psychologists conclusively determined that people who perceived intelligence as a dynamic characteristic, outperformed and were more successful than people who internalized intelligence as an intrinsic, static ability.

    I know Iv read some article about it but can’t for the life of me figure out where.

    Thanks in advance.

    • Hi! Im really interested in the source for the following statement

      For the actual psychological research, you can check out the most recent publications by Carol S. Dweck.

      A couple of good articles online are this one and this one by Gwen Dewar, Ph.D.. They both include good references to the actual research at the end of the page.

  6. Great post, really interesting…

    I’d like to add this link related to skill acquisition:

  7. I started designing and writing HTML 7 years ago as a middle school student. From the get-go, I always outsourced and programming work. It would be 3 or 4 years before I even tried to write JavaScript.

    I always had a desire and interest in programming – and over time developed an incredible respect for software engineers – but from fear of failing never just jumped in and started learning. I knew it would be a difficult journey, something I “didn’t have time for”, so I never wanted to start it.

    This year, after many failures related to relying on other people to make software for me – I finally committed myself to learning. I’m still in the very rudimentary levels of programming – ie coding websites (php), working with mysql, linux server admin, etc. – but I’m finding that I DO get better with time and practice.

    Your post was inspiring and definitely right on the mark. For those of us who are just beginning our journey – thank you for the reminder that it IS long, and it IS arduous – but it’s totally worth it = ).

    Enjoyed the quotes, insights, and sincerity. To your success!

  8. Pere Villega says:

    Excellent article, lots of good advice. Thanks for sharing your thoughts!

  9. Federico says:

    Thanks for this excellent post. I found it illuminating

  10. […] is well worth reading The Pursuit of Excellence in Programming as there’s much more than I mention to enjoy. Posted by faroffice Filed in Uncategorized […]

  11. tns says:

    By ‘Excellence’, i think you mean the ‘relative’ kind and also in very much a ‘restricted’ sense ( parameters measurable by other equally circumscribed programmer types ) — the ‘western’ influence on analysis’ of such topics ( those dealing with the ‘self’/’I’/’my’ ) forces ‘goals’/’contexts’ and ‘motives’ to be sanitised from the ‘topic’ of discussion.
    The ‘Problem space’ ‘ motives’ and ‘big picture’ understanding must have an influence in the definition of ‘excellence’ in any area of pursuit. ex: Supremely smart and intelligent and very possibly ‘excellent’ phd quants concocting mind-boggling BS structures enabling wall street to wreak worldwide havoc is not ‘excellence’ in anybody’s book. A synthetic world view and an exposure / understanding of the very much central ‘human’ issues coloring every pursuit — is essential.
    An ‘excellent’ programmer needs to make parallel and fervent efforts to be an ‘excellent’ human too.
    Considering the impact ‘Programmers’ are going to have on the world in the future .. I think this is essential
    Unlike ‘ b-schools ‘ who ‘teach’ MBAs ethics !! .. i think programmers who in general are more self-motivated , self-taught and high-potential – generally tend to ignore the impact of these ‘core’ choices.
    A broader discussion of ‘excellence’ would probably highlight these issues too.

  12. […] I can’t tell you how timely the piece by Antonio Cangian is on achieveing Excellence In Programming. It is a lengthy post that is relevant because of my recent re-commitment to this blog and to […]

  13. Indrit says:

    Wonderful article, thank you very much!

    Some question please:
    a) What you think about the “environment” in which a developer finds himself, “how much” it’s important? If a developer is surrounded by people who “don’t care” he has to change immediately?
    b) What do you think about the importance of the “school” or the “master craftsman” role for a developer?
    c)just a personal curiosity, are you a ‘fan’ of Richard Feynman?

    • a) What you think about the “environment” in which a developer finds himself, “how much” it’s important? If a developer is surrounded by people who “don’t care” he has to change immediately?

      Ideally you should be surrounded by people “smarter” and more experienced than you are. People who really care. In practice though, changing environment immediately is not always possible or feasible. You can certainly plan to switch to a better environment though and achieve that goal in a few months.

      b) What do you think about the importance of the “school” or the “master craftsman” role for a developer?

      I don’t believe that school will make you a programmer. It can however help you cover important fundamentals. Without a degree, it’s also harder to be taken seriously in the marketplace. So my advice is to “stay in school” if you can, but be prepared to practice hard on your own, to really learn how to program.

      c)just a personal curiosity, are you a ‘fan’ of Richard Feynman?

      Yes. 🙂

  14. Preets says:

    Brilliantly put. I’m going to try the one chapter per day trick!

    About >> Not only was I supposed to succeed, but I supposedly had to do so without putting forth any effort (a “utopic” ambition).

    It seems silly, though it is partially true. Mental capabilities are very much like physical capabilities. Your genes decide your athletic abilities and your lifestyle choices will determine if you reach your potential. Of course Michelangelo worked very hard, but he was also very talented (or then simply lucky!)

    You shouldn’t be telling little children to not work hard, but you should identify fields they are good in. Because you were aware of your mathematical talent, it was easy for you to pick a career in science.

    What if no one had highlighted your talent and you ended up as a Latin professor? Would you have enjoyed that today? Why not simply pick a field at which you naturally excel rather than having to work doubly hard than some talented chap?

    • I don’t disagree. To clarify my position:

      • People should do what they love in life;
      • There is nothing wrong with helping your kid identify their talent or even letting them know that you think they are talented. It’s OK to encourage them, as long as you teach them how crucial it is to cultivate such talent by working hard to reach their full potential.
  15. Thanks for the post, it gave me another thing to think about. I noticed the same thing in me a few years ago: I was always “working hard” in order to appear from any point of view to obtain sprezzatura (amazing word btw). And that was almost always about it.

    In the end, even that pays off, but it’s somewhat a not-really-healthy way of doing things.

    Now I’m switching to an approach similar to the one you’ve described, so thanks again because you gave me an insight about how you are working on it. 🙂

  16. Jim Maher says:

    So much material!

    Like you, I believe “labelling” of people is counter-productive – regardless whether the label is “good” or “bad” – and is especially damaging to children.

    I would differentiate your “Two visions of intelligence” to talent vs. skill. To me, talent is innate and of lesser value. Skill is acquired through long hard work and has greater utility.

    “Learning to learn” is an outcome of schooling – but its an easy skill to lose. It requires constant practice and I believe most people (including me) avoid that practice out of fear that their innate sense of inadequacy will be proven correct – that “awful feeling”. BUNK, STUFF and NONSENSE!!! (I say to myself.) It just takes diligence. I’m really not as stupid as I look.

    “Theory” is intriguing and may help stimulate creative application. But I’ve given up on finding a “unified theory” of programming. What matters to me is getting stuff done – the physical deliverable. Practice! Practice! Practice!

    “Breadth vs. Depth” has always been a difficult choice for me. I want to know everything! Yet I find that no matter what depth I go to, there’s always greater depth to plumb – and someone’s been there before me. Nowadays, I try to go deep enough to feel that I grasp a concept, then move on. When I use the concept, I’ll often pursue greater depth – but only to the level that I need to apply the knowledge.

    “Where to find time?” Well, what are you doing – sleeping nights? There’s work to do!

    “Focus”, as you say, is a matter of habit. I do functional decomposition down to a level where I can describe a physical deliverable – then get to work. I try to get up and change focus about once an hour. If I’m into it, looking at one more thing “before bed” sometimes turns into “before breakfast”. Not necessarily sensible or effective – but fun!

    I do want to get good, but mostly I want to be effective and useful. When I find that I seldom “look it up” any more, I lift my head and look around and find that I’ve been doing the same kind of thing for 10 years and it’s time to “re-invent myself”. That’s intimidating to me, but I try anyway and relearn how to learn and overcome my sense of inadequacy and just try to focus on getting something done and the next time I lift my head – it’s 10 years later.

    Not a bad cycle, but not easy!

  17. This is a wonderful essay Antonio, thank you!

  18. Stanley says:


    Excellent post. One of the best, if not the best, I’ve read on the subject of learning.

    I think in similar terms and though I think I’m dedicated, I just found out by reading your post, that I’m not dedicated enough.

    Your article inspired me to do better.

    Having a rule of reading a chapter a day, writing and reading some code every day before sleep is an excellent idea. I’m thinking of doing something similar. I would like to hear some more details of how you actually do it (what code you read/write, etc).

    Anyway, I loved reading this post.

  19. Andrew says:

    Simply brilliant, it’s articles like these that give me the motivation to continue learning. I’ve been trying to follow the former of your rules for a few weeks now and my programming has definitely improved. Six months ago I was struggling to achieve my goal of improving at programming, solving more logical problems quicker and more efficiently, and then I realized; I’m not improving because I’m not actually doing much programming. I need the end to justify the means as well.

    Your second rule is going directly into my routine, I have a pile of technical books that I’m very slowly going through, mostly because I get distracted with online articles and communities, however the books I have at hand offer a plethora of knowledge, and I need to focus my goals.

    Keep up the good writing, can’t wait to see more.

  20. Terry Davis says:

    Read the Bible, God exists.

    When you get older, you’ll laugh at your young self and the obsession with intelligence. You’ll come acros young bulls and say, ba ha, out to prove themselves. Hopefully, you’ll have accomplishments and have grown beyond that stage of competativeness.

    You’re off to a good start with some humility. When I see a young buck full of arrogance, they are generally buffoons. You want a buffoon, read St. Augustine.

    Pride comes before a fall and humility before honors, as much as the night, the day.

    • Chris Lawlor says:

      I appreciate your point of view, however I’m not sure that it is applicable to this author. There is no obsession with intelligence, here, but with learning. In fact the author posits that intelligence might even be a detriment to learning in some cases, when one is conditioned to rely on their intelligence rather then apply a solid work ethic toward learning.

      The author admits that he was labeled a ‘genius’ as a child, but I believe that was included not as a boast, but to lend relevance and credibility to the position he has taken regarding one’s approach to learning. In particular, he asks the reader in the very first paragraph to ignore any personal, public achievements that he has, or has not, achieved.

      The world is full of baseless braggadocio, to which your comment would apply and would receive my wholehearted endorsement, but I cannot see that any can be found here.

  21. Technikhil says:

    Great post 🙂
    I had posted about one of my favorite cartoons about the perception that programming involves reading a few how to books that profess to teach you x in y time.

  22. ramesh nethi says:

    great post. long but, well articulated. resonates a lot with my own understanding & experience.

    loved the part “use internet for horizontal scaling and books for vertical scaling”

  23. Ricardo says:


    I went to college for about two years. And then I had many problems to focus to study the lessons. Before I went to college I was labeled like “genius” too. So I developed the “bad” static intelligence.
    It’s more an evidence to proof this article.

    Well done. Very good article.

    P.S.: I will change!

  24. Kissen says:

    One word : Inspiring !

  25. Hi Antonio

    It has been a pleasure to read this article and I sincerely appreciate the time and effort you’ve put in here to expose in clear crystal words what it takes to achieve a well doing in whatever you love and to show people the (often invisible) barriers that limits their success

    I appreciate this so much that I’ll like to translate this to Spanish and mail it to you if you can re-post this in Spanish or ask for your consent to do it so in any public place clearly citing the original source

    And again, thank you very much !

  26. RavS says:

    Simply inspiring.. May be the best Web article I ever read!

    But the problem with motivation is that it wears down if u don’t constantly feed it. I have heard, read or seen a lot of motivating talks, which makes me feel like achieving everything that is to be achieved in a single day. But after some days, I am back to square one.

    I have a lot of interests, Web Programming, System Programming, Designing, Guitars, to name a few.. simply too many to handle. As a result, I keep on juggling through them randomly throughout the day and never really reach anywhere in any of them.

  27. ksaver says:

    Really wonderful. Thank You. Very much.

  28. Nepali Akash says:

    Deja vu ! The Art of Learning by Josh Waitzkin!!!

  29. Sergio says:

    This is an amazing article! Congratulations.

    About labeling people I got myself in a dilemma:
    I was a very smart child, clearly above the average. Everybody was telling me I was intelligent, from my father to my colleges. And they were right, but the problem was the environment I was living in. I was the one-eyed king a blind land, without never noticed it. Well, I came into college and there I was super confident in my capacities, thinking life was easy, and wondering how far I could go like an electronics engineering I am being. As the years were passing through my course I started having some difficulties in keeping good marks. After all, only those good students get in the university. I was never again the best one… I was only one more, and I got a big delusion when I realized it, seeing how hard is to do something really useful. For so many times I had just thinking
    “Why would I have to come into the college? and to an engineering course? what was I thinking? it would be much more easier if I had a job like normal people have (work on a factory, be a waiter, or a simple truck driver… — a job where I wouldn’t need to effort, just doing every days the same)”

    When my delusion started to pass I thought better “I wouldn’t go so low. Where were my dreams? No, I have dreams, I’ll realize them”.

    And here comes the dilemma: What if I was not labeled as a man that cannot fail, I would never had the hope to go far and do science for the community, not for me. Probably I only would care to get my wage, managing it to some bears and hoping nobody to annoy me. That’s sad, but that’s what I see from my friends whom never cared too much to study.

    Antonio, what is your opinion about this? I know label people is a bad thing, but how much is it?

    Best Regards,

    • And here comes the dilemma: What if I was not labeled as a man that cannot fail, I would never had the hope to go far and do science for the community, not for me. Probably I only would care to get my wage, managing it to some bears and hoping nobody to annoy me. That’s sad, but that’s what I see from my friends whom never cared too much to study.

      Antonio, what is your opinion about this? I know label people is a bad thing, but how much is it?

      I think that the answer to your dilemma goes beyond the matter of labels alone. Perhaps it was confidence in your abilities that helped you through those rough times, but I suspect other factors such as valuing education has had a major impact as well. Your pride may have been affected by suddenly receiving low grades, but you probably came to your senses because you thought that excelling in school was part of your dream.

      I believe that parents should instil self-confidence in children, but should also help them develop a solid work ethic. It’s OK for kids to know that they are talented as long as they realize that their talents should be put to good use, and be honed through regular practise and on-going learning.

      Children who grow up in lower socio-economic households often “don’t have a chance” not so much because they are unintelligent or because their parents are praising them too much or too little, but rather because they come from families where (advanced) education is more often than not largely frowned upon or considered a waste of time, rather than seen as something worth pursuing. The term “don’t act white” that’s used by some minority children to bully other children who try hard to succeed is a major indication of how the value system adopted by a child, household, or community can make a huge difference on a child’s longterm success.

      Moving beyond the issue of labels, I believe that parents should above all teach children the importance of education and the worth of becoming great at something that is valuable (in whatever capacity) to society.

  30. I really enjoyed your article and I would like to publish a translation of it in my blog. I understand that, with all rights reserved, not enough to reference the original but I must ask your permission. So, do you allow me to translate and publish your article?


  31. Aleprex says:

    Articolo stupendo!
    Volevo solo chiederti quando dici che ti sei imposto come regola quella di non andare a dormire se non hai almeno letto e scritto un pò di codice al giorno, che cosa significa precisamente? Che tipo di codice scrivi e quanto ne scrivi? Leggere ok, c’è né moltissimo in rete di codice da leggere, anche se la gran parte non è di buona qualità e rischia di confonderti anziché aiutarti, ma scrivere codice può portare via moltissimo tempo perfino settimane, quindi cosa consigli di scrivere piccoli pezzi di codice didattici finalizzati all’apprendimento di determinati concetti o scrivere codice di progetti reali?
    Scusa se ho scritto in italiano, ma ho visto che anche tu lo sei 😛

  32. biz says:

    great article, ta!

  33. Milan says:

    Reading this article was a truly mind-blowing experience. Thank you sir.

  34. […] #3 – The pursuit of excellence in programming […]

Leave a Reply

I sincerely welcome and appreciate your comments, whether in agreement or dissenting with my article. However, trolling will not be tolerated. Comments are automatically closed 15 days after the publication of each article.

Copyright © 2005-2014 Antonio Cangiano. All rights reserved.