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:
- Is designed to improve performance
- Can be repeated a lot
- Feedback on results is continually available
- It's highly demanding mentally
- 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 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.
Top comments (2)
Hi Kelly, I do share the same feeling as you.
I read a lot of articles of miscellaneous frameworks nevertheless, I tend to forget after 1 week. If one does not practice one does not remember (now I understand teachers wanted us to write everything on our notepads back in school).
Firstly, I tried compiling a few notes of each concept and/or framework into a Evernote notepad. However, one has to be really discipline in order to keep it somewhat organised.
Once again, just like you, I am trying to come up with some app idea where I can apply what I learn. Hopefully soon I will have a "spark"
Hi,
I can say at this point, that you shouldn't wait for the "spark". Start with a simple crm like me, if you are out of ideas. Use it to practice the concepts or frameworks you would like to learn. Just start. For me, for the frameworks I had never used before like swift, just the setup was "complicated", given the fact that the code generated by xcode did not work properly tests wise. Was xcode wrong? I had done something wrong? At that point I could not tell. Just that was learning. So, just start.