How to teach yourself programming - and Why!
Tags: coding
Published: 2020-11-16 17:14:05

---
title: How to teach yourself programming - and Why!
published: true
date: 2020-02-28 00:00:00 UTC
tags: coding
canonical_url: https://hvitis.dev/how-to-tech-youself-programming-and-why
---

# How to teach youself programming - and Why?

## Let’s start from the most important:

The most important is: Why **?** It is way more important than how because the boolean outcome and float result of your studying is based on this parameter. What does it mean in English? Well, that different goals lead to different outcomes.

I know you may be just curious about coding or you’ve heard from friends that there is good money in this. Whatever reason you have for starting you should definately 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. There is many reasons for which people start coding, some of them include:

- better working conditions
- controlling hardware
- making a website
- hacking
- easing life
- automating monotonny
- 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 decieving. A reason should be something that is embedded in coding itself, the process of coding should be rewarding thus affecting the reson 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 reson for writing down other motives that you can come up with was as follows:

> If you didn’t find at least two not-money resons 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 of reasons:

| Easy | Long Term | Super Hard |
| --- | --- | --- |
| 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 | making an app |
| | writing thesis / paper | writing thesis / paper |
| | changing work field | changing work field |
| | | making beautiful app |
| | | hacking |
| | | launching startup |
| | better working conditions | |
| | bootstrapping | |

_Disclosure: This grouping is natually subjective_

### Let’s understand this simple table

Easy is self explanatory. Long Term is in between the Easy and Hard but it 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 descreiptions. 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](https://www.hackerrank.com/) 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 resons that are Easy and once you know how do you feel about programming I would move to one of the reason that is both easy and hard because it won’t bore you, there will always be a reason to become better.

* * *

### How I started

I was a chemistry student and at the last year of my studies I bought a book about Python. It was somehow useful for the studies since (I forgot how tho) and that was the first spark when I got any idea about it. Then I got a job as Python developer but it laster short as I had to go to Spain. In Spain I started testing software manually and this was the moment when I got back to coding. I did it because I remembered that it was giving me a lot of pleasure and I wanted to do it proffessionally. It’s been giving me enough pleasure to develop my things after work. I started playing around with different languages and ideas. Ruby for web, PHP for templates, Go for servers but then I stayed with Python and JavaScript as world has been and is still moving towards web apps.

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](https://hvitis.dev/project-django-2-crm-app-for-learning-polish) 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 straigt 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. ![GitHub-Commits-History](https://hvitis.dev/my-brief-history-of-programming.png "GitHub-Commits-History")I need to firmly state that I was trying different languages, projects, doing it with different people. Sticking with 1 language or idea would bring me something completly different. What? I don’t know, that is my 2020 resolution. Do things once at a time. So far, I’ve learned tons of stuff about software:

- 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).

* * *

### How you can start?

1. Make list of 3 reasons you would like to code for.
2. Make a list of 5 ideas that could be made real with software. It can be anything. If you have hard times you can use a [list of ideas](https://levelup.gitconnected.com/10-great-programming-projects-to-improve-your-resume-and-learn-to-program-74b14d3e9e16) or ask people you know what could they automate in their daily life. You can also make a program to add ideas and show it to your friends!
3. Pick up a language that will allow you doing so. You can search for articles on which language to choose.
4. Buy well-rated book or online tutorial that has a similar example to your idea. Many tutorials show how to make apps, websites, etc as examples while focusing on teaching you coding.
5. Make your idea a reality!

* * *

#### Making things is very rewarding.

Try it for yourself. Maybe you will find it useful to you!

![person-making-things](https://hvitis.dev/person-making-things-with-her-hands-alex-jones.jpg)

#### Go and make something people want!

* * *

* * *

_Did you make any mistakes when learning PROGRAMING or you’ve seen one here? Tell me about your insights. Leave a comment with YOUR opinion._

<!-- Links -->