Mentorship Session

Here is the proposal:

Lets have a 2h hangout once you’re done with Eloquent JS in order to discuss the best way for you to move forward.

There are some basics you still need like:

  • Debugging techniques
  • Node.js (npm, semver, CommonJS..)
  • HTML5 (CSS3, sass)
  • Source Control (git)
  • Server side development
  • Testing (unit and functional)
  • Deployment of projects.
  • Finding, reading and contributing to FOOS

I will create a ticket for each one of the entries with recommended learning resources, but it might make sense for you to start working on a real project where you can start practicing all those skills.

Cheers!

AirCrewMentor

 

Advertisements

JavaScript Primer

The next step is to lear JavaScript (JS) basics by reading and doing the project included on the online and free book http://eloquentjavascript.net/ Don’t jump yet to other JS learning resources. Most of the time during your training you will enhancing the concepts introduced by this book, but if you find that you get stuck with the exercises you might want to alternate between EloquentJS andhttp://www.codecademy.com/en/tracks/javascript which has a more practical but less formal approach that might suit better your learning style. Nonetheless the goal of this exercise is to absorb the knowledge exposed on EloquentJS.

Writted by Mentor

Plain Text

Software Developers produce code and although this code can be converted into machine code by a compiler http://en.wikipedia.org/wiki/Compiler, we don’t work directly with compiled programs but just with plain text code.

As a software developer, the text editor is where you will spend the vast majority of your time, therefore understanding and mastering one text editor is crucial to the development of your career.

It is common for people starting with coding to fall in the trap of using IDE’s (Integrated Development Environments)http://en.wikipedia.org/wiki/Integrated_development_environment early on their learning process. IDE’s can be a powerful tool, but they become obsolete very easily, can easily lock your productivity to their platform and will abstract you from important things worth understanding in your workflow.

I personally started myself using IDE’s and I regret I did. It was very easy for me to get started with an IDE, but it locked me into the programming languages that where supported by the IDE, it also prevented me from learning how to deploy and version control code properly as I would use the features in the IDE.

You’re starting your career as a software developer from scratch and as such I would recommend you to get used early on in the process to simple and extensible Text Editors that can be installed quickly on any Operating System.

Tips for choosing an editor (and other technologies)

The main considerations for choosing a text editor also apply to choosing other technologies that will accompany you during your professional development:

  • Ubiquitous: (Omnipresent in religious terms) The tool is easily available and installable on most operating systems.
  • Extensible: It is easy for you and others to include extra functionality on the system.
  • Complete: It has the features you need, either on it’s core or via extensions.
  • Community: A large community uses the editor and contributes actively to their extensions.

There are way too many text editors in the markethttp://en.wikipedia.org/wiki/List_of_text_editors, we will just review the main ones every developer should be aware of and that cover the considerations that I just exposed:

Command line only:

  • vi (1976): http://en.wikipedia.org/wiki/Vi and Vim (1991)http://en.wikipedia.org/wiki/Vim_(text_editor). vim is a cult editor that is very unintuitive and hard to learn. The philosophy of vi and vim is that your hands should be as close as possible to the “home row” all the time to improve your typing performance. Which basically translates in no mouse and obscure keyword commands. Vi is available on every Unix/Linux machine by default, so very basic understanding of the tool is recommended if your career takes you towards system administration (not there yet :).
  • emacs (1979): similar to vi/vim, more extensible but not as ubiquitous.

GUI (Graphic User Interface) Editors:

  • Sublime Text 2: Commercial cross operating editor with a large ecosystem. Sublime is a newcomer and has taken the reigns of TextMate (MacOS Only) after TextMate failed to deliver updates and bug fixes.

Sublime Text

During this course we will use Sublime Text. You can download Sublime text for free. The license will prevent a payment reminder to show up in the middle of your day and although it is bearable, I personally bought a license (one for all my devices) to support the development efforts.

Lets get started with sublime by:

Markdown

Markdown is not an editor, but a “standard” way of creating documentation using plan text. The idea is that plain text written as you would for an email, can be then converted into HTML, PDF and other formats by following a very simple set of conventions.

It is important to learn markdown as you will use it for writing documentation for your projects, sending tickets (like this one), writing articles…

Great software developers master the art of writing good documentation and starting early in the process with tools that make it easy (like markdown) is very important for your development. It is also a skill that you can use in other professional areas.

It is also really easy to get started with Markdown. You can use it on a daily basis to gain experience with Sublime by using it instead of your email editor or M$ Word.

Just type your text using markdown and if you need a formatted version, install the “Markdown Preview” plugin to get a nice formatted version you can copy and paste.

A nice resource for learning Markdown is https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet

written by Mentor

Learning POSIX

To starter this is going to be my first task. I am really green.

POSIX is a Portable Operating System Interface normally found in most Unix-like environments.

Before jumping into learning how to program is important that we get familiarised with the way the command line works and with the Unix philosophy.

MacOS is built on top of FreeBSD, so you already have all the power of Unix on your fingertips.

Tools

The following tools should be installed on your Mac in order to make the most out of your learning.

  • Iterm: http://www.iterm2.com/ the best “Terminal”, “Console”, “Command Line”, for Mac
  • Xcode: https://developer.apple.com/xcode/downloads/ We will not use it directly but it is required by other tools.
  • brew: http://brew.sh/ (instructions at the bottom of the page). This is a “Package manager” for Mac that allows you to install most software with a single command. Most POSIX systems include one (Debian apt, Ubuntu aptitude, Redhat rpm…)

Course screencast

Written by Mentor

Teaching a friend how to become a developer

This course covers the material, methodology and assignments used to teach how to become a developer to your good friends.

Lingua Franca

English

Today’s world lingua franca is English, therefore the first step in your learning path is to:

  • Change your browser settings to English. Remove all other languages from your browser and change your search engine to default to the US/English version.
  • Start thinking in English. As you start searching and reading only English articles your mind will start thinking and questioning in English.
  • Improve your listening skills. Listen to at least 100 podcasts fromhttp://ecorner.stanford.edu/ and you’ll improve your listening and comprehension skills at the same time that you’ll get familiar with the Technology, Business, Legal, Non for profit landscape lead Silicon Valley.
  • Set your operating system language to English.
  • Once you start coding, buy an US keyboard… the common coding keys are placed in handier location

JavaScript

JavaScript or JS is becoming the lingua franca of the programming languages. We will master this one during the rest of the course.

Source Control

This is a big part of learning how to code.

To get started, register for an account on the following sites:

writted by Mentor