Skip to content

Latest commit

 

History

History
798 lines (716 loc) · 31.2 KB

dev-guide.md

File metadata and controls

798 lines (716 loc) · 31.2 KB

Development Guide

Guide To Becoming A Self-Taught Software Developer

1. Figure Out Your End Goal

  • Work for a big company, startup, freelance?
  • Web development (frontend/backend), gaming, data science, mobile apps?
  • What are you naturally good at?
  • Check pay scales, job security, etc for different types of dev jobs

2. Choose A Programming Language

  • Figure out which language you should learn for what you want to do
    • Python: Data Science, Machine Learning, AI
    • Swift, Java: Mobile Development
    • C++: Game Development
    • JavaScript, PHP, Ruby, Python, etc: Web Development
  • Fundamentals first! (Save framework, etc for later)
  • Chose a text editor / IDE and get comfortable with it
  • You can always switch or learn another language

3. Find Resources & Build A Curriculum

  • Books: Great for learning language fundamentals
  • Documentation: Best used for reference
  • Resource Websites: W3Schools, MDN Web Docs
  • Video Courses: Youtube, Udemy, Pluralsight, Lynda, Coursera, etc
  • Online Bootcamps: FreeCodeCamp, Codeacademy, Treehouse
  • Challenge Websites: Codewars, HackerRank

4. Find A Community

  • Having people to talk to and learn from is very benifitial
  • Find a mentor if possible
  • Join an online community
  • Go to meetups

5. Create Your Own Projects

  • Following along with courses is only half the battle
  • This is where most get stuck and many quit
  • Your projects do NOT have to be from scratch
  • Add new features, use the docs as a supplement to figure new stuff out
  • Look at other people's code that is similar to what you want to achieve
  • Eventually you won't need to use other projects as a starting point

6. Create Your Portfolio

  • Create an attractive but simple portfolio
  • Showcase a live version (if possible) and your source code
  • Self taught developers NEED a great portfolio with work examples

7. Contribute to Open Source

  • Gives you experience with real-life projects
  • Collaborate with other developers
  • Something for your resume
  • Learn how to use Github

8. Create an Online Presence

  • Also extremely importnt for self-taught devs with no degree
  • Have an up to date LinkedIn and professional Twitter
  • Upload all of your work to Github and keep it well documented
  • Write articles, tutorials, videos, etc
  • The more your are visible on the web, the better

9. Prepare & Apply to Jobs

  • All other boxes should be checked
  • Prepare for interviews, practice algorithms, create a resume, cover letter, etc
  • Search for jobs in your area that are looking for things you know
  • Apply even if it says a degree required
  • Remember...it is your first job, not your last

Career

  1. Web Development
    • HTML, CSS, Javascript
  2. Software Development
    • Java and C++
  3. Android & IOS Development
    • Android built in Java
    • IOS build in C#

Web Development

HTML/CSS Frameworks

  • Twitter Bootstrap 4 - General framework, most popular
  • Materialize CSS - primarily a UI/UX framework
  • Bulma - Easy to learn syntax, No JS
  • Zurb Foundation - Alternative to Bootstrap
  • Skeleton - Very light boilerplate

Frontend Frameworks

  • React - Popular for startups, fast, Redux, JSX
  • Angular - Pupular in enterprise, full feature, NgRx
  • Vue.js - Fast, light, easy to use, Vuex
  • Aurelia - Light, feels like vanilla Javascript
  • Ambers
  • Meteor - javascript, for frontend and backend

Side Technologies You Should Learn

  • Git - Version control
  • Basic Command LIne - Folder navigation, file creation, etc
  • APIS/REST - Learn how REST APIs work
  • HTTP/SSL - http requests, HTTPS
  • CSS Pre-Processor
    • Sass
    • Less
  • Webpack & Babel - Module loader & JS compiler

Server Side Technology

  • Node.js - Fast, scalable and powerful
  • Python - Popular, rapid development, great integration
  • PHP - Practical, easy to deploy - Wordpress & Laravel
  • Ruby - Rapid development, strong community
  • C# & ASP.NET - Very powerful, Microsoft

Database

  • MongoDB - noSQL, non-relational, suggested for Node.js
  • mySQL - popular relational database
  • PostgreSQL - Powerful but a bit more difficult than MySQL
  • SQL Server - Microsoft's implementation of SQL
  • Oracle - Heavily used in enterprise
  • Firebase - Cloud database maintained by Google
  • CRUD (create, read, update, delete)

Server Side Frameworks

  • JavaScript
    • Express
    • Hapi.js
    • Adonis
    • Loopback
    • Swagger
  • Python
    • Django
    • Flask
    • Web2py
    • Pylons
  • PHP
    • Laravel
    • Symfony
    • CodeIgniter
    • Yii2
  • Ruby
    • Ruby on Rails
    • Sinatra
    • Nitro
  • C#
    • .NET

Content Management Systems

  • Wordpress
  • Drupal
  • Joomla

