Creative Code: 14 Ways to Learn From Creative Programmers

how to thin like a programmer and become more creative
Photo by morganglines

If programming is your bag, you might check out my other blog Web Jackalope for creative web development and design articles.

The common stereotype for programmers is this: nerdy, pocket-protector wielding, and very, very boring. One doesn’t typically link a programmer as a creative individual. However, this couldn’t be farther from the truth. Working with code is one of the most creative jobs one can have. Programmers have to balance two very different worlds: a world of structure and a world of imagination. They create abstract concepts using very structured programming languages (like PHP or Java). It’s not an easy task.

I only know this because I’ve recently been brushing up on a bit of my PHP skills building some interesting Web sites (I’ll keep you all posted, don’t worry). I’ve found that programming is actually a great exercise in creativity. Here are a couple reasons why:

  • Programming gives ultimate control. Creating something from nothing is possibly the best example of creativity. The ultimate control over software or web site that a programmer has is perfect for taking the application to any direction that they wish.
  • Many ways to do one thing. Programmers have to essentially build a framework for the web site. They’re laying the foundation for something that, up until that point, is just an idea. The programmer uses a wide palate of tools and methods to find

Programmers have to find creative solutions or else they can’t create.

Programmers are a great example of thinking outside the box because, well… programmers can actually create the box. Here are some of the ways that we can learn from programmers on how to boost our creativity.

1. Learn a new language

Programmers are constantly learning new languages, either for fun or necessity. Don’t limit yourself to what just what you know and are comfortable with. Branch out and learn a new skill.

2. Start from the ground up

If you’re going to write software, you can’t just start halfway through the project. You have to start at square one. Sometimes this is the best way to find a creative solution for a problem is to go back to the beginning and work forward.

3. Question everything

Questioning everything means taking every assumption and making sure it’s correct. All programming starts with making the most basic assumptions, and then building on those basic assumptions. If something is wrong with the code at the base, then the software isn’t going to work well at all.

Sometimes creativity is limited by assumptions. New solutions arrive when we tear down assumptions and start with fresh perspectives.

4. Do it for fun

If you know any programmers, they’re constantly building something. Even when they’re done for the day on work-related projects, they’ll spend hours of time working on fun projects for themselves. Their work is also their hobby.

Continually mulling over new ideas and solutions is something that shouldn’t be a chore. It should be something that you find yourself doing constantly, like a reflex. And it should excite you.

5. Never stop testing ideas

Programmers are constantly benchmarking code to make sure that it’s as efficient as possible. Even the smallest change can bring a program or Web site to it’s knees, so constant testing and improvement is important to any bit of software.

Ideas should be tested rigorously and refined on a consistent basis. Your ideas will change over time, it just depends how much. Constantly evaluating them and just plain thinking them through is a great way to “benchmark” your idea.

6. Find a passion


Photo by Marco Wessel
If you’ve ever spent more than two minutes talking with a programmer about his work, you’ll find out very quickly that programmers have a passion for what they do. They eat, sleep and breathe programming.

Do you have a passion for your ideas and projects?

7. Master your tools

Programmers constantly improve their knowledge and usage of their tools. A great coder keeps tabs on software and is constantly finding ways to improve his usage of them. You’ll seldom find a programmer who doesn’t tweak his toolbox regularly.

No matter what your skill set, you’re limited to your skill with the tools you use to create. The more of an expert you are with your tools, the more you’ll be able to create.

8. Start making abstract associations

The people behind projects like Skype, Google Docs and Twitter all have one thing in common: They fused seemingly abstract concepts together. Taking what-ifs and testing them is a great way to start thinking of things in a different, more creative light.

9. Think of structure as a tool, not a limitation

People associate creativity with taking a giant, blank canvas and letting our ideas flow without any sort of limiting structures. However, there’s a huge problem with this type of thinking: It’s a great big creativity myth.

See, limitations are everywhere. We can’t avoid them, we can only hope to work with them. A programmer embraces the limitations of his programming language or tools and works around them. These limitations help him as they make a foundation to work from. Sometimes discovering a new workaround will lead to an even bigger idea. Necessity is the mother of invention.

10. Don’t rule anything out until you try it.

Your kindergarten teacher was right: There is no such thing as a stupid question. If you’re adhering to #3 and dismissing all assumptions, you can’t be certain it’s not going to work until you’ve tested it. How do you know it won’t work unless you try it? You might be surprised. Even if the proposed solution doesn’t work, it may help you find a solution.

Sometimes it’s just best to start with a prototype and try it out. If your prototype doesn’t work, then trash it. If it does, you’ll have stumbled upon something that just might work.

11. Always look for a simpler and more elegant solution.

A good programmer is one that understands that finding the simplest solution is always going to be better. Complicated solutions lead to… complications. A practical approach to programming always works best in the long run.

Our ideas sometimes become too complicated. We get caught up in the novelty of the idea that we ignore how practical it really is. The simplest way to solve a problem is often the best way to solve a problem.

12. Don’t be afraid to build off the code of others.

The beauty of the Internet is that the solution your looking for has probably already been done by someone else. When building a new site I almost always use pre-existing open source code. Why recreate the wheel?

Putting a great idea into motion doesn’t mean you have to start from scratch to create it. Use existing ideas and turn them in to something better. Sometimes a great idea is only modifying something that’s already been done. Gmail is a great example. They “reinvented” email by adding useful features to traditional email.

13. Don’t be afraid to collaborate.

Some of the best coding — or any creative projects for that matter — are done not just by one coder but by many excellent people inspired to work toward the same goal. Assemble a great team, use the most brilliant ideas no matter who they come from, and let everyone contribute.

14. From the very basic, create the beautiful.

Programmers often use some very basic code over and over, and while those small bits of programming language aren’t necessarily beautiful in and of themselves, they can come together to create a final product that is amazing. No matter what creative project you’re working on, pay attention to the details, but most especially pay attention to the effect those details have on the overall picture.

If you liked this post, check out my new blog on web development, Web Jackalope (feed).

Post helped along by some ideas and brainstorming from Leo Babauta of Zenhabits. Thanks Leo!

It's only fair to share...Share on FacebookShare on StumbleUponTweet about this on TwitterShare on LinkedInShare on Reddit

Comments on this entry are closed.

  • every other day diet March 5, 2011, 6:03 pm

    Rattling superb visual appeal on this site, I’d value it 10 10.

  • abhi August 28, 2010, 5:18 am

    Thank you for your explanation. There really useful information.
    http;//manashosting.com

    • travesti January 26, 2011, 12:58 pm

      My admin you Very nice, attractive and eye catchy theme site in

  • travest May 4, 2010, 5:43 am

    Hi, I'm finding Istanbul EBRU.bu article cof useful and helpful. well thanks a lot I would share. http://www.travesti1.com

  • travesti May 1, 2010, 5:09 pm

    Thank you for your explanation. There really useful information.

  • mynext April 30, 2010, 8:53 pm

    Very nice list. Do like do it for fun. As programming is fun.

    Often get side tracked from my proper programming work because I just wanted to code together something for fun.

  • Jacob Perkins April 30, 2010, 10:04 am

    Thanks for highlighting the creativity and imagination that programming requires.

  • Anonymous January 12, 2010, 9:34 pm

    Let me know when you write using an actual programming language and make an actual program.

    Hint: Web pages are not programs. A monkey can make a web page, programmers have actual skill.

  • Anonymous January 12, 2010, 9:32 pm

    Web Development != Programming

    Really gets to me when web developers fancy themselves as real programmers.

    • lolman January 4, 2011, 5:04 pm

      Haha, what a lame comment. That is about the lamest comment I have ever read. It is because of you countries start wars.

  • Travis September 25, 2009, 11:41 am

    Creating your own things is definitely a fundamental to being any sort of programmer… and like you said, often times that inner drive surrounds their entire lifestyle. A lot of programmers, myself included, are always knee-deep in some form of project or craft.

  • Gavin Morrice August 2, 2009, 5:24 am

    “The simplest way to solve a problem is often the best way to solve a problem”

    … so drop PHP and use Rails instead ;)

    Great post

  • Webhostright July 6, 2009, 2:20 pm

    Thanks very much for this, the 14 points here are a little different from the usual advice often found duplicated, i will keep these in mind.

  • SEO February 26, 2009, 2:23 am

    I am just wondering that how programmers after constantly building something, can spend hours of time working on fun projects for themselves.. I have never find any charm in programming, than how people play with this very smartly with their full interest..

  • HCF December 18, 2008, 2:25 pm

    Dude, you gotta learn to count from 0.

  • Colchones November 4, 2008, 4:48 am

    I dugg this article. It's really good. I am a SQL programmer and I love it! Sometimes I dabble in with other languages but my heart lies with SQL:–)

  • Dress Up Games October 23, 2008, 5:04 am

    really nice article i completely read

  • Doro September 4, 2008, 5:08 am

    great post

  • Ray September 1, 2008, 2:51 am

    So great your post, I like it.

  • Justin August 20, 2008, 12:46 pm

    Great article and at the age of 18 i create games and it really does take a lot of imagination to do what we do.

  • Raghava Naidu August 19, 2008, 8:00 am

    Good article

  • Sujoy August 15, 2008, 10:17 am

    nice article, and yes programmers rock
    may the source be with you all :)

  • jake August 15, 2008, 1:51 am

    Great post! I always hated working with people who claimed “it can't be done” – my opinion has always been “it's not a matter of 'can' but 'how can' we do it?” there are always ways to creatively solve problems which has always been where I found such enjoyment in programming!

  • Cybersam August 14, 2008, 10:33 pm

    very well written…great post!!!

  • mee August 12, 2008, 10:04 pm

    4 and 6 are so true for me. sometimes i'll even find myself thinking a couple sentences in code instead of english. :)

  • Kjartan Ólason July 30, 2008, 3:37 am

    very very very good post

  • davidstern July 28, 2008, 8:11 am

    Programming is not just creative, it's art!
    I am a programmer and also a musician. There are a lot more like me.

  • Shamelle @ TheEnhanceLife.com July 28, 2008, 5:34 am

    I am a programmer myself and can related well to what you've just mentioned!

    Great post
    Shamelle

  • Chris OConnor July 26, 2008, 6:32 am

    Incredible – just amazing. I've been programming for about 18 years, and remember coding on a Commodore 64 when I was 12.

    Nothing I've read has “covered” our ART before as you have – and truly capture what it's about. I've always believed I was a Code Poet… :-)

    And – as for passion, definately – working with a great bunch of LIKE minded folk is the best way to keep this going. I've worked with some unmovivated and “couldn't-care” programmers – and you get dragged down to the same level. As with life – hang out with “positive” people – and you'll become positve too – and good things will happen.

    Thanks again – loved your article… :-)

  • tracycai July 25, 2008, 12:45 pm

    Wiring together bussiness logic and other pieces of functionality isn't the most exciting task in the world, but it is the nuts-and-bolts work on which all companies are founded. It is the “real work” associated with development.

    I think the underlying problem with software development is that building business software to solve user's problems is ultimately boring. Most of us get into computers to express our creative side, not to assemble components into work applications.

    After you get functions specs from project managers, you don't have much room for your creativity side except make the best out of it, like make it faster and more user friendly. My two cents.

  • tracycai July 25, 2008, 12:43 pm

    Wiring together bussiness logic and other pieces of functionality isn't the most exciting task in the world, but it is the nuts-and-bolts work on which all companies are founded. It is the “real work” associated with development.

    I think the underlying problem with software development is that building business software to solve user's problems is ultimately boring. Most of us get into computers to express our creative side, not to assemble components into work applications.

    After you get functions specs from project managers, you don't have much room for your creativity side except make the best out of it, like make it faster and more user friendly. My two cents.

  • xavi July 25, 2008, 8:27 am

    In most of the application development projects, the developer doesn't need to be creative…
    The architect or the project manager needs to be creative, but the programmers just code their wishes…
    .. unfortunately, i'm a programmer!

  • Kuroki Kaze July 25, 2008, 7:39 am

    Cool article.

  • danm900 July 24, 2008, 10:54 pm

    Great. But… being creative doesn't necessarily make you visually skilled, which is distictly creative yet unique from the programming role. You can be artful in your craft, but 'creative' is often reserved for certain limited-programming roles, such as user interface designer, especially in web or application development. We're featuring Life Dev at design.feeblables.com since you are creative in your writing about programming.

  • Bobby July 24, 2008, 10:24 pm

    Awesome post! Definitely highlights some of the great aspects of being a programmer. I went from being a PHP programmer to a C# programmer and I must say, as you stated, you're always updating your skillsets and it is truly what you make of it.

    I'm gonna link this post to my web site! Keep up the great job

    • BHAGWANT July 25, 2008, 2:28 am

      Really great post! Thanks

    • smithveg July 26, 2008, 4:09 am

      It's a Good Sharing Article. Learn from a creative coder.

  • BillIsGay July 24, 2008, 9:43 pm

    You're absolutely righ ( brialliant ).
    I was a PHP programmer before and writing system from scratch and now I switch to WebObjects still writing and planning systems from scratch.

    It is “us” developers/programmers making those ideas in to reality.

  • dfs July 24, 2008, 8:48 pm

    rewt

  • ksawyer123 July 24, 2008, 8:01 pm

    I dugg this article. It's really good. I am a SQL programmer and I love it! Sometimes I dabble in with other languages but my heart lies with SQL:–)

  • dankclimes July 24, 2008, 7:42 pm

    Lets get the negative out of the way quickly: Start from the ground up was a mistake and you didn't quite get the whole abstraction thing . That aside, really really good article. I find there is a certain romantic allure to programming and you managed to capture a piece of it very nicely. I wish people would explore this side of programming more often because, as you stated at the beginning of the article, programming is seen as a usually technical and somewhat boring task. So here's to the hackers, code cowboys, and DIY home boys everywhere. Get out there and do what you do best, create!

  • Wm July 24, 2008, 7:36 pm

    I have been a programmer since 1972. I did this professionally for 8 years. It has been my hobby since. It makes for great brain food, keeping the synaps regenerating. Although I have programmed in assembler and cobol (IBM mainframe), and C and pascal (Delphi) on PCs, I usually only stick with one language. I can not see any advantage to learning new languages because it is better to continuously expand your knowledge in one language. This leads to writing more sophisticated programs. I have 32 freeware programs out on the web now.

  • Shai Coggins July 24, 2008, 7:21 pm

    Dugg. Good post! :-)

  • Henri Tuhola July 24, 2008, 6:10 pm

    How were you able to create this sort of blog post? All of the points are pretty much correct. I've never seen them on same page, while at same time I need to agree they are the foundations to writing successful software.

    Doesn't help newbies much thought, as a programmer I know one must learn or have these properties. When I started doing this, I wouldn't have understood a word about what you mentioned here. – Mindset cannot be described in a page, this blog post is barely a hint.

  • temega July 24, 2008, 5:42 pm

    Great post!

  • bdsmith July 24, 2008, 5:12 pm

    Your reference to programming being both a world of structure and a world of imagination reminded me of a quote from the old cathedral builders – “Art without Science is nothing”.

  • Jim Jones July 24, 2008, 5:06 pm

    I just love creative programming!

    JT
    http://www.FireMe.To/udi

  • George Cauldron July 24, 2008, 4:55 pm

    Perhaps this author should eat his own words and try creating something from nothing. The limitations set by this author when writing is the number of clichés he can remember. Thanks for alienating programmers.

    • Glen Stansberry July 24, 2008, 9:45 pm

      How did I alienate programmers? I was trying to *debunk* these cliches.

  • erichansa July 24, 2008, 4:50 pm

    So, it is very nice. I have also read a story what helps:
    http://www.zeeol.com/index.php/Essay-writing/3-

  • ryan cameron July 24, 2008, 4:49 pm

    I agree with all the points and Id like to add another one:

    Dont be afraid to be wrong. Embrace being wrong, its when you are wrong that you learn. Take responsibility for mistakes, deal with it and move on. Take pleasure in your fellow coders or subordinates showing you up with better solutions!

    And CEO's/bosses, dont punish coders if they make mistakes or bad decisions. Help them recover and you'll have a vastly stronger coder than some ego maniac who never admits when they are wrong.

  • meti July 24, 2008, 4:42 pm

    bi bakarsin

  • Tiago Dias July 24, 2008, 4:40 pm

    Great post!

    Finally someone can describ what I really feel in my life. All points describe me. I´m felt GOD when i create something beautifull.

    Development are my life and my passion!

    • Dougx December 9, 2008, 8:24 am

      That's correct. A programmer is a god-like being, able to create everything out of nothing (except the editor). A programmer is like the poet-mathematician, the creative problem solver, the dictator of the computer!

  • Josh July 24, 2008, 4:40 pm

    I agree with #10 whole-heartedly (the others as well, but i was experiencing #10 earlier). I had been trying to pass a database object in PHP through a function, and it was just not working, so from that i assumed that passing it through to another class wouldnt work at all: wrong. I tried out, just for the hell of it, to see what sort of error message i could get, whatthehell!!? it works.

    Awesome post.

  • code networking July 24, 2008, 4:35 pm

    12. Don’t be afraid to build off the code of others.

    great example is some of the javascript libraries out there like prototype and jquery

    programming is definitely a passion of mine, and I even dream about it. I am totally grateful to the open source community for providing us with the basic building blocks with which we build bigger and better things.

  • Steve W July 24, 2008, 4:31 pm

    Couldn't agree more on all of those points, especially 4 and 6. Being passionalte about ones craft is the only thing keeping us programmers from going insane. It's hard work but if you love it then it can be it's own reward.

  • nick July 24, 2008, 9:08 am

    This isn't just a great article about programming. I think these tactics apply outside of programming as well. It is just great advice overall Sorry if I missed that point in the article.

  • Fredrik July 24, 2008, 8:15 am

    Great post, couldn't agree more

  • John Smith July 24, 2008, 5:45 am

    Programming is as creative as you make it. Just as anything.

  • DASO July 24, 2008, 4:42 am

    I know the basics of PHP, but I don't improve my skills and I don't practice it. today I will start practicing and do my best to be a programmer in the future.
    Thanks so much for this post.

  • Qleyo July 24, 2008, 3:06 am

    @ Kyle: Welcome to my world! I would have told you the same thing about 4 years ago…when I still had to program in C/C++ et al as well as PHP, now its just PHP…and although it sucks sometimes, it also rocks!

    Love this article, I guess it also explains why we can flourish as hybrids – I happen to design and develop equally well, I think it also explains why scientists tend to be very good musicians. In all great post.

  • William July 24, 2008, 2:58 am

    Great article !
    To my mind you, should better talk about developper than programmer because starting from scratch require developer skills (analysis of needs, taking into account hardware limitation, etc.)
    But your post still fine, I'm going to flood each of my friends with that… to make them understanding my passion :-)

  • Kyle July 24, 2008, 1:59 am

    Excellent article. I just recently started a job where I use PHP 8 hours a day. Two weeks ago I would have told you that programming in PHP is a wasted effort, that the language has no coherent standard, and that there are better alternatives. That still might be true, but there is beauty in using the mundane and creating something elegant.

    • Shoban July 25, 2008, 12:34 am

      Excellent article!!! I started learning PHP 3 months back (even though I work with MS technologies) … What you said is correct!!!

      Thanks for the article Glen!! I am proud to be a programmer :-)

  • Jarrod - Warrior Development July 23, 2008, 9:20 pm

    Programmers rock! :D

    Creating stuff, that is what I like best about being a programmer.

    Got a problem, is there a program out there already to solve it? If not, I'll build it myself.

    Very creative job indeed, nice write.