This is a statement that is used nowadays in the software development industry but this is a concept that can be used in a lot of environments and disciplines.
How do you learn to play a sport? Sitting in a class and listening to someone who explains to you how to play? I don’t think so. How do you learn photography? How do you learn to play the guitar?
Find the opportunity to learn
Back in October 2018, I wanted to create an Android application of an idea that came to my mind. I wanted to do a kind of mortgage calculator where users could calculate monthly payments using different inputs like location, interest rate, and savings.
If you are interested to learn something find an excuse to make a project.
I had used some apps to do these calculations and the user interface of them was not really good and I thought it could be improved introducing some new features that the other existing apps didn’t have.
I didn’t know how to create an Android application from scratch. Because of my Java development background, I thought It could be easier to do it because android apps use Java - Kotlin is increasing in popularity - rather and IOS applications that use Swift as a programming language.
If there’s is some connection between what you want to learn and your background, the process of learning will be easier.
Learning android development
I bought a Udemy Android development course where a teacher explained the most important aspects, to begin with.
I search for things in Stackoverflow when I got stuck or I had some doubts such as “How to do a tab layout in Android” or “How to create a Navigation Drawer” where it explained how to do it.
I asked a friend of mine who is proficient in Android development - thanks Cesar - some questions like how to display a table with a lot of rows in a Fragment, or how you can share state between different Fragments of your application. That saved to me some time while building the application.
I searched in the documentation about that specific topic. I read it and I apply it back to the code.
Accelerate the process using available resources that can speed up your learning.
The balance between theory and practice
To start a project in some field you have to know the basics.
You need to know the basics, but you don’t need to be a master in the field to create something.
You have to understand the basics of what you have to do to give value to others and then improve while you practice it. In my case, I knew how to develop software but I didn’t know how the Android ecosystem worked.
For sure I have to learn more Android to be able to say that I’m proficient in this technology, however, I know the basics to build up an app that can be useful to people creating a Minimum value product (MVP).
Start a project and commit
Think about something that can be helpful to people and start to create it. Inspiration will find you working said Pablo Picasso. And it’s true because while I was doing the Android app I thought about other features that can be useful.
It’s important to commit with the project because if you give up really easily you will end up learning nothing and you will reduce your motivation and your self-stem.
In my opinion the best way to learn something is to create a project and get your hands dirty. Learn by doing is the way. I attach an screenshot of the app where you can see the end result.