Lucky to be a Programmer
For the past few weeks I’ve been working with a fellow developer on a project that required an all-out programming effort. It’s done now, so we’re back to a regular schedule, but when people hear about the crazy hours they often say they’re sorry. They really shouldn’t be. I would never do this often, or for long periods, or without proper compensation if done for an employer, but the truth is that these programming blitzkriegs are some of my favorite periods in life. Under the right conditions, writing software is so intensely pleasurable it should be illegal.
Many programmers relate to this, but others are taken aback when they hear it. I think it’s because institutions are so good at squeezing the fun out of everything. It’s appalling for example how schools can take the most vibrant topics and mangle them into formulaic, mediocre slog. And so it is for programming. Many corporations turn an inherently rewarding experience into something people just barely stomach in exchange for a paycheck.
That’s too bad. Few things are better than spending time in a creative haze, consumed by ideas, watching your work come to life, going to bed eager to wake up quickly and go try things out. I am not suggesting that excessive hours are needed or even advisable; a sane schedule is a must except for occasional binges. The point is that programming is an intense creative pleasure, a perfect mixture of puzzles, writing, and craftsmanship.
Programming offers intriguing challenges and ample room for invention. Some problems are investigative and reductionist: Why is this code running slowly? What on earth is causing that bug? Others are constructive, like devising algorithms and architectures. All of them are a delight if you enjoy analytical work, immersed in a world full of beasts like malware, routers, caches, protocols, databases, graphs, and numbers.
This analytical side is what most people associate with programming. It does make it interesting, like a complex strategy game. But in most software the primary challenge is communication: with fellow programmers via code and with users via interfaces. By and large, writing code is more essay than puzzle. It is shaping your ideas and schemes into a coherent body; it is seeking clarity, simplicity and conciseness. Both code and interfaces abound with the simple joy of creation.
Another source of pleasure is that under certain conditions, beauty arises in programming. It may sound like bullshit but it’s real, the kind of thing that makes your day better. Take for example Euclid’s 2-line proof that prime numbers are infinite. I think many would find it beautiful - so succint and such a fascinating result. This is the beauty of math, cold and austere, and it pervades software. It is in clever algorithms like quicksort, in the sources of kernels and compilers, in elegant exploits and in the tricks we pull to solve everyday problems. When you see these solutions, be it famous algorithm or mundane trick, you smile and think “how smart” and it feels good. How noble in reason!
A non-math sort of beauty also exists in code, analogous to eloquence in discourse. It’s present in well-factored software that does a lot with little code, in short and crisp methods, in well-done architectures. Some languages make this hard and not all programmers produce it, but it’s a joy to read and work on such code. If you’re working in an expressive language with coworkers whose code you enjoy, it happens often enough to brighten things up.
Now for craftsmanship. In a sense software is abstract - where does program behavior exist but in our minds? Yet we call it building software for a reason. Programs are shaped feature by feature, architectures start out as scaffolds and grow, user interfaces come together, bugs are fixed and hotspots are optimized to make things run fast. Software provides a deeply satisfying sense of craft. We build stuff out of pure ideas and then get to watch it working to solve real problems and make people a little better off. Or far better off, as the case may be.
Take Biology. Despite nearly 400 years of scientific revolution, Biology has been unable to deliver on crucial problems like effective cures for viral infections or cancer. Some of our best progress, like antibiotics, has been due to chance and random experimentation. You start a clinical trial for a hypertension drug and suddenly - whoah - all your subjects have hard-ons! Viagra is born. To be sure, chance plays a role in all endeavours, but Physics and Chemistry have a comprehensive theoretical basis powering systematic improvements, whereas Biology has been largely confined to kludges. Wanna treat cancer? Here, blast the patient with radiation and poison and hopefully the cancer will die first. They’re brilliant kludges, and I’m happy to have them, but it’s a far cry from the precision we’ve had elsewhere.
Software is changing that. Just barely 50 years ago the shape of DNA was being discovered, but now anyone can browse and download hundreds of complete genome sequences. Or look up thousands of genes (DLEC1 for a random example), complete with nucleotide sequence, amino-acid sequence for expressed proteins, literature mentioning the gene, you name it! Or you can search vast gene and protein databases for nucleotide or amino-acid sequences, perhaps after sequencing something in ever-cheaper devices, and get a comprehensive report on the match. It doesn’t matter if they’re exact, because the algorithm in BLAST, the standard sequence search tool, delivers partial maches across databases and species, scored by match likelihood. These advances will enable massive breakthroughs in medicine. Biology is entering a new era, like Physics in the 18th century, propelled by software.
Yea, sure, biologists have a minor role :P, but we in computing increasingly power major developments in science, culture, and business. When a third-world kid looks up a Wikipedia entry, it’s our work too! We wrote the RFCs and the networking stacks, the browser and MediaWiki, the OSes and the HTTP servers. Not to mention a lot of the Wikipedia entries, but since a few were on company time I’ll leave them aside. The influence of technologists goes beyond bits and bytes: it was a programmer who invented wikis and our community started blogs. Henry Mencken pointed out correctly that “freedom of the press is limited to those who own one”. It’s a pity he’s not around to watch our creations break down the stifling conformity and cozy subservience of professional journalism. Less glamorously but to great benefit our applications have delivered steep productivity gains to businesses across the economy. These are a few examples in a long list.
Three years ago, when I finished my undergrad (after being a programmer for many years), I was about to enter med school. At that point, a couple of negative experiences had me somewhat burned out on computer work. I’m happy I stuck with it. I’m still interested in biomedical research, but if I were to get involved I’d rather come in from the software angle, because frankly it’s too much fun to pass on. My mom thinks I’m a typist but oh well.
If you find yourself stuck in a place that’s killing your innate passion for technology, by all means, move the hell on! Don’t stay put while your enthusiasm is slowly drained. It’s hard to find motivated people to hire so you’ve got a major asset already; there are plenty of employers - and companies to be started - that will better suit you. For people who think they might like programming, your mileage may vary, but I highly recommend it as a career. Not only is the outlook bullish on the job front, but as the role of software grows in society we’ll see more exciting and beneficial changes delivered by technology. I’m delighted to be along for the ride as constantly my art and craft I try to master.
PS: thanks for putting up with the irregular posting schedule. The plan is to stick to regular posting now that things have calmed down. And if you like the song, download the mp3 because the YouTube audio doesn’t do it justice.
Comments
132 Responses to “Lucky to be a Programmer”
Leave a Reply
Great post! I am now on a job that is really testing my passion for programming (since I have the title of programmer but do little or no programming), but instead of just sulking and felling I am use that time when I am not doing anything to just relearn stuff I have forgotten and languages such as c++ or just hardware stuff.
PS: What has the name “Cangaço”?? Is it your cms? lol Nice name
A wonderful post! It beautifully captures the concepts behind the software industry, the industry of ideas. It is no longer a separate entity, but is increasingly a fundamental tool for all areas of research and business.
Surprisingly inspiring.
@Antonio: yea, I’m afraid the odds are pretty bad out there when it comes to finding interesting gigs. I think it’s really important to be purposeful about finding something interesting though, maybe while you have a job anyway so there’s less pressure to accept offers. Or maybe start your own company :). It’s cool that you get to use some time to learn though.
Cangaço is the WordPress theme
hahah. I love Portuguese - we have some funny words huh? Impossible to translate to English. Like I told you by email, I’m working on a complete theme to use on the site. The current one is just minor adaptations.
@Jack: thanks
Yea, it’s already to the point where people in other fields who don’t program are at a serious disadvantage. When I hung out in the Chemistry/Bio departments, I was appalled at how much time people would lose because they lacked basic programming skills. In business it’s even worse - I’m afraid to think how much money we lose in productivity because people can’t script Excel.
I think programming became a fundamental skill for most professions, but the educational system is lagging a bit.
As you say, software is increasingly fundamental, and I expect a lot of interesting work ahead.
@bruno: you see, I’m not the dark center of the universe like you thought
This is, I believe, the first time I respond to a blog post I don’t know the author of. This was truly a great post. Probably the finest piece of blogging I have read lately.
Wow! Thanks for this great post. I am currently in one of those jobs that is “squeezing the fun out of everything” that I enjoy about programming. I’ve been wondering if it’s possible to have a programming job that allows me to enjoy the programming I do. You’ve given me more than a little hope for my future.
Great post! The only thing I worry about is your comment about the third world children. While I definitely agree with the sentiment, I was recently reminded that not everyone (even here) has meaningful access to a computer. So when we sing praise to the benefits of the personal computer to society, we should also take a moment and think about who is still left out.
Very well written article, really sums up the whole deal really nicely! That’s pretty much exactly how I feel when I’m programming, it’s just so great when something you built works or when something that you’ve been trying to figure out just clicks. Or when you take a look at some really beautiful code you’ve written.
To echo the sentiments above, this is a fantastic, inspirational post.
When I finish a beautiful piece of code or module I feel that I have in some way transferred a unique piece of logic from my brain into byte code where it can be more freely shared.
Posts like this make me question my assumptions and remember the reasons I love doing this. Thank you.
Bravo. Great post.
Very nice article
Sometimes It’s very hard to explain people (mom also!) that we don’t work towards a paycheck.
Amen.
I completely agree with you! Too often I catch myself whinging about some new problem that I have to fix, but if I think about it, solving problems is my bread and butter. I LOVE it! I’ve often just took a moment from what I’m doing to think “wow, I can’t believe how much I love this job” I actually have the privilege of coming in to work and thinking, which is more than I can say for a lot of other people.
As for changes in biology, I would love to get into that area. I took a course on bioinformatics and it was really interesting. Great post!
[...] just read Gustavo Duarte’s essay, “Lucky to be a Programmer” and had to re-post some of it here. Rarely to I call a blog post an essay, but this one is [...]
An eloquent and inspiring essay, reminding us of how deeply enjoyable programming, software engineering, and computer science can be. Thank you.
Im glad to be a programmer as well, but programming is not art. Of course you could use programming as a medium to create art, but we are talking about software development. A craft for sure, but art is about either expression. Software development is about functionality.
Calling it art gives people who don’t understand how it is creative amo to attack it and perpetuate the belief that it is ‘just math and typing’.
You’ve put down in your post the sentiments I’ve been trying to get across to people for years. I’ve always considered programming as much an art form as any other creative outlet. I love being given a challenge and the feeling of pride that comes with the solution. Only another programmer can truly understand what it means to shave a few cycles off a loop or come up with a new algorithm that’s one line less than the last version. I get an immense sense of satisfaction from my chosen career, and as you, I feel lucky to be able to do what I do.
I recently left my job because it was killing the love I have for my work and I couldn’t stand it. The “business” and stress of a job has a way of destroying the creative spirit and I’m taking a couple of months off to recharge and get that spark back. My career as a programmer grew out of a hobby - I bought my own computer in 1981 and taught myself how to program and never looked back - so finding myself hating what I was doing was horrible and soul destroying.
A lot of people see us as nerds and geeks without lives and without emotions, but the emotion is there, the love is there, and the creativity is there. We just use ones and zeros instead of paint and canvas.
Reading your post, I was just amazed at how much I agreed with you. I am fortunate enough to have left Graduate School (I was working on a Ph.D. in Pharmacology) to start a career in Programming. I have mostly worked for myself, but have had crappy (and not so crappy) corporate Jobs as well.
I have had the same experience myself, both in Science and as a Programmer. Never have a read something that hit so close to the way I feel on a topic. Thank-you, and I hope you will find more of the same in your new career, no, I am sure you will, so enjoy it.
[...] 16, 2008 Lucky to be a Programmer : Gustavo Duarte For the past few weeks I’ve been working with a fellow developer on a project that required an [...]
[...] Lucky to be a Programmer : Gustavo Duarte “Few things are better than spending time in a creative haze, consumed by ideas, watching your work come to life, going to bed eager to wake up quickly and go try things out.” right on! (tags: development) [...]
[...] maybe this post will explain how I feel. I mean, it’s amazing to be in that creative mood, just solving [...]
I also found this post quite inspiring. Thanks very much for posting this, you’ve just made my day a little bit better.
To Chris –
The interesting bit is that software development is both things, both instruction set and creative act. Here are a several analogies to consider:
1) scores — nobody doubts the artistry of writing down instructions for producing beautiful results in music; composers are considered artists as well as those that perform, interpret, and modify the results. The same is true of lyricists/songwriters — they are poets, but the results are wonderful mulch for performers.
2) recipes — see above, chefs and brilliant cooks, presentation, etc — but the recipe itself can have inherent beauty, particularly if it is embellished with non-obtrusive anecdote, which invokes prose, and also takes us to …
3) poetry — avoid these; poets that recite their verse in public may have other nasty habits (paraphrase of Lazarus Long from Heinlein)
4) satire — of course I’m kidding with my last point, though I doubt the character of Lazarus Long was
5) engineering — just as bridges, watches, and architecture can have aesthetic beauty, so can code — it’s helpful if the beauty is more accessible, such as with great architecture, a visual punch in the pleasure ganglia, but beauty can exist in design, forever unseen by untrained eyes. And thus:
6) nature — the elegance (and disarray, sometimes) of natural responses to environmental stimuli have an endless array of innate beauty, at least as perceived by natural-born critics.
Cheers,
Matt
Art is about self expression. Programming is about functionality!!!
Why must everyone think that they are an artist??? I am a programmer and a musician. Yes, programming is creative. No it is not an art. Programmers are no more artistic than machinists, carpenters, or mechanical engineers. Programming is great, I love it too. Just be happy with what it is, stop trying to make it more.
To Matt:
Thanks for your response. My last post wasn’t to you, it was a general reaction to other posts.
I don’t consider Chefs or Engineers artists and I certainly don’t consider nature art.
To me art is about self expression. There is definitely aesthetic beauty in software (that only other programmers could ever appreciate), but this still does not make it art. Painters, sculptors, and composers were considered craftsmen just like carpenters and blacksmiths up until the renaissances. The concept of an artists didn’t exists until the work became focussed on expression rather than aesthetics.
An artists creates something that expresses an emotion and evokes an emotional response from those who experience it. I have never seen a piece of software that could meet my definition of art. Of course if a talented and artistic programmer set out to accomplish this they could, but those of us working in the industry are not artists.
yeah, i can kind of tell that you’re probably either fresh out of college or still in college. i’m at the point where i kind of feel like the garbage man of software engineering.. “where do you want this sh*t” “what kinda sh*t you want in your program.” , “you want a what with what?”
i still enjoy the sh*t, always have , always will
Great post! I’m a software engineer now, used to be a pure programmer in previous jobs, but I think the way that you feel can be extended to any job. It’s all about finding the quiet joy and pride in whatever you do and to do it your way. That’s the only way to find happiness in your job.
Quite an inspiring article for programmers like myself. Thanks for this great post.
stupid people can’t program. obviously, you are intelligent. but stupid people are not capable of programming.
Thank you all for reading and for the comments
Reading them made my day.
@Joshua: Totally agree. I’m from Brazil, so I’ve seen some pretty ugly realities up close. It’s easy to get carried away with the possibilities of Wikipedia or OLPC or whatever, yet there are plenty of people who haven’t touched a computer (or phone) in their lives. I actually spend a ton of time thinking about that, probably as a result of growing up in such a screwed up economy. However, I think the Internet also impacts those people in a positive way. I’ve been meaning to write about this, though it’s probably not postable here. If you’re interested, drop me an email at gustavo-web@duartes.org and I’ll email you when I get around to writing some stuff down.
@Chris: this is an old debate. Knuth wrote an interesting article on it, called ‘Programming as an Art’, which is available at Paul Graham’s site: http://www.paulgraham.com/knuth.html.
A while back I wrote about Richard Feynman and software engineering. In that post I talk about the similarities between software and other engineering disciplines.
In a way this is a silly debate. Art is complex and hard to define, so is engineering, and programming is a rich and multi-faceted discipline. Some reasonable definitions of art match good chunks of programming. Some reasonable definitions of engineering match good chunks of programming.
So, which is it? I don’t think there’s a black and white answer. You could certainly define each word to get a desired value for the truth, but given the loose nature of language I think ‘a little bit of both’ is a fair statement.
Wonderful post:
I’m a little unsure about the “Take Biology.” paragraph. I suspect the perceived lack of progress stems from the complexity of the systems being studied, rather than inadequacy in the study. That said, the point you make that software can help here is well made.
@Derek: absolutely. I don’t mean to say that biologists are buffoons that need the programmers to come and help. It’s the complexity of the system as you pointed out. But this need for computers in science, in areas where our brains flat out don’t cut it, that makes the future of software in science so interesting.
In fact, some of the challenges in ‘biology’ _are_ physics / chemistry problems. For example, protein folding. Given the amino-acids in a protein, it’d be dandy to know what three dimensional shape it will take once built in a cell. This is an atomic / molecular issue, so it’s fair to say it’s less biology and more the exact stuff which I say has ‘progressed’. Yet, it’s very complex and so far unhandled despite computers.
Wow you’ve taken the thoughts right out of my head and put them down in a beautiful simplicity that mirrors your code no doubt. I think you’d like this:
http://youtube.com/watch?v=cCdbZqI1r7I
Are you a mossaic?
Definitely amazing.
Congratulations on this post, very inspiring.
Interesting post.
[...] Daily Palliative: Lucky To Be A Programmer Jul 16th, [...]
Gustavo,
Interesting read I must say, I wanted to ask what you might recommend if one were interested in the bio-informatics field, just wondering what courses you may have took in order to get a better understanding on biology and bio tech.
Matt reminds me that programming is creative, like other creative work: music composing, painting, I truly agree programming is art.
Hard working, intelligence is a part of programming, that’s why people could see the beauty of code.
a really great and inspiring post!
Chris –
I agree that the crux of this debate might hinge more on semantics. I definitely indulged in blurring ‘perceived meaning’ when I invoked ‘beauty’ (and awe-inspiring) vs ‘art’.
Having said that, I’m left curious. From your point of view, focusing on the musician aspect, how do you classify the composition of scores, or lyrics, vs the actual performance of said music/poem? Are both acts art? Or is their a classical gradient here (subjective *or* objective … both are possible)?
Cheers,
Matt
[...] programming…our software houses make coders, not programmers…. have a look at this article… Lucky to be a Programmer : Gustavo Duarte a great post… __________________ my donkey has a 7950GX and likes Iman [...]
Again, thanks everyone for the feedback!
@Steven: My personal path was a bit twisted because my undergrad was math (focusing on computer science stuff) and premed. So I did ‘classic’ stuff like organic/inorganic chemistry, biology, etc., plus the computer/math stuff like algorithms, statistics, etc. But this is an inefficient way to go about it - you really don’t need too much formal coursework in chemistry/bio. Then I did a tiny bit of grad work, still in Math, where I took a Bioinformatics course.
The field is pretty broad, so what exactly you need varies a bit.
There’s an open access journal at http://www.biomedcentral.com/bmcbioinformatics/ which gives you an idea of what sort of stuff gets studied.
On the bio side, understanding of genetics and cell biology is extremely useful, and something you’d have to learn from courses or from reading on your own (very doable).
On the math/CS, there are lots of statistics (including Markov chains, Bayesian, Monte Carlo, lots of stats), machine learning, neural nets, algorithms, dynamic programming. I mean, there are so many areas in bioinformatics that it touches a bit of everything. Some examples:
1. To work on sequencing, you want lots of statistics. You’re trying to match one sequence of nucleotides with another, computing how far apart they are, relative distances, etc. You might compute ‘genetic distance’ between species, or a single gene, that kind of thing. So lots of statistics, plenty of algorithms to deal with the problem.
2. To work on protein folding is a bit different, there’s a lot of work in doing computer simulation of atoms and molecules to try to figure out how a protein might behave. Different bits of math and CS here, this is more like numerical analysis and more classic scientific computing.
3. There’s a lot of machine learning to deal with the explosion in literature and information. You might use something like a parts-of-speech tagger to try to digest journal articles and automatically mine information from them.
It goes on and on. I’m not an expert in the field by any stretch, but I hope this helps a bit. Best of luck.
Great post. Truly inspiring. I am giving it to all my students to read and many colleagues too.
I have been in the industry since 1972 and I can never get bored. Life and work merge into one and every day brings a little bit of happiness. Some days are heady and you are in the zone. But it is always, always engrossing. In fact, I would recommend programming for fun as a way to boredom in the old age.
I am like the Ancyent Programmer described in this http://tinyurl.com/5wv8cq and I can attest that I had more fun than I ever imagined in my life.
Great post! Thanks for that - I was looking for analogy to present the art of programming to a painter. Math equations will do the job (hopefully)
The joy of coding is why I do open-source work out of hours.
I no longer look for technical challenges at work, I can find them wherever I like (with the side-benefit that what I do benefits society).
[...] Lucky to be a Programmer : Gustavo Duarte “Under the right conditions, writing software is so intensely pleasurable it should be illegal.” Don’t tell my wife, OK? (tags: programming inspiration computerscience elegance algorithms) Tags: algorithms, computerscience, elegance, inspiration, programming [...]
Another great entry Gustavo! I found it very inspiring. For anyone interested in another essay about the ‘art of programming’ this one ( http://www.developerdotstar.com/mag/articles/art_computer_programming.html ) is a great read.
Hello, Gustavo. Nice article as well as those 3 regarding the booting process.
Regarding university education, I’m one of those that started studying Computer Science because of the challenge and joy of programming. After two year, there was almost no more programming. Yes, it seems institutions have a problem with that. Hopefully, that will change.
Good luck!
PS: from Argentina, studying now at grad school in Canada.
Well said!
This essay echoes the sentiment of Andrei Ershov, expressed over 35 years ago in an article entitled Aesthetic and the Human Factor in Programming: “To be a good programmer today is as much a privilege as it was to be a literate man in the sixteenth century.”
[...] Gustav Duarte has posted a great article titled Lucky to be a Programmer. [...]
[...] A good read. [...]
[...] from an excellent essay by Gustavo Duarte. Posted by Grant Filed in Funny, [...]
Inspiring! Thank you!
I’m not usually one to link to my blog in comments, I usually just write something out again, but I made a post several months ago that really touches on the latter part of your post, about how programmers, or the technology sector in general is really affecting and changing the world we live in for the good, even if people don’t appreciate that. Anyway, here’s the link, but if you want to skip to the meat of it just click the link in the middle of the post: http://www.mcubedsw.com/blog/index.php?/site/technology_giving_back_life/
[...] Duarte wrote a neat entry on the simple joys of writing software. As a software engineering bachelor, I couldn’t agree more with his sentiments. There is [...]
[...] post on the merits of being a programmer. digg_url=’http://www.naoi.ca/archives/17′; digg_skin = [...]
Thanks for the feedback everyone.
@spanky: I’ve done that in the past as well. However, it gets tough when you have a family and any other interests. I really enjoy reading and doing some non-computer stuff, time is at a huge premium for me right now, so if I can get some joy at work, that’s helpful.
@Eric: that was an excellent read, thanks for posting it!
@gaston: that’s a great point. Joel Spolsky had a good post on this: http://www.joelonsoftware.com/items/2008/01/08.html.
I was myself a Math major, so I personally love the theoretical side of things, proofs, that kind of stuff. But it’s definitely not programming and I agree with the point both you and Joel make.
@Roger: thanks for posting the article. I really liked it and I get a huge kick out of reading older computer science stuff.
@Rodrigo: muito obrigado
E parabens pelo excelente trabalho com a Boo.
@Martin: I make that same point with people all the time! There’s a strong tendency for people to think highly of what’s “old and good” versus the scary new stuff.
Think about society. People are always saying how “things are degenerated now, whereas back in the day things were great.” I mean, WTF? Do they mean ~65 years ago when blacks were lynched, Jews were killed in ovens, women had separate job sections in the paper, and being gay was illegal?
Come on. Things improve so much and so fast, it’s incredible. Ditto for the Internet. It’s the most positive thing ever to happen in the world. It’s an amazing wealth-distribution, economy-optimizing, information-sharing engine that will bring us untold benefits everywhere.
And of course the medical & science stuff, a talking device for Stephen Hawkins, I mean, seriously. Everywhere you look. I’m a pretty skeptical person overall, I doubt things by nature, especially the conclusions I have reached. But on this front the evidence is overwhelming.
Brilliant. I love it.
I personally like Wordpress’s motto: Code is Poetry. It is, however, incomplete.
Too bad they can’t put an essay like this in a company motto!
[...] is little better than someone wholoves their work: For the past few weeks I’ve been working with a fellow developer on a project that required an [...]
[...] Gustavo Duarte [...]
[...] á ágæta hugvekju um vinnu, vísindi og veröld. Ætli þeir séu ekki fleiri, sem þekkja fullnægju góðs [...]
I rarely read a blog post that makes me excited about being a programmer, thanks for being an inspiration!
Quite an inspiring post. I often liken my work to being a watchmaker. It’s highly-skilled, uses specialized tools that other people never see, is analytical and follows concrete rules but also allows room for creativity, and produces something so ubiquitous and elegant that people don’t understand why they’re paying you so much.
[...] Duarte writes in his excellent piece, “Lucky to be a Programmer”: For the past few weeks I’ve been working with a fellow developer on a project that required [...]
[...] Poor Programmers… Share This: These icons link to social bookmarking sites where readers can share and discover [...]
Very well said. My employer very often makes me tired to technology; but nights & weekends, I code for fun. At work, everything MUST be over-engineered, simple solutions that work are frowned on if not outright banned. I often look at things we build and think - ‘I could have done that for 20% of what we spent.’ But they think because their business is big and complicated they’re technology has to be too. But the golden handcuffs make it hard to leave. The compromise? Open Source - by working on some open source projects, I find a release for that creative drive.
[...] Duarte sums it up. Permalink [...]
I understand what your saying, but I don’t think it’s the corporations fault. Its the nature of software engineering. Engineers theses days must spend much time investigating, debugging and even testing. We spend more time analyzing, reading and investigating then coming up with solutions: this is the inherent falicy that everyone seems to misunderstand about the reality of the software engineering field.
Thanks for the inspiration. I’m printing this one out.
I have been going up and down each day thinking if I can afford to leave a medicine career (I am a MD) and start from scratch as a programmer. Ofcourse, its not out of the blue and I am thinking of it because I have been learning and doing some programming in javascript and php as hobby.
After reading this post and some of the comment one think I have understood well and that is that not everyone, even with years in to this profession, see it a way of getting a paycheck. There is more to what a programmer do and enjoy it for more that a means of getting a paycheck.
I think I am not doing anything wrong. I am right in thinking that I should do what I enjoy more and not because I have already given year to medicine and that fact that most who are into programming started at very early age.
I would be glad to hear from the author (and any reader) for their suggestion on my future plans. I am quite strongly thinking of programming as my new profession but still their are weak moments especially when people bring the fact that I can make much much more money in medicine and even at the acme of my career in IT I would make less than an avg medicine guy. I agree with this stark truth but cant get over the fun of writing code, the thrill of designing the webpage with an sprite image of 5-10kb placed smartly with css.
I would appreciate if the author could provide me his email so that I can ask him for some more concrete advise.
thanks all for such nice discussion.
Wow, this post really struck a nerve. Thank you all so much for the feedback.
@Pascal: that is a very good point. I remember reading one Paul Graham essay where he talked about how one of his YC alumni went on to a big company, but a ‘good one’, and yet he still noticed how much his LOC / week decreased at the big co vs. the startup.
It’s natural to just ‘blame the bureaucracy’ but you’re quite right, once software reaches a certain size and complexity changes become harder, not because of the institutional failings, but because the inherent challenges truly do shoot up.
It’s one thing to blaze ahead when you have a 20k line codebase in a product that has never been in production. It’s another when you have 1M lines deployed in multiple versions, localized, having to maintain binary and interface compatibility, etc etc.
However, I did factor that in when I thought about this piece. For example, look at the Microsoft of 10, 15 years ago. They worked on very complex products, but by all accounts it sounds like people were happy there and got a kick out of work. The Microsoft of today, not so much. The change was mostly institutional, or so it looks from the outside.
I think software can be fun even in complex environments, in fact there are interesting challenges that _only_ arise there. But it’s up to the institution to get it right. Is it gonna be Peopleware or Pointy Haired Boss?
@Vik: You can reach me at gustavo-web@duartes.org
I’ll write some thoughts here though so that it’s out in the open rather than locked in our mailboxes.
Where do you currently practice medicine? Is it in the US? I spent a lot of time around American doctors, so I saw a lot of the burn out and challenges they faced.
But I have to be honest with you, the “grass is always greener on the other side” effect is very strong. There was a lot of that going on for me when I was about to switch (into medicine away from computers). I was burned out, and medicine seemed like a good exit plan. When I thought more about it though, I realized that burn out would happen in any profession, and that in a way I was going about the problem the wrong way.
I’ve been programming computers from a very young age, about 6, and since 12 I’ve been programming pretty seriously (in C and doing large programs). So I’ve loved the stuff from early on, and STILL I thought about abandoning it, and still I was burned out. Which tells me that, at least for me, no matter how much I like something burn out can happen.
That’s partially why I wrote this post, for people who are now in the situation I was then.
In my case I took some time off - a lot of time off, and when I got back I was 100% into it again. Even running a SQL query and watching the database give me back the rows was fun. I was then lucky to find a great group of people to work with. The idea of going through med school and residency seemed insane at that point.
The joy you get out of programming as a hobby might or might not be there if you were to actually work on it. There are a lot of terrible, soul-crushing programming gigs out there. There are some good ones too. But then the same can be said for medicine. You might be in a group practice with a poor environment and squeezed by insurance companies, or you might have a nice position somewhere.
That was a lot of writing and a lot of rambling. The point is this: we humans tend to overestimate the impact of radical changes in our happiness, thinking that if we take some plunge things will end up far better. I would caution you against leaving behind your medicine career. I would encourage you instead to seek changes within your career: take a sabbatical, look for a different job, maybe some lateral move within medicine, or even - who knows - a place where you might be able to use a bit of your programming skills within medicine.
Then, if that doesn’t work, maybe the plunge is the right thing to do. The task would then be finding a good place to program at, or maybe start your own company, maybe using software to solve some pain point you know doctors have and selling it.
I hope this helps.
@Vik: another option would be to practice part-time and do independent programming work on the side. That might be a good compromise.
Regarding the early age thing, I don’t think it’s necessarily an issue. I am not sure where your programming skills are currently, but it might be worthwhile to read some prominent open source code to get a feel for what decent-quality (or at least production-quality) code looks like.
In my case I assure you I’m no programming superstar. I have decent talent with it, nothing great, but I love it and I try hard.
I remember the days when staying up late and working hard, focusing on one task or problem or project was a lot of fun. Unfortunately over the years my employer has sucked that joy completely out of me. I’m looking forward to getting it back when I quit and start my own business with some others.
Good post!
I am an amature programmer who is currently just programming for myself and I cant agree more with what you have said, people around me cant understand why I would want to spend long periods of time programming as they see anything similar as work and therefore not worth doing on time off but its enjoyable to solve the problems and create something that works well and is nice a simple.
Nice article!
Very nice and Inspiring article…
I really enjoyed reading it. Very nice written,
I’m asking you, if I can please, translate this article into Hebrew, I think the people here, in Israel, should read it.
Thank you very much for a great article…
@Yaniv: absolutely, go for it.
A-FREAKIN-MEN
Gustavo,
Exelent. I have worked from 1971 till now in different tecnique areas as a programmer. This means I remember dinosaurs like PDP8,IBM360, etc. All the time the feeling about what is to be a programmer is just the same. You have explained the thing in a very pleasant manner. Now I am nearly at the finish of my career and want to say you “Thank you”. You gave me once more the feeling to be young and part of an enthusiastic programmer group.
Very nice article! Can we translate this article to Russian, for russian developers to read?
Great article and it definitely supports the long tedious hours one works when focused and enjoying every minute of it
nice article, thanks for sharing.
Very nice article. I came across this post from another blog and I see the reason why it was recommended in the first place.
I’m also interested in translating this, in my case into Spanish, and maybe share it with fellow students at college (I’m a student of what would be equivalent to computer science). Is it okay with you? The original source would of course be cited :).
Thanks.
Thank you all very much for the comments!
@Clara: that is very cool. I started out in the IBM PC, so I only know these classic computers second hand, from books like Mythical Man Month.
Concerning translations, by all means, feel free to translate the post, but please provide a link back to the original. I can send you guys a properly formatted HTML file too with the post, before WordPress mangles the HTML, if you wish. You can reach me at gustavo-web@duartes.org
There is one minor alteration I am going to make when I have a couple of minutes in the “Biology” part to make it clear that the issue is the systems complexity in biology, while cutting down a few words. Brevity is the soul of wit, heh, witless as I may be. Damn it’s late.
[...] Continue reading Lucky to be a Programmer. [...]
Lucky to be a programmer.
Question: How lucky will you be when you reach an age past 45 and jobs will be refused to be given to you due to your age?
Better find a second alternative by the time you get to your 45’s + years old.
The current technology won’t help you much 25 years down the road.
I’ve been in system programming for 30+ years and I know what I’m talking about, kids.
@John: my mother in law started programming in Java at ~50 years old, transitioning from a totally non-IT-related career. Female, 50, and she’s been pretty happily employed since (was about 6 years ago). Anecdotal, to be sure, but I know several people over 40 programming.
I think there are plenty of other careers that are even riskier to get old in.
But the bottom line is: plan for your future, don’t trust your paycheck to last for ever. Live below your means, invest, sell a startup, do what you need to. There are a lot of other reasons you don’t want to depend on a paycheck anyway.
[...] התכל’ס על סדרת הפוסטים: ”כיתת אוּמן“. לא מזמן קראתי פוסט שכתב Gustavo Duarte. המשפט הזה גרם לי לחשוב על המונח ”כיתת [...]
[...] Gustavo Duartes: Software, computers, and business - particularly Lucky to be a Programmer [...]
great post
Thanks
[...] the great article on our fluorishing craft, Lucky to be a Programmer by Gustavo Duarte: For the past few weeks I’ve been working with a fellow developer on a project [...]
Your post was a breath of fresh air. I give new programmers that come onto my team a similar speech on their first day. I take them out to lunch, one and one, and ask them to describe their choice to program professionally. I have not tired of “turning the switch” inside of people who begin by shrugging at it as a means to an end, but end by saying “Wow, I never thought of it that way.
Somewhere near the beginning of my “speech”, I ask them to define art. Most people provide examples of definition (painting, sculpture, etc.). What makes them art?, I ask. Eventually, the conversation boils down to realizations such as:
- Art is more than the sum of its parts
- Art is the intangible taking form
- Art is something created from nothing
- Art is anything that changes the way you feel or think about something
Programming, indeed all of Computing Sciences — heck, the entire field of study of Mathematics — has a reputation of being cold, unimaginative, and monotonous. However, I challenge anybody to differentiate it from the most magical and colourful of arts!
We create things from *literally* nothingness. We do not even use raw materials such as paint, a canvas, our bodies, or the pages of a book. Our art is closer to music, in that we require instruments to create our work on a “canvas of silence” (as my old high school conductor used to say).
We take nothingness: barely detectable voltage differences in a microscopic transistor, and give it form. Our works appear to have shape & form, and our audience feels entranced enough to reach out and interact with it; to touch it and say “it’s here, it’s ‘this’ wide, and that’s ‘below’ it” etc. It’s given tangible appearance, but still and always, it is nothingness. It never reaches the tangible form of a sculpture or painting. Like music, it ceases to exist except in our memories and imaginations once the instruments are packed up.
We are artists of ideas. We take an idea and care for it and grow it the way a composer does a musical theme. We compose overtures of it, variations of it, and finales. We fret particularly about instrumentation! Where a composer worries about whether the low brass have enough weight to carry the foundation of the theme through the next phrase, we worry about the roles of so many peices of architecture and how they interact and hand off messages seamlessly and eloquently to one another.
Our audiences experience our smoke-and-mirror show as realness. We have created a world out of nothing but our ideas, and we take them by the hand. If we’re lucky, we change the way they think or feel about something along the way.
Jef Bray
Software Engineer
Halifax Regional School Board
It seems that you picked a good field for yourself. As a fellow programmer of nearly 30-years, I have the same passion as I did creating my first BASIC program at my first job. I hope you keep the passion and fun.
There is such beauty and reward in logic - great post, you expressed many of my same sentiments…
yo man , you will NEVER have sex , no women will ever find you attractive !
Every time you will walk down the street and see a good looking woman , you will feel pain in you stamach an bluch in your cheeks. You are a low value guy for her , and you know that.
Your mindset is your prison ! Try living in the real world. Stop coming to this forum where another 10000 programmers give you validation. You are waisting your life.
Watch “A beautiful mid” see how the genius tries to save himself from being a dorkish looser and leaves the academic world. Do not be a pathetic looser yourself , use you own head man !
Every hour you work in front of the computer , the guy who pays you (owns you - for you are a slave) is making more money while youa re getting older.
And remember this: all dorks you seek to impress with this brain washing article of yours - they DO NOT CARE ABOUT YOU.
Thank you for writing this uplifting article. The love of the programming art and science is what started me on this career when I was a young teenager. Words like yours help to reignite the passion. Passion is key.
The book Hackers by Steven Levy had a big influence on me too. It covers the time period when I began programming as a kid with my friends and shows what was possible back then.
Guess what: Even more is possible today.
Thanks again for the feedback.
@Jef: your comment would have made a great post as well
It’s funny you mention magic… when I was a kid I remember distinctly my disappointment when I realized magic wasn’t real. Then, later on, I came to find out that math and the sciences are just as magic as any fantasy world I had ever read about.
@Ed: The beauty of math and logic are overwhelming. How can one look at something like Cantor’s proofs and not be overcome by awe?
It makes me happy that some of you guys got inspired or motivated by this. That means a lot.
ahmed, why you entered in this forum? I want to apply on you your sentence:
“Your mindset is your prison”.
Gustavo,
Great post. Captures the essence of how many programmers feel about their profession.
Thank you very much for such an inspirational article.
Sonny
This is a really amazing piece Gustavo. I got into programming very informally; totally self-taught, and I think one of the things that this process gave me was to have a particularly self-reflexive and analytical look at the actual process of coding. For some reason it just completely grabbed me, and I think that this is definitely because it is such an incredibly creative form of expression. I am always trying to explain just how riveting the process is - how stimulating it can be to come up with a way to do something, to solve those problems, to roll-out an idea. People take it completely for granted that there is such a vast amount of thinking that goes into the design and development of any kind of programmed thing, and yet your coding IDE is a tabula rasa for some of the most exhilarating and creative moments you can have. From architecting to development to testing, and let’s be honest, debugging even has it’s moments, programming is a total rush. Thanks for this post, it puts into words so clearly the thoughts I myself have about coding. (and yes, to one of the posters above, I also love the Wordpress line “Code is poetry” - it’s great!)
Dead on inspiring
Great post. but i am concerned about the remark on the the third world kid. Shows some level of misunderstanding and aloofness. You had better said an ordinary kid without stigmatizing or seeming to look down upon kids from developing countries(not ‘third world’).
@George: I’m myself from Brazil, so I had a very specific idea in mind when I wrote that bit. I’d say I’m pretty well informed when it comes to the reality I was thinking of. I do not look down upon the kids there at all.
[...] Lucky to be a Programmer : Gustavo Duarte “… writing software is so intensely pleasurable it should be illegal …” 16 July 2008 in Uncategorized | tags: programming [...]
[...] Lucky to be a Programmer : Gustavo Duarte "I think it’s because institutions are so good at squeezing the fun out of everything. It’s appalling for example how schools can take the most vibrant topics and mangle them into formulaic, mediocre slog. And so it is for programming. Many corporations turn an inherently rewarding experience into something people just barely stomach in exchange for a paycheck." Amen brother. (tags: programming motivation inspiration blog coding career) [...]
[...] Gustavo Duarte - Lucky to be a Programmer: “I think it’s because institutions are so good at squeezing the fun out of everything. [...]
I, also am a passionate programmer, and it was so hard to explain to some non-programmer friends what programming is about… now all I need to do is give them the link and hopefully they’ll understand. Great post!
Thank you for the great post. I can related to this. I love being a programmer.
Oh yes. I enjoyed those long and intense programming cycles too. Almost impossible dedline, you code all day and night, hight stress, high productivity. First round was fun, second was too. Years passed and I wanted more! Then once I taked this too far. 6 months projects keeps falling to my hands, the once fun high stress event become static way of life. You get used to stress, you start to need it to do anything. You are no longer able to anything if it is not some high stress job. You are so tired, every day. Did you know that seeking stresfull work perioids is sign of work stress? (”I can be more productive if I go to high stress mode”)
Just wanted to warn you guys. This hapens to when you turn 30.
[...] skills, which further hurts supply. I think the economics is in our favor and we’re still lucky to be programmers, though we must be careful during the recession. What do you say? How does it look out [...]
Truly inspiring. Thanks for the sharing your love for programming
[...] пытаюсь достичь совершенства. Gustavo Duarte , “Lucky to be a Programmer”, публичный перевод [...]
simply awesome.
[...] Duartes expresses why he’s Lucky to be a Programmer: Few things are better than spending time in a creative haze, consumed by ideas, watching your work [...]
[...] The Daily Palliative: Lucky To Be A Programmer [...]
Just feeling the same and reached your post
[...] none of this really matters. We still go about our jobs every day doing what we do and enjoying it. But we forget sometimes that software as a profession is only decades old! Compared to [...]
Nice post man. My life and job would be boring (and I don’t think I would be making as much money) if I hadn’t double majored in CS
I completely agree, there is no greater high than a successful day of programming; I would do it for free those days, but other days (when everything goes wrong) I am glad I don’t xD.
AMEN! PREACH IT, MY BROTHER.
hear, hear!
Showing some love to this topic “new to this wordpress”. I defiantly agree with it also. If you really think about it than it all makes alot of sense
[...] Sarah Haïm-Lubczanski L’article qui suit est une traduction d’un article intitulé : “Lucky to be a Programmer” publié par Gustavo Duartes sur son blog, le 14 juillet 2008. Les liens sont ceux d’origine et proposent donc un contenu en [...]
This is what I call PASSION. Thank you for these words
[...] 作者:Gustavo Duarte 翻译:ssword 原文:http://duartes.org/gustavo/blog/post/lucky-to-be-a-programmer [...]
It is true that in many organizations, programming is reduced from a fun task to something that must be done with metrics like lines of code which the management can gawk at and feel proud about.
The true essence of programming is in building innovative creations by mapping ideas formulated in a mind to a real world solution.
[...] if you find it so, it’s time to think about your priorities and move ahead (You should read Lucky to be a programmer). Related Posts:What skills should a good developer possess?How to become a better programmer [...]
I refuse. cilais dosage online New York Sorry, for off top, i wanna tell one joke) Did you hear about the guy who ran through the screen door? He strained himself.
For me, programming is exactly how you describe it. Fun. I taught myself to write BASIC when I was 13 on a Commodore 64, and I knew, after I finally wrote my first application that I wanted to be a programmer.
I really wanted to write video games (this was about when TRON was out), but found the complexities of dealing with graphics a bit too much for my wee little brain to handle. I found that my creative juices freeze up when dealing with graphics, so I have to farm all that creative stuff out, and leave myself to deal with the logical side of making everything work and do “stuff”.
Loved this article Gustavo, hit the mark for me. Thanks!
Great post! The only thing I worry about is your comment about the third world children. Thanks a lot. that’s good and helpful for me.
could not exactly turn some sentences. but in general was a useful article. I have read with admiration. good work.
[...] 作者:Gustavo Duarte 翻译:ssword 原文:http://duartes.org/gustavo/blog/post/lucky-to-be-a-programmer [...]
Amazing.