Workshop Syllabous
- Just some games
- Emotional approach when learning (easy/hard exercises)
- Self training (music [improvise vs reading])
- Understanding the computer machine
- Career
- Development
- Data Science
- Architecture
- Programming paradigms [how to think about problems]
- Functional
- Object Oriented
- Actor Based
- Resources (tutorials, blogs, videos, courses, books, communities, chat)
- Tools
Beginer's guide
-> 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
- Learn Javascript and it's derivatives (Nodejs, Angularjs), why, because is
the language of the web
more will be easy to learn.
- 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.
- Train keyboard typing
- Know how to extract knowledge from google (use good search keywords), use
stack overflow, forums, etc... write and chat with people out there
- Learn linux (optional), but very very important
- Learn how you learn, so you boost your learning. Use concept maps
- 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
- duolingo - Learn english with games
Open mind
- problem-solving-approach - How you should approach problems
Linux (optional)
- linux-survival -
-
learn-the-hard-way
- learn-shell - It's essential to know the basics
of shell programming for every programmer.
-
learning-linux
- linux-foundation-video
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
- javascript2
- javascript - All you need for Javascript coding, click it :)
Solving Problems
- project-euler - world selection of interesting problems
to solve
- hacker-rank - world competition of solving
problems
- hacker-earth - competition, traning and very good tutorials!
- 99-functional-problems - very elegant haskell solutions, and also in java, closure.
- free-code-camp - solve problems and help others at the same time
Tools
- learn-how-to-learn -
learn how to learn
- front-end - base
to know how to develop web application
- mongodb -
NoSQL database with mongodb
- sql - also know SQL!
- sql - start SQL here
- git-basics - Basics of GIT
- github - this is where
you share code, participate on commercial or open-source projects teams
- github-flow - basic flow to start your project
- vim-interactive - learn vim online interactively
- vim-shortcuts - cheat sheet vim shortcuts
- typing-tutorial - typing tutorial (15 minutes/day, pls...)
Frameworks
- javascript - list of best javascript libs
Front-end
- front-end-begginers-list - complete and detailed list of resources
Tutorials & Books
- eloquent-javascript -
incredible book
- angular -
google framework to develop web application, good to know to find a job
- advanced-git - Advanced GIT
- the-new-javascript
- learn the last javascript version
- impostor-handbook - Amazing book
Functional Programming
- basic-haskell - Beginers book
- learn-you-a-haskell - Amazing book
- learn-haskell-the-hard-way - Oho...
- haskell-web-site - Resources
- lambda-calculus - If you want and like theory, what is behind functional programming
Object Oriented Programmng
- C# design-patterns - C# super clear examples on design patterns.
Artificial Intelligence
- neural-net-playground - Pure fun for you and your family :)
- nn-lib - Tiny Javascript Neural Net lib
- tensor-flow - Yeah, google opened source of their super machine learning library !!!
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