My deliberate practice journey
Tags: deliberatepractice, programming
Published: 2020-05-10 21:50:21

---
title: My deliberate practice journey
published: true
description: 
tags: deliberate practice, programming
---

I was searching the internet for articles about "how do I improve as a software engineer". I am always looking for ways to improve, and all the articles I found mainly said, it doesn't matter what you build, just build something. And I always thought, build what? I had no idea what to build. 

Another thing that came up again and again, was deliberate practice. I have used in other areas, like music, have read books about it, but I couldn't see how to apply it to software engineering.

Deliberate practice basically consists of a practice that:
1. Is designed to improve performance
2. Can be repeated a lot
3. Feedback on results is continually available
4. It's highly demanding mentally
5. It isn't much fun

Well, I decided to stop procrastinating, and start doing. Trying to put this two things together. The concepts of deliberate practice, and the idea of "just build something". 

## Frameworks 

- Quarkus
- Springboot
- Django
- NodeJS
- Golang
- Angular
- React
- Vue
- ReactNative
- Flutter
- Kotlin
- Swift

## How to practice

I set some rules to follow:

- one hour a day, everyday
- at the end of every month I will write a post about what happened, struggles, things I learned, etc..
- I will just go to the next practice, when the current one is finished in all the frameworks
- I will treat every project, apart from hello, world, as if it was a real life project. Meaning: version control, tests, code coverage, build, deploy as if there were different environments, monitoring, etc..
- I will just skip something if I get stuck, to the point I tried every I found on the internet

## What to practice

My first practice was setting up my development environment for all these tools. If possible, I wanted to use one editor for everything. Except for swift and kotlin, I was able to set everything up in VS Code, which is at the moment, my editor of choice. To make sure everything was correct, I built the famous hello, world project. I tried to use as much as possible the tools provided by the framework itself. The only framework I had a problem with, was react. I had to downgrade the version to make it work.

The second practice, was to use hello world, write a unit test for it, and see the code coverage of it. 
The only environment I couldn't get this working was on swift. I couldn't get my tests working at all.

The next idea after that was to build a simple crm. With products, customers and orders. So far, I am still working on the quarkus version of it. I am really taking my time to explore the framework here.

## Conclusion

So far, so good. Was it worth it? Yes, absolutely. On my day to day job I get to work with some of these frameworks more than others. And it hit me hard how easily you forget some things. Doing these simple projects brings all this to mind.
Since the idea is to practice, I can really try various things until I am satisfied and maybe explore parts of the frameworks and languages I haven't taken the time to before.
I was even able to contribute to a project finding bugs.

I would love to get some feedback on how I can improve on the projects, ideas for practices and other tools to learn.

## Links to repositories

[Here](https://github.com/kgoedert/ultralearning/blob/master/deliberate/practices.md) is a link to the ideas I had so far for practicing.

And I list of all the repositories I created. The different practices will be different tags.

- [Quarkus](https://github.com/kgoedert/hello-quarkus)
- [Springboot](https://github.com/kgoedert/hello-spring)
- [Django](https://github.com/kgoedert/hello-django)
- [Go](https://github.com/kgoedert/hello-go)
- [Angular](https://github.com/kgoedert/hello-angular)
- [React](https://github.com/kgoedert/hello-react)
- [VueJs](https://github.com/kgoedert/hello-vuejs)
- [ReactNative](https://github.com/kgoedert/hello-reactnative)
- [Flutter](https://github.com/kgoedert/hello-flutter)
- [Kotlin](https://github.com/kgoedert/hello-kotlin)
- [Swift](https://github.com/kgoedert/hello-swift)
- [Infrastructure](https://github.com/kgoedert/infrastructure)