32
votes

For example, being a beginner, I find a lot of inspiration and direction from reading this post by Bryan Woods.

1

39 Answers 39

26
votes

I'm surprised no one has mentioned The Pragmatic Programmer. It's a must-read if you are at all interested in your craft.

5
  • It used to be a "must read." Nov 7, 2010 at 16:30
  • 2
    @kirk.burleson: It still is. Nov 11, 2010 at 20:48
  • I will agree, reading it helped me realize a lot about what we do and how to go about it.
    – kowsheek
    Nov 14, 2010 at 19:05
  • I love the ``select’’ Isn’t Broken stanza. It isn't broken, it just sucks :)
    – user131
    Nov 24, 2010 at 17:59
  • Finally having read it, I will agree. And I suppose it is a worthy answer.
    – kowsheek
    Dec 28, 2010 at 16:12
13
votes

Gloves

Gloves - take a good, hard look at your first revision and just say to yourself, "gloves."

This post from the Daily WTF has kept me on the right path. I'll admit to several times having started developing something where a pair of "gloves" were the appropriate solution.

6
  • 3
    I don't get it. Nov 7, 2010 at 16:31
  • 1
    Kirk, you need to read the linked article for the answer to possibly make sense... though even then it doesn't really. Nov 7, 2010 at 21:01
  • 5
    It means when you overthink a problem you can end up with horribly complex solutions that end up getting more complicated due to the previous design choices. To summarize the article linked they try to create a ridiculous body heating system to keep your hands warm. Instead of just wearing gloves Nov 12, 2010 at 21:53
  • superb post! Excellent.
    – Dave
    Nov 16, 2010 at 17:46
  • +1 I lol'd @ the story. I can't believe they didn't stop after the "That's brilliant: we can reuse body heat more efficiently! This way, the system could be used when walking/jogging as well." comment. Nov 20, 2010 at 1:20
12
votes
+50

Read the speech given by Alex Stepanov at Adobe. At the end of 5 years this will seperate the GREAT ones from the GOOD ones.

http://www.scribd.com/doc/210467/Speech-by-Alex-Stepanov

5
  • You know, Stepanov's said some things with which I violenty disagree, but that speech is excellent. Oct 26, 2010 at 7:41
  • @Frank : Please feel free to share if that is programming related may be we all can learn something from you. Let us not talk about his American comments.
    – Geek
    Oct 26, 2010 at 9:04
  • His comments on OOP are just plain wrong: stlport.org/resources/StepanovUSA.html He thinks OOP is single-dispatch and class-based, for starters. (CLOS uses multiple dispatch, Self and Javascript are prototype-based, as counterexamples.) Oct 26, 2010 at 9:37
  • Is there some other source of this aside from the transcript? He noted that the transcript had mistranslations.
    – Jonn
    Oct 26, 2010 at 11:26
  • @Frank Shearar The guy just perefers simplicity to potential spaghetti I think. He also gave a lecture in Russian about a year ago; there he said that he prefers simple things like "for, if" and essentially sees nothing bad in writing Pascal in any language, if the code is effective and clear (as opposed to mistically duct-typed, as I get it).
    – mlvljr
    Nov 12, 2010 at 19:38
10
votes

I always found Coding Horror and Joel on Software to be inspiring on certain blog posts. They also always made me feel good because I understood what they were talking about and made me think of myself as a programmer.

8
votes

To read

To view


Sometimes it's more about people...

And a bunch of people on whose footsteps to follow, and on whose shoulders to stand (in no particular order and listed as they come to my mind now in free-flow): Alan Kay, Richard Stallman, Ken Thompson, Dennis Ritchie, Brian Kernighan, Theo de Raadt, Linus Torvalds, Eric S. Raymond, Rob Pike, Bill Gates, Steve Jobs, John MacCarthy, John Conway, Martin Odersky, James Gosling, Guy Steele, Donald Knuth, Edsger Dijkstra, John Carmack, Peter Molyneux... Either their own words and works were inspirational or their stories told by others. As long as you keep in mind that their skills and genius in some areas doesn't prevent them to be blind-sided by their own beliefs in others. Like anyone else. (The 2 books listed above will already cover them fairly well, for most of them!)

Or less famous but nonetheless active technologists that are interesting to follow from afar: Neal Gafter, Martin Fowler, Don Syme, etc...

I was inspired by the works of these people, and the things they did to achieve (or abandon) their projects.

Sometimes it's more about a culture and a dream, and breaking barriers...

Reading the 2600 as a kid when my English was embyonic, the story of early phreakers like Captain Crunch or the birth of the PC era with Wozniak at Apple and reading books and essays by William Gibson and Neil Stephenson were also inspirational for me as a programmer, though it didn't relate to programming directly. In that vein, even the Hacker's Manifesto, the Agile Manigesto or even things like the IEEE Code of Ethics were and still are inspirational.

