Why Do You Love Programming?

  • To me it's a love hate relationship.

    I love programming because there is no limit to what I can dream up and realize.

    At the same time I hate it because of the terribly convoluted way we have to take in order to achieve a certain goal. In this sense I feel that computing has actually gone backwards compared to where it was in the 80's on simple 8 bit micros.

    On a simple 6502 machine it was possible to:

    - boot the thing - type in a small program at the prompt - observe the result (graphical or textual)

    In under a minute. No GUI toolkits, no web interfaces, 300 call APIs and hundreds of megabytes of memory dedicated to the operating system.

    If there is anything I would like to change about how computers work I'd like to get away from monolithic operating systems and environments and move towards a more 'lego' like computing architecture.

    That would make the 'hate' go out of the love/hate relationship in a heartbeat or two.

    I have a really strong feeling that computing is on a dead end path, that at some point we are going to completely ditch what we've got and replace it by something much better. We're still stuck in the 70's for the most part (and yes, that includes the latest hot new little language that is only new because its creators have no sense of history).

    I know this sounds like the rant of an old guy, but I really think there is a very bright future hidden in all this and I can't wait to get there.

  • The big difference between programmers and non-programmers is that the latter seem to fail to grasp that computers are universal machines/tools. That you can make them do almost anything you want and simulate entire universes inside them. Or use them to solve any kind of problem.

    How can't you love this?

    Non programmers, on the other hand, tend to identify the computer with the software already available and known by them.

    Programming also means (at least ideally) being able to talk directly with the computer. It means being able to perform boring and time consuming tasks in a fraction of the time.

    Non-programmer users get frustrated so easily with computers because they're in a foreign land and they don't know the language. They can go to the station and take a bus if they know which one would bring them wherever they need to go. But they can't ask for directions.

    Compare, for instance, the expressiveness of the unix shell with GUIs when you want to perform a specific task on a particular subset of files/data.

    That's why I think that programming should be something available to (and acknowledged by) every user.

  • Nice article, here is a similar piece from Fred Brooks that I think nails it slightly more eloquently - http://www.grok2.com/progfun.html

    "The programmer, like the poet, works only slightly removed from pure thought-stuff. He builds his castles in the air, from air, creating by exertion of the imagination. Few media of creation are so flexible, so easy to polish and rework, so readily capable of realizing grand conceptual structures."

  • * because it offers the possibility to create an amazing experience for a potentially unlimited audience

    * because it enables the incremental building of poetic, elegant architectures that involve language, relationships and mathematics (much like music)

    * because i can do it any time, anywhere, on a device i can carry in a small shoulder bag

    * because within it, i can spend a lifetime learning new techniques, strategies and tool-sets

  • I like making things.

  • I can relate to what the author is saying here. Often I described my writing software as something that lived inside of me that was demanding to get out. I had little idea whether I could successfully commercialize it or not. The challenge is something like it required such a heavy up front R&D effort. So I started to see myself like an author. An author doesn't know if their book will be successful without writing it and seeing what happens. So I made my sacrifices and got the software to a good point. It's still my hope that After the Deadline will be my break out novel. Regardless of outcome, it is a labor of love all the way.

  • I love programming for that amazing feeling you get after you implement an amazing new feature that works perfectly, or squash that hard to find bug.

  • I started in college as EE, but the physics requirements were wearing me down. I had to take some programming courses, and decided that I much preferred the opinionated reality of software to the unforgiving objectivity of the real world. So I switched to CS.

    I've always loved creating stuff, and programming gives me an unbelievable set of resources.

  • "What I really love is tackling something no one else knows how to do, or maybe no one has ever tried to do. That's the most magical thing of all, figuring out how to write a program to do something totally unique, or even seemingly impossible."

    Thank you, codist! That is the best description of myself that I have ever read. Whenever anyone asks my biggest strength, I tell them that the answer is always "yes". Whenever they ask my biggest weakness, I tell them that I don't want to work on something that someone else can do.

    "Oh well, I am beyond getting the usual jobs via the usual methods, since no one hires a 51 years old programmer with up to date skills and 28 years experience being a passionate programmer who still loves to program."

    Wrong. I'm older that you, codist, and I'm never out of work. It's got nothing to do with age, or skills, or politics, or dollars. It has everything to do with results. I'm currently helping a customer's customer solve a 9 figure business problem with software that none of them ever even imagined, because we just kept digging until we came up with it. Once you deliver something like that, people like them don't let people like us get away.

  • Because it immediatelly gives a binary feedback whether I'm correct or not.

  • For me, it's because the challenges are complex and the problems lend themselves to being broken into manageable pieces. If I, instead, wanted to build a space shuttle, there are some real barriers to entry (not the least of which is the few millions needed to get me some rocket fuel and so forth), but with computers it's just me, the debugger and vi. I can do anything I want, limited only by my skill and imagination. I like those kinds of limitations...

  • I love reading articles like this precisely because I don't feel this way toward programming. I do toward writing, music, design, theatre, but code feels sterile to me. I hope one day to have it click and suddenly understand how so many people here feel to look at a page of code.

  • It is the only activity that I do that is purely logical. In a world that is run on 'emotions', 'sentiments' and 'politics' being able to apply pure logic when communicating (albeit with a machine) is immensely rewarding.

  • I'm not asking why you work as a programmer, but wether [sic] you have a passion for the act of programming.

    Ugh.

    I really want to like this post, but a typo in the FIRST sentence is such a turn-off.

  • It's the most rewarding form of creation (for a man at least) and it's the only thing I can do for 12 hours straight.

  • my first love in programming was 'socket'.

    when i create a program that can communicate each other, i just realize that the limit in programming is infinite. it's feel like a magic in your hand. a wizard of binary.

  • It's the only form of art I am able to create.

  • Because of this:

      input a,b,c
      x = (-b+sqrt(b^2-4*a*c))/(2*a)
      output x
    
    It feels sooo good!

    Solving problems, finding solutions, it is an adrenaline rush, an addiction, like playing god with bits and creating universes inside computers.

    That's how it feels.

  • python