I think the key to staying interested in programming is constantly trying something new with technology. But something new was not enough for me. I needed more motivation. So I would find something else I loved and build a tool for it in that new technology.

When programming was my "hobby"

The first software I developed helped me find markets on eBay and gave me a list of popular keywords to use in the title. I was an eBay seller at the time and needed the tool, so I learned to code and built it in VB6, which was still popular then. I also sold it as shareware.

Talk about motivation. The bug had bitten me. It really felt like magic. The software did so much with a few lines of code, and people were paying me for copies of it. I worked on even more software on the side and eventually was making more doing that than at my day job.

My first programming job

My manager at my day job found out I wrote software and they had an opening in the office. I thought it was great. And it was... for a while.

But eventually, I stopped coding so much after work. I was writing the same PHP code at work that I was writing at home. I was tired of doing the same thing all day long.

How I stayed motivated to learn

I enjoyed writing the code for my job, but nothing was truly my idea, and all the software was legacy. The motivation for the work was money, but that was about all.

But I did want to learn new things. It came down to finding the intersection of something new I wanted to learn and something else I was interested in. The combination of the two sparked motivation.

Here are a few things I have built just to learn new technologies. None of these are toy applications; all but the notebook app have made me side money, but I still use that app today, six years later.

An affiliate URL shortener in Python

After a few months at that first programming job, I had to do something new. I had heard a lot about Python. It seemed to be more powerful than PHP, and I was still doing affiliate marketing on the side.

I began building a URL shortener and tracking platform for my affiliate links. It really helped increase sales with my affiliate side business by giving me more details about visitors. Shortly after that, I used what I learned to build an ERP system in Python at my day job.

A notebook app in Electron

I was still mainly a PHP developer when JavaScript frontend frameworks like React and Angular first got popular. I wanted to learn one, but I didn't want to build a toy app.

Sometimes, I write prose on the side, and I wanted software that would work the same quick way a physical notebook worked where all you had to do is write and not worry about details like filenames and saving.

I built an app just to do that with Angular. I used Electron to make it a desktop app and eventually got an Angular job. When I wanted to learn React, I refactored the app to use it. The current iteration I am still working on is in React Native so I can create web, desktop, iOS, and Android apps from the same codebase.

A machine learning stock trading contest

I started reading a book on machine learning at first, but I gave up when I found a stock market trading contest called Numerai. The book was dense and was barely about writing code at all. I messed around with the dataset for the contest by sending through a machine learning tool called H2O. I tweaked things and learned about the parameters I was setting.

By the end of the first night, I was in eighth place, which was a good enough entry to win money. I entered the contest again two more times after that and won money both times. And when the fraud detection job came up at work, I knew what to do.

A distributed cryptocurrency trading bot in Python

Another bonus of ranking in that stock market contest was the cryptocurrency I won. I sort of ignored it because I didn't know what to do with it. Then a year passed, and Bitcoin went to $20,000, so I decided I would figure it out.

So I figured out how to use crypto and started building a cryptocurrency bot. I learned how to use threads in Python, plus a lot about distributed software. My idea of setting this bot loose and not working another day never came true, but it sure had me motivated.

Blockchain bounties in Golang

Golang was another language I had heard about and wanted to learn. From what I could tell, the syntax was simple, but it was as fast as C. My cryptocurrency bot was already in Python and I didn't want to rewrite it.

But I found out about cryptocurrency bounties at GitCoin. I could learn some Golang and make some crypto. And it worked out. I completed half a dozen bounties in Golang and learned a lot more about how blockchains worked.

Closing thoughts

Keeping up with rapid technological developments is a natural element of our job as software engineers, but it can be hard. The grind at work could have you writing the same type of code over and over. Staving off burnout can be difficult.

That is when you need to look for something to build that will motivate you. Forget the toy apps. I have never built one, and you shouldn’t either. Build a tool for something else you do.

Discussion

Categories
Share Article

Continue Reading