My purpose with this essay is to share my story, which will hopefully be useful be to someone out there.
In December 2017 I told myself that I wanted to become better at programming in 2018. More specifically, I wanted to become better at building ideas that I had in my head. I also wanted to learn something new. I wanted a big challenge that I could tackle over an extended period of time.
I am a huge fan of placing constraints on yourself in order to get stuff done. Constraints (whether they are artificial or not) help you be more resourceful and stay focused. For this experiment I decided that these would be my constraints:
- Time: I will dedicate an average of 1 hour per day for an initial trial period of 6 months (January-June).
- Money: I wouldn’t spend more than $50 on this. Period.
- The time constraint was intended to make sure that I dedicated just enough time to this project without dismissing other important things in my life (school, job search, friends, etc.)
- The money constraint was a way to challenge this idea that the best way to learn how to program in 12 weeks was to do a bootcamp.
Learning how to program is not necessarily hard but it’s definitely a commitment to a craft. The concepts that you learn build over time and I’ve realized that I need time to absorb them and let them sink in. There is also a lot of knowledge that seems very disparate until you are able to understand how things come together.
Another thing that’ve found hard is that a lot of the concepts can be a little dry because they are very abstract and it’s very hard to see how they can be applicable to a potential application that you want to build.
The way I decided to tackle this issue was by founding the best online resource that was:
- Technology Agnostic
I wanted to make sure that I had a solid foundation in the principles of computer science (algorithms, basic data structures, OOP, etc.). The specific course doesn’t really matter (they constantly) change but I feel that’s important to understand the fundamentals even before building full on applications. After I got the fundamentals down I experimented with the type of work that I wanted to do. I spent 3 months learning swift, the mvc paradigm and the overall iOS developer ecosystem. I learned a lot and build a couple of projects but felt that I wanted to get to know what else was out there so I spent another 3 months working on web development.
What I’ve figured out throughout this process is that if you want to learn to program you need to do it for the right reasons and not only because you want to become a software engineer, build a cool app or because it’s a popular thing to do.
I don’t have any piece of advice if you want to learn how to program other than I really encourage you to figure out why you want to do this and whether you’re willing to stick with it even when it get really hard.