DevOps & Deploying Applications

  • Dedicated Server / VPS
    • Cloud Hosting
    • Digital Ocean, Heroku
    • Amazon Web Services
    • Cloud Storage - Amazon S3
  • Working with SSH & command line
  • Server maintenance & software updates

Mobile Applications

  • React Native
  • NativeScript
  • Ionic
  • PhoneGap / Cordova
  • Xamarin

Types of Developer

Front End Developer / Web Designer

  • Web fundamentals like HTML, CSS and Vanilla JS (ES6)
  • Build projects, solve js coding challenges
  • Version Control and CLI:
    • Git & Github
    • ssh
    • command line
  • CSS pre-processor:
    • SASS or LESS
  • CSS library:
    • Bootstrap
    • Material
    • Foundation
  • Version Control:
    • Git & Github
  • Frontend Developer Tools:
    • Gulp
    • Webpack
    • NPM
    • Babel
  • Design Patterns (JS, CSS)
  • JavaScript Libraries and Frameworks:
    • jQuery - it's like JavaScript but...easier
    • Backbone.js
    • Angular
    • React
    • Vue.js
    • ember
  • AJAX
  • Deploy:
    • Firebase
    • Heroku

Back-End Developer / Server Side

  • API design and development
  • CRUD (Create, Read, Update, Delete)
  • RESTful Services
  • Web fundamentals like HTML, JavaScript, and CSS
  • Server-side languages like PHP, Python, Ruby, Java, JavaScript, and .Net
  • Database technologies like MySQL, Oracle, PostgreSQL, and MongoDB.
  • Web server technologies like Node.js, J2EE, Apache, Nginx, ISS, etc.
  • Frameworks related to their server-side language of choice like: Express.js, Ruby on Rails, CakePHP, etc.

Full Stack Developer

On the front-end, the full stack web developer uses a combination of HTML, CSS, and JavaScript to build everything a user sees and interacts with on a website. On the back-end they develop the application, server, and database that make up the foundational structure of a website. Their skills are often centered around solution stacks like LAMP (Linux, Apache, MySQL, PHP) or MEAN (MongoDB, Express.js, AngularJS, Node.js) which contain all the technologies required to set up a complete website.

  • Create simple to advanced web applications (Front and Back end)
  • Create secure REST APIs
  • Deploy & maintain applications
  • Administer databases

Programming Languages

  • PHP
  • Python
  • Node.js
  • Rails
  • Java

Common NPM packages

  • Express - Web development framework
  • Body-parser
    • learn how it helps put things on req.body
  • Connect - Extensible HTTP server framework
  • Path
  • Socket.io - Server side component for websockets
  • Templating
    • Pug / Jade
      • inspired by HAML
      • learn how to render pug files with res.render('someViewFile.pug', data)
    • handlebars
    • mustache
    • ejs
    • etc
  • Mongo / Mongoose - Wrappers to interact with MongoDB
  • Coffee-Script - CoffeeScript compiler
  • Redis - Redis client library

Node & Express & NPM

  • Server or Web Server
  • Request and response
  • res.json / res.render / res.send("you're on the homepage") <- "/"

Databases (relational vs non-relational)

  • MongoDB non relational
    • MERN (mongo, express, react, node)
  • Progres
    • mysql

Object relational mappers

  • Mongoose (mongoDB)
  • Sequelize (postgres, mysql)

PROJECTS (toodler)

  • must have CRUD (Create, Read, Update, Delete) functionality
  • URL shortener
  • To do list App
  • A movies App
  • Blog
  • Rebuild front end app projects
  • Deployment
    • docker
    • heroku
    • digital ocean
    • nginx
  • learn 1 then come back later for more.
  • RESTful api
  • MVC Architecture:
    • Model - data in your database
    • View
      • pug files (what the user sees)
    • Controller
      • connecter/linker for the two
  • Authentication (JWTm oAuth 2.0):
    • Passport
    • Strategies
    • Simple basic authentication system Email && Password
    • Login with social media profiles, facebook google twitter etc..
    • Json Web Token
    • Email reset password flow
    • Nodemailer (sendgrid, postmark)
    • Authorization
  • Testing (Mocha, Chai)
  • Security:
    • SSL
    • Injections
    • Form validations (client && server)
    • Handling uploads (images, videos, links etc)
    • XSS attacks
  • You're ready:
    • Keep learning more
    • SSR (Server Side Rendering) vs CSR (Client Side Rendering)
    • MERN (mongo, express, react, node) (Go Deeper, solidify)
    • explore other stacks
    • Job? Still haven't applied?
    • Apply to Every job

Sample Summary of Web App Developer / Software Engineer

Senior Software Engineer (Java and Web Dev)

A senior developer with 5+ years in the field of Front-end and Java. I can work on both front-end and back-end part of a project, which also includes but not limited to: designing, data structure, development, optimization, testing, and deployment.

I'm flexible with changes needed to meet-up the requirements. I'm confident in my skills and I'm very open to new technologies and knowledge that I might acquire.

My previous projects include mostly e-Commerce websites, banking web application, and social media. Also, I mostly work on several APIs that serve both Mobile and Web apps.