/learn-coding

Path to learn how to code

Apache License 2.0Apache-2.0

Workshop Syllabous

  1. Just some games
  2. Emotional approach when learning (easy/hard exercises)
  3. Self training (music [improvise vs reading])
  4. Understanding the computer machine
  5. Career
    • Development
    • Data Science
    • Architecture
  6. Programming paradigms [how to think about problems]
    • Functional
    • Object Oriented
    • Actor Based
  7. Resources (tutorials, blogs, videos, courses, books, communities, chat)
  8. Tools
    • Git
    • SQL
    • Messaging

Beginer's guide

Join the chat at https://gitter.im/learn-coding/Lobby

-> important update: everyone can subscribe to https://www.datacamp.com and become a python programmer or data scientist in a easy and amazing interactive learning.

This is what seems to be a good path to start and have all the base to suceed on the long run. Read this article. You should konw that if you understand the root of the computer science, you will be able to learn several languages much much more faster that the ones that can't understand it. Finally I found a course that teach the principals: From Nan to Tetris

  1. Learn Javascript and it's derivatives (Nodejs, Angularjs), why, because is the language of the web more will be easy to learn.
  2. Solve Hackerrank and project Euler problems (after phase 2), or even better, solve problems for non-profit institutions on freecodecamp and get a job proposoal directly from them.
  3. Train keyboard typing
  4. Know how to extract knowledge from google (use good search keywords), use stack overflow, forums, etc... write and chat with people out there
  5. Learn linux (optional), but very very important
  6. Learn how you learn, so you boost your learning. Use concept maps
  7. See this article, on how someone got a Developer job in 4 months.

After you got some experience with Javascript, consider learning Haskell, to it will be easy to learn every other language. But programming, is more than art and science, see this link 10 traits that you should develop also, and will for sure determine your relationship with the market.

Abstractions

Programming languages can abstract nouns and verbs, or both.

Noun abstraction (object oriented programming)

Imagine you would like to open a washing machine company. And you go to buy the equipment, and find that for every kind of vehicle, you have to buy and maintain a machine. One machine to wash Fiat, one for Audi, one for Toyota, etc... It's so expensive that you decide to keep only the most famous models. Finally you find a machine that can clean "CARS" ! Oho, that's a good business, one machine, one space to rent, one worker to pay! that's amazing, you can have a wash machine that can wash the abstract concept of "cars", and all models can be washed there, for a low cost.

This is how we should write our code, some lines of code that are able to do a lot of stuff, this is, code abstraction, code that can deal with wider concepts instead of specific ones.

Verb abstraction

Functional programming like Scala, Erlang, R, Elixir, Closure and others are becoming incresely important, specially in this big data era. If you already know the Object Oriented paradigm and discover the Functional paradigm, you will understand why the word "fun" is fun and also a function: because programming in functional languages is pure fun :) . It means, that you should write pure functions, i.e. a function where the return value is only determined by its input values, without observable side effects. This is how functions in math work: Math.cos(x) will, for the same value of x , always return the same result. And this will be really fun, because you get back control of your software behaviour, so you discover that predictability and happiness come together :). After you have some good dose of pure functions, you start composing the main architecture with your side effects functions. Clean, well written software means good money for the company you work, and also for your pocket ;)

English

Open mind

Linux (optional)

Basics

  • code-monkey - start here and succeed, and finish until the last challenge
  • coffescript - coffescript is a simplified javascript syntax, so get it well before entering the caos of javascript
  • javascript1
    • Javascript
  • javascript2
    • Javascript 2
  • javascript - All you need for Javascript coding, click it :)

Solving Problems

Tools

Frameworks

Front-end

Tutorials & Books

Functional Programming

Object Oriented Programmng

Artificial Intelligence

Online Jobs

  • upwork - Start here, build a five stars feedback track, and learn how to work remote with the incredible tool. You can meet there more than 10.000.000 people working on-line.

  • remote-job-list - Fantastic full featured list of many kinds of links !!!!

  • toptal - The best companies are outsourcing there, and for good slaries.

  • 25 places to work - Market place list.

  • awesome-list - Best reference ever possible

  • exercism - train here

  • code - many sources