What I learned building my first side project
Tags: reactnative, react, crypto
Published: 2019-08-11 18:23:33

I have always wanted to be a better programmer since my first job a few years ago. And by wanting to be a better programmer you would naturally look for ways to achieve that goal.

It's not hard to find lists explaining step by step what you should do to enhance your programming skills. Almost all of those guides would mention building a side project. 

So I decide to build a Crypto Tracker App where you could follow your favorite cryptocurrencies values with local notifications.

![](https://thepracticaldev.s3.amazonaws.com/i/7q06adku6m65zbas1ytq.png)

Here are the lessons taken from it

##1. You have to deal with problems outside of your comfort zone.

This project was built using React Native and I'm working with this technology for sometime now. It wasn't difficult until I had to deal with Local Notifications (iOS/Android), something that I never had done before. It took me a couple of days of reading and testing to finally get to work. After that, background tasks are something very blurry in the RN world leading to more problems with my original idea.

 I ended up solving those issues and I'm more prepare to handle tasks related to those topics in the near of far future. 

##2. You code, you review, you fix

Build something by yourself can be sometimes make you produce lazy code and poor syntax. I've had more than one occasion that my codes were so bad that even though was working, I didn't want to commit it. I would patiently rewrite to follow a design pattern or the very minimum syntax standards. That's because I knew I would want others to look at my code and send me feedbacks about general architecture and UI/UX, not about how poorly my code was written. 

After finishing this first version I can say for sure that my ability to search for inconsistencies and flaws throughout codes (mine or others) have increase significantly.

##3. Motivation is tricky, you have to set micro and macro goals 

Something that delayed this side project from being released early was probably because I wasn't motivated enough to keep going. In the very start I was trying to build everything in one go. Of course that didn't work and kept me thinking if this was really a good idea. But at the same time I didn't want this project to end up in the 'I don't have time' purgatory. 
So I changed my routine of work and added small incremental steps (just like any other agile methodology) and gradually build the core of the app. After that, every time I'd sit to code this project I would focus on one micro task at the time always pursuing the macro objective.

That way I managed to finish the first version within 2 months (I was expecting one month) and I have to say, this was of a great relief. 


###Conclusion

Building a side project can be somewhat stressful and can lead to some headaches, but the overall experience and learning are worth taking. 
You should build a side project because will increase your knowledge about the technology, you will face and solve new problems and you will have something awesome to share with the community. Don't let your ideas purge away on the 'I don't have time' zone.


Checkout the project [here](https://studio.youtube.com/video/zY7jNN5JEGU/edit) and the [source code](https://github.com/pedrobertao/mycrypto)