5
  • +1 for the gates/jobs interview. Great interview and totally correct on the hosts vs. guests note. Nov 11, 2010 at 20:51
  • ++ for 11 links in 11 words
    – sova
    Nov 24, 2010 at 19:02
  • @sova: thanks, I had to actually dig them up but I figured that could be helpful. Thinking of it, just pointing to a search on youtube might be better in case they get deleted though.
    – haylem
    Nov 24, 2010 at 19:13
  • you forgot Wau Holland (one of the a founders of the Chaos Computer Club, which is one of the oldest hacker-organizations) - he was against censorship, copyright and was for an open information infrastructure.
    – Joschua
    Feb 16, 2011 at 23:07
  • @Joschua: a nice reference indeed. I didn't really follow Holland's achievements directly, but I did follow the news surrounging the CCC for a while back then. Lacking spare time for all this now, honestly. :(
    – haylem
    Feb 17, 2011 at 0:41
7
votes

The Last Lecture a book written by Randy Pausch the man behind Alice. It goes along with his last lecture "Really Achieving your Childhood Dreams". Always gotta remember to be a Tigger.

6
votes

it's a very short list, made of two books :

  • head first - design patterns
  • clean code
5
votes

In terms of guidance

The book The Elements of Programming Style by Kernighan and Plauger was very influential for me when I was learning C. The book was already considered "obsolete" by the time I read it, due to its use of PL/I and Fortran samples, but the tips transcended both languages.

Before reading that book, I was convinced "style" was about what I now consider trivial issues, like formatting (how many spaces for a tab? where do you place the curlies?). But style is what you have once you remove formatting and naming conventions. Is it easier to construct a string backwards and then reverse it? Then construct it backwards and reverse it.

Another book from Kernighan and Plauger, Software Tools, was also helpful, but not quite as good. And the much newer book The Practice of Programming, by Kernighan and Pike is also useful, but a far cry from The Elements of Programming Style. I wish I still had my copy. It's worth it for every programmer to read.

I grew an appreciation of testing and QA after reading Glenford Myers The Art of Software Testing. It showed me that testing was a real creative activity, and not just something for computer science majors who don't like to program. Perhaps with the growing popularity of Test-Driven Development more people will turn to Myers's book.

And I cannot think of a better introduction to the notion of abstraction than the book The Structure and Interpretation of Programs, which is available free online. It introduces the Scheme programming language, but hits upon many other topics in computer science, including declarative programming.

In terms of inspiration

In my academic career, I was inspired by the concept of Aspect-Oriented Programming. You can read some of the very early papers on AOP and end up with half a page of notes for ideas.

I also think the progress of Church and Turing is very inspiring. In the 1930s, before computers were even made, scientists and mathematicians were programming in a higher-order programming language: Lambda calculus. The construction of Church numbers and the predecessor function is probably one of the most clever programming constructs ever. It shows you how to make something from almost nothing.

3
  • 1
    If you're reading about AOP, don't forget Kiczales et al's earlier work, in the form of The Art of the MetaObject Protocol. Oct 26, 2010 at 7:35
  • Myer's Software Reliability: Principles and Practices is a pretty good read, too. Oct 26, 2010 at 7:36
  • +1 for SICP in instruction
    – Inaimathi
    Nov 11, 2010 at 21:02
5
votes

Not something I read. In 1984 I was talking to my neighbor and his friend. I was 16. The friend told me that essentially the world is split between computer users and computer programmers. He said only the smartest people in the world can become programmers.

Yeeeeee! What a challenge!

5
votes

Originaly Joel on Software, the way he writes made it very easy to grasp the concepts when I was beginning.

2
  • 2
    He's a good writer and I love to read his stuff. Just take some of it with a grain of salt or you may get depressed if you're not a rockstar developer. Nov 7, 2010 at 16:34
  • 1
    I wanna be a rockstar developer like I wanna be a douchebag. Nov 12, 2010 at 16:31
5
votes

Code Complete, Second Edition by Steve McConnell.

Design Patterns: Elements of Reusable Object-Oriented Software by Erich Gamma

I'm entirely self-taught, and I was fortunate enough to stumble upon an article (I've long since forgotten where) early on in my work that pointed me to these two books. The transformation of my code after I read those two books was staggering. I owe a lot to those authors.

4
votes

For inspiration, Yegge's Blogs, Graham's Essays and the SICP Video Lectures.

3
votes

Among many inspirations the most recent one was this book on: Apprenticeship Patterns

1
  • I hoped more people would upvote this. This book is amazing! It's not so much a guide for programming technique as it is strategy; showing you how to approach your programming career (and the profession of programming in general) by thinking of it as a life-long path and viewing yourself as an aspiring craftsman of a skilled art. Nov 12, 2010 at 21:51
3
votes

When I first read the Design Patterns Book in 1995 or something it was a real eye-opener for me as a programmer.

