- Adam Piskorek
Why teaching yourself programming?
Let's start from the most important
The most important is: Why**?** It is way more important than how. Whatever reason you have for starting you should definitely expend them.
Try writing down as many reasons as comes to you mind before moving forward.
You may be this lucky person that has a clear, well guessed vision, that fits your character, is and will be valid for the years to come. You may.. but probably you aren't. Especially if you are reading this post. I have met over the last couple of years philosophers, teachers, biologists and others who became programmers. Mainly because they enjoyed it! That was long before a big wave of popularity that is now hitting mainstream. It's natural. As the civilization becomes more automatized the need for handling the complexity rises. Beware! The hype can finish once crisis hits and swipes most of the startups and other useless jobs.
There is many reasons for which people start coding
Some of them include:
- better working conditions
- controlling hardware
- making a website
- easing life
- automating monotony
- making an app
- launching startup / bootstrapping
- improving thinking
- curiosity & understanding
- writing thesis / paper
- solving problems
- improving work outcomes
- trying out
One of the most common reasons I hear is not on the list - money. It's not on this list because having it for a reason is very deceiving. A reason should be something that is embedded in coding itself, the process of coding should be rewarding thus affecting the reason behind it. Otherwise coding will become a displeasing, enforced activity that is just bothering instead of helping. If you set up money for a goal then you won't be focusing on the process which usually is quite long (don't believe in Coding for Dummies in 3 weeks).
The reason for writing down other motives that you can come up with was as follows:
If you didn't find at least a couple of 'not-money' reasons to code, leave it. Close the tab and forget about it.
If you're following reading then the chances that your reasons are on the list are high. Great! Let's divide them to 3 groups (I will list a random examples):
|Immediate Gain (Easy)||Long Term||Super Hard|
|helping others||helping others|
|having fun||having fun||having fun|
|easing life||easing life|
|improving thinking||improving thinking|
|making a website||making a website|
|curiosity & understanding||curiosity & understanding||curiosity & understanding|
|solving problems||solving problems||solving problems|
|contributing to open source||contributing to open source||contributing to open source|
|controlling hardware||controlling hardware||controlling hardware|
|making an app||making an app|
|writing thesis / paper||writing thesis / paper|
|changing work field||changing work field|
|making beautiful app|
|writing a game|
|being a computer scientist|
|becoming a guru|
|better working conditions|
|getting a job|
Disclosure: This grouping is naturally subjective
Let's understand this simple table
Easy is self explanatory.
Long Term is in between the Easy and Hard but i t doesn't mean it's difficult, it still can be easy but just requires more time in order to learn. Learning is never a quick process. Maybe for dummies that think about finishing studying in 30 days. Don't be dummy. Know, that learning never ends and first you need to enjoy it at least a bit or sometimes. Otherwise it won't work.
You may wonder why things that are super hard are also easy? That depends on the approach. Solving problems or contributing to open source are very general description. You can contribute by reading code and making a documentation and you can contribute by developing some features that are super hard to implement. You can solve an easy problem on hackerrank or you can solve some of quantum computing problems. You can make a simple app in a weekend or you can make an app that solves complicated problem.
I would start from the reasons that are Easy and once you know how do you feel about programming I would move to long term reasons.
Super hard things are 80% of the times out of reach for people who are thinking about switching their careers to coding. Usually doing super hard things require studying computer science and understanding how things work throughout.
How I started coding
I was a chemistry student and at the last year of my studies I bought a book about Python. Then I got a job as Python developer but it laster short as I had to go to Spain.
2 years ago I started with #oneyearcoding but I stopped after 3 months. My approach was wrong as I tried doing things from tutorials and books, replicating them which was cumbersome and made me feel like an idiot. I was also having difficult times in life so again, I stopped on being beginner in everything.
Around 1 year ago I got an idea for helping friend with a project and it triggered a need. This is easing life, solving a problem and bootstrapping in one project. That's why I was saying that the more reasons you have the easier it gets because in order to learn coding you need to be persistent. Some ideas or knowledge breaking moments come to you like lighting, struck in the middle of developing something similar.
There's nothing worse then developing another To-do list. It may be a good way to see how things work but not to replicate it. There is tons of ideas to implement. Doing so always pushes you to think on yourself and makes you using the pieces of knowledge you have as well as learning what you need. It's crucial.
What did I get from coding for 1 year?
This time I was able to code 1 year straight mostly because of the projects and the fun they bring. Helping a friend was 1 thing but after that I've tried developing some of my ideas.
I need to firmly state that I was trying different languages, projects, doing it with different people. I did not really know what should I do since I didn't have a firm goal. Sticking with 1 language or idea would bring me something completely different. What? I don't know, that is my 2020 resolution. Do things once at a time. So far, I've learned the following:
- basics of programming languages: Dart, Python, TypeScript, Bash
- improved the way I think
- improved at work - coding is now way easier and allows to be more confident as a tester
- the way I solve problems, I have clearer view on a problem that could be solved with software
- the way I work with people - I've worked on OpenSource project, start ups, pair programming. I learned a lot about how other people code and think
- the way I organize my time (kanban/trello)
- understanding of git
Some of my projects that I have developed during this time you can see here
How you can start?
I have wrote another post on How to teach yourself coding. Check it out if you really want to move forward.
Find your WHY first. Without it it will be difficult to learn unless you are studying computer science or related field. Even if you're a student you might ask yourself why should you do what you are going to. Making things is very rewarding, not only money wise.
Try it for yourself.
Go and make something that people want and remember:
Joy, fun, curiosity, tinkering, satisfaction. Aim to reach them first!
Did you make any mistakes when learning PROGRAMING or you've seen one here? Tell me about your insights. Leave a comment. You are most welcome to see more posts of this type just go to home page