Skip to content

Instantly share code, notes, and snippets.

@somahargitai
Last active August 14, 2019 20:54
Show Gist options
  • Save somahargitai/de09cd554ea1c6ea62c74c61c135346b to your computer and use it in GitHub Desktop.
Save somahargitai/de09cd554ea1c6ea62c74c61c135346b to your computer and use it in GitHub Desktop.
How to learn programming - plans, best practices, tips and tricks

!!! This is an under construction Gist. Feel free to ping me with any ideas on it

Web Developer Roadmap 2019

This file will provide a wider overview on how to start programming. As long as it is not ready, check out my beginner guide here

  • learn basics of programming on a language (C#, Java, Python, JavaScript)

  • learn HTML and CSS

  • learn a script language (Python)

  • learn an Object-Oriented Language (C# or Java)

  • learn console/terminal basics

  • cd, mkdir, dir/ls, pwd

  • shell scripting

  • kernel connection

  • mac / linux / win difference

  • bash

-learn unix/windows style

TBD:
sources, free sources, docs
programming branches, job types, differences among them

How should I start?

where do you go? Dev, IT-related hacking, Headhunter?

What to do if I already know basics and want to have results ASAP?

We don't use languages in real life. We use technology stacks.

Some of them even has fancy acronyms, sometimes they are even packed together: MEAN (Mongo, Express, Angular, Node), MERN (same but with React/Redux), LAMP (Linux, Apache, MariaDB, Python/Perl/PHP), XAMPP (same but with any OS) etc. They may contain a database server, a general-purpose programming language, libraries and frameworks (frontend, backend or general usage), a runtime, an operation system.

These acronyms usually are connected to free technologies, because they were put together from independent projects. Big, corporate technologies and some others are rather mentioned by framework names. Even if they may be flexible, usually they are dominated by a specific stack. If you use .Net, it is pretty necessary that your chosen technologies will be C#, Entity Framework, IIS. Similarly Spring usually means Java, Postgres, JDBC and the Spring itself.

When use choose techologies for a project or just thinking about what to learn, specify your goals first and choose a technology stack. Unfortunately open discussions are still dominated by the misbelief of concentraing on languages and the concept of general purpose usage. In theory they are right but in practice technology environments grow naturally around project types.

What would be my learning plan?

  • the decision
  • skillset, manner maketh man differences

problem-based learning plan

this part is an experiment to not define learning with languages, syntaxes, or library elements, but with problems. For example: instead of learning Java's foreach, Spring Boot and @annotations, let's talk about the concepts of querying data from a database, fetching data from an API and so on. I have the recurring experience that I think that I understand a technology and it turns out, that I cannot implement the solution of an everyday problem. This part is about having a list of these problems.

frontend problems on a website

routing and API handling

fetching data from an API, creating routes for a website, nesting routes, generating dynamic routes from fetched data, adding query strings to routes for either dynamic routing or to structure data on the site (like ordering by a column name),

the master plan on learning

OOP, interpreted and compiled languages,

clean code, patterns, principles, acronyms, CICD, environments

your real life needs a.k.a. be honest, you don't need all that stuff - but others

CICD, environments, OPs, Git, docs, IDE

Things everybody will tell you need and you've got to say NO... should you?

deep memory handling, C, C++,

interview questions

I am collecting interview questions to a Github repository called Your IT Interview. It contains interview questions selected by languages. I have also added language independent algorithmic exercises, testing questions and some recommendations about interviews for interviewers.

Other sources:
jvns and Edward O'Campo-Gooding question collection
HackerRank preparation kit

logic games

Some of them make sense, some if them not but should be learned. ---> it would be nice to have an article about good and bad logic questions on an interview

tech specific

Communicating your skills

It job terms

Frontend Developer
Backend Developer
Mobile Application Developer
SysAdmin

What is a full stack developer?

When may I have an IT job?

Job sites

Hungary

Jooble
Mortoff
Monster

International

Monster

How can I check the background of my employer?

Glassdoor
Crunchbase

What are the job types you can choose from?

  • web developer
  • frontend developer
  • backend developer
  • site builder

How can I find examples and live projects to learn from?

Github:

Github is eclectic. You will want to find a good example repo but it is not quite easy to reach that.
A good start may be to find a related meetup from the past on Meetup.com or other sites and check if the presenters are linked there. They usually make public repos for such events which are very nice and useful for brief intros of a concept. For example the European R Users Meeting linked all its presenters' Github and Linkedin profiles. You can find wonderful data scientists among them like Omayma Said whose Github profle is quite impressive.

practice sites, cool challenges

Euler Project
Hackerrank
Coderbyte

Hungarian sites

Python practice from basics

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment