1. Creative freedom.
Product managers and designers specify *what* I should build. But, I get to decide *how* to build it. I choose my patterns, libraries, technical approach, workflow, and more. There are infinite ways to solve a given problem. I get to decide precisely how I solve it.
2. Flexible schedule.
As long as I deliver and show up to occasional meetings, it’s typically not a big deal precisely what hours I work.
So, I don’t have to fit my life around my work. Instead, I fit my work around my life.
3. I can work where I want.
I work in coffee shops. By the pool. At the beach. On flights. On my patio. In my back yard hammock. At the local park by the lake. Dynamic environments are inspiring.
4. I can pick my equipment.
I use the keyboard, mouse, monitor, desk, and chair that I prefer. When I work from home, I pick the temperature, lightning, and music that I prefer. I often choose my own machine too.
5. Mentally stimulating.
I solve different problems every day. So, every day is unique. If I had done it before, I’d just copy/paste! So each day is an interesting new challenge. This keeps me motivated and excited.
6. Massive potential impact.
Software empowers me. I can impact an unlimited number of people. A single piece of software can change the world. If I do my job well, countless people will benefit.
7. Countless free tools.
I don’t have to ask for permission or funding to use most of my favorite tools. I just install them.
Every day new technologies, libraries, frameworks and more are announced. This makes every day a chance to learn something new. It also means each day the software I’m writing tends to get better.
9. High trust.
I don’t have a boss staring over my shoulder. My boss doesn’t micromanage my tasks or approaches. I’m trusted to be productive and make good decisions. I’m measured by my results, not the amount of time I’m at a desk.
10. Wonderful pay.
Few careers pay as well as software development. If you earn over $33,000 US dollars per year, you’re in the top 1% of worldwide annual incomes. Many software developers make significantly more than this.
11. Fantastic community.
When I’m doing something new, it’s easy to get help from others. I Google. I check StackOverflow. I post on Twitter. I search GitHub issues. I ask my coworkers. I ask my friends at conferences. People are eager to help.
12. Low red tape.
Software is young, so there are few barriers to entry. You don’t need a degree, a license, or permission from gatekeepers to write software. You just need a machine, an internet connection, and patience.
13. Undo is nearly free.
If I make a mistake while coding, I just hit undo. I don’t have to buy more materials. I didn’t waste anything but time and a little electricity. I don’t experience public shaming for my mistake either. The cost of mistakes during development is low, so I can iterate rapidly without worry. I don’t have to get it right on my first try.