Nowadays, James Shores' book about agile development inspired me a lot, and lately Lyssa Adkins about coaching teams, both of which are highly recommended if you are interested in such stuff.

3
votes

Those of an Eastern bent may enjoy a cute little book of koans on the transcendent Tao of Programming.

This was my first step toward on the path toward enlightenment, and was the first thing that encouraged me to think about programming, and creative work in general, as an unconquerable entity of its own that exists to be discovered over time by the creator. Those who try to fight it or understand it will surely fail.

3
votes

The Little LISPer blew my mind.

I took a High School pascal programming class. I already knew C64 basic pretty well and asked the teacher if all programming languages were like Basic and Pascal. He lent me his copy of the Little LISPer. After spending the weekend reading it, I didn't believe such an odd language could exist or would work. When I saw it running on dial up mini he has access to, I was floored. It did exist.

After my second university level programming class; Algorithms and Data Structures, I switched majors to get access to the better CS Computer lab. They had Unix machines with lisp, scheme, prolog, SmallTalk80 and a ton of other tools.

3
votes

Code Complete . It covers most of the basic subjects you need to know as a programmer, and gives you directions to learn more about each of them. A very good first step in a learning path. Myself and lots of people I know, wish they read it earlier in their programmer life.

3
votes

The most inspiring talk I've ever heard was Richard Gabriel talking about that writing software is similar to writing poems. Poets often use a lot of effort to get few words just right - think Haikus - and we should strive towards the same kind of excellence and elegance when writing software.

Elegance and conciseness is as important in programming as in poetry and math, and it requires a lot of effort to do so fluently.

See some of the points on http://www.dreamsongs.com/PoetryOfProgramming.html

1
  • I shared an office with Richard at MIT back around 74-ish. Nov 11, 2010 at 19:25
2
votes

The most useful single book ever - not about programming, but about how to work effectively in this field: "Peopleware" by DeMarco and Lister. Should be on every programmers book shelf. And if you move up into management, doubly so.

2
votes

As Alan Kay said almost 30 years ago, point of view is worth 80 IQ points. Books that changed my point of view:

  • "Philosophical Investigations" by Ludwig Wittgenstein

    Sometimes we think we know, when in fact, we don't know. W. shows how to take a closer look.

  • "Fact, Fiction, and Forecast" by Nelson Goodman

    Here I've learned what the word analytic really means. Also, what the word pragmatic really means.

  • "Zen and the Art of Motorcycle Maintanance" by Robert M. Pirsig

    How can there be things that are better than other things? Why isn't everything the same, quality-wise? IOW, what is it that good movies, good cars, good food and good software have in common, that makes them good?

2
votes

I found How to Become a Hacker very inspirational. It also gives a workable roadmap for developing as a programmer.

2
votes

Soul of a new Machine (inspiration when I was in high school) SICP (probably one of the best books related to software development I have ever read)

1
  • Tracy Kidder's Soul of a New Machine should be required reading for every professional programmer. I've given copies to every newly-minted wannabe-developer I've mentored over the years. Just understanding his concept of "signing up" is worth the price and time. Nov 12, 2010 at 17:28
1
vote

Marvin Minsky

  • Computation: Finite and Infinite Machines

  • Semantic Information Processing

1
vote

Seth Godin, while not totally programming-related, has some inspiring posts for me as a programmer and hopeful business person (in addition to Joel on Software).

1
vote

The book of five rings by Myomoto Musasashi.

Some highlights.

Don't have a a favorite tool. Learn to use every tool, learn when it is appropriate to use, learn its weaknesses and strengths.

Staff whose work is not perfect can be used in places where the quality of their workmanship is in public view. The pillars that support the floor under a building do not have to have a perfect finish (they just have to work).

By doing one thing, do many things. So if there is a choice between doing A and B, but B can be used to do many things next week, do B if you can afford it.

1
vote

I started off from games programming. It all comes from NES days. Aspired to be game developer and I achieved it but changed to Application Software/Hardware Analyst for better career as my country for games industries is too niche.

During my early days, I actually felt a bit regret of entering into this IT roles. But later was inspired and influenced by my ex-colleagues on his accomplishments and they were quite active in these new technical development areas. During my free time, I will mingle with software programming to work on personal projects with my ex-colleagues.

1
vote

I know it's a hard read, but Knuth's The Art of Computer Programming is a Really Big Deal in our field. And Douglas Hofstadter's Gödel, Escher, Bach: An Eternal Golden Braid is inspirational for those of us with a mathematical or algorithmic bent.

1
  • I've been reading Coders at work (en.wikipedia.org/wiki/Coders_at_work) and almost all of the interviewed programmers refer to Knuth's book, so it definitely feels like a must read.
    – fejd
    Jun 14, 2011 at 10:32
1
vote

The Annotated Turing

Just picturing someone designing such complex methods & algorithms almost a century ago gets me motivated.

Not the answer you're looking for? Browse other questions tagged or ask your own question.