I may not be a great programmer, but I have a ton of fun programming. As aself-taught hacker, I’ve always enjoyed programming to a great extent–buteveryone has their ups and downs. These are simply my reflections about whatmakes me happy while programming, and serves as reminder to myself why I shouldkeep pushing onwards!
Live for the Challenge
Writing software is difficult for so many reasons:
- It requires a great deal of concentration.
- It has lots of complexity.
- It requires you to be in a certain emotional state to produce quality work.
- It requires a great deal of prerequisite knowledge to do even the simplestof tasks.
One of the things I’ve come to understand over the years as I’ve learned moreand more about coding is that if I’m not working on something that I findchallenging, I have an extremely difficult time motivating myself to completethe project.
I find that I have the most fun when I feel like I’m accomplishing impossiblydifficult tasks, building software that is not only critically useful to me(and others), but that requires a great deal of effort to produce. There arecertainly exceptions to this rule (building simple software if it is needed)–but in general, only when I’m working on a challenging project can I reallyutilize my skills.
Have a Warrior Mindset
The way you approach challenges makes an enormous difference in the quality ofyour work. If you take a project lightly, and don’t fully commit yourself toworking on it–you will always produce low quality software.
A mental hack I’ve learned to make heavy use of over the past two years is toput myself into a warrior mindset. As someone obsessed with Samurai culture, Ifind the idea of fully committing yourself to a task, and staking your life onit, a very powerful concept.
The first step in achieving a warrior mindset is to understand that if youcommit to something, you will do it–or you will die. There is no “try”. Themost practical way to apply this mindset to your day-to-day programming life isto be very selective about the projects you work on.
Is the project you’re about to start working on something you’d die for? Ifnot, then it isn’t worth doing.
The second step in practicing the warrior mindset is to battle your code. Ifyou’re working on a difficult problem, and can’t find a solution–find a waytopersevere. Don’t quit. No matter how great the challenge, push throughand do whatever it takes to win.
The sense of accomplishment and achievement you get after completing anincredibly difficult task is overwhelming. It’s certainly one of the greatestnatural “highs” you can get.
One of the most powerful motivators in software is open source. Writing codein the open is incredibly fun.
Among other things, building and contributing to open source software:
- Motivates you to produce high-quality work.
- Encourages you to collaborate with others.
- Helps you grow as a developer, by exposing your weaknesses and learningfrom them.
- Builds a reputation for yourself amongst other programmers, and helps youmake friends.
Aside from the obvious benefits–I get an enormous rush from publishingsoftware online. For me, I get a giant sense of satisfaction from solving aproblem using code–it’s the feeling that I’ve solved a problem that I have,and will never have to solve again.
Publishing my work brings a sense of ‘finality’ to the problem, and makes mefeel like I’ve contributed something useful to the world, regardless of howmany people do (or don’t) use my creations.
Don’t Conform
The software industry can be harsh–it’s filled with brilliant minds, and largeegos. Unfortunately, this makes it very difficult to discover truth in what youread and hear.
All too often you’ll hear people saythis technology sucks, or use thisinstead of that, and it can be easy to simply agree with a person based ontheir status–the truth, however, may be completely opposite.
Programming is meant to be fun. Writing software is a very personal, and veryintimate creative experience. Instead of readily agreeing with your friends,coworkers, or random blog authors–experiment with whatever piques yourinterest.
Just because someone tells you that the cloud isn’t for you, it doesn’t meanyou should listen!
No matter what the general consensus is–never conform. Make your owndecisions, create your own path. Find out what you enjoy by trying a widevariety of things, and always try to remain optimistic.
Read
Technical reading is incredibly underrated. Whenever you have the chance, youshould spend time reading technical books.
Not only does reading technical books help you gain a better understanding ofyour field–but more importantly, reading introduces you great hackers. There isabsolutely no substitude for reading a good technical book–you’ll pick up:
- Useful technical information.
- The mindset of the author.
- How the author thinks, works, reasons.
- Best practices.
- Multiple ways of doing things (many books are great at this).
- A better understanding of the underlying technology you use, and how you canuse it better.
I’m constantly surprised by how little time my peers spending reading technicalbooks. To me, they’re an extraordinary motivation tool.
A big part of the fun in programming (for me) is learning new things–and one ofthe best ways to learn new things is to read and gain perspective.
Be Mindful
As a large part of writing software is mental, consciously analyzing yourthoughts and actions is incredibly important.
Being mindful of what you’re doing, why you’re doing it, and generally keepingthe big picture in mind will help you stay motivated, have fun, and trulyenjoy your work. It’s far too easy to get swept away in details of day-to-dayimplementation–only when you take a step back, and analyze your progress, canyou truly take pride in your work (and enjoy it).
No matter how frustrated, upset, or angry you are with your code–if you want toimmediately feel better and be able to relax–think of the people you’re writingyour software for. When I’m feeling unmotivated, all it takes is a few minutesof meditation on my purpose to get my hyped up inside, and propel me forward.
Talk With Other Hackers
No matter where you are in your programming career, you will have ups anddowns. One of the best ways to continuously motivate and push yourself to newlevels of skill is to hang out with other hackers like yourself.
Surround yourself with others who have an extreme drive to learn new things andbuild awesome products–and their contagion will rub off on you. Having agroup of supportive, like-minded friends can make an enormous difference inyour personal development, happiness, and day-to-day satisfaction.
In the off chance that you’ve read this far, and would like to hang out withsome amazing hackers–you’re formally invited to join #heapify
onirc.oftc.net
(a public IRC channel). IRC has played a crucial role in mylife, and many of the programmers I met years ago on IRC I’m still greatfriends with today. If you’d like to join a supportive group of enthusiasticdevelopers, please drop by and say hi :)
PS: If you read this far, you might want to follow me on Mastodon or GitHub and subscribe via RSS or email below (I'll email you new articles when I publish them).