Skip to content

shmuelbarkin/Stuff-you-should-know

Repository files navigation

Stuff you should know

Objective

This objective of this project is to provide a list of basic development concepts geared towards beginning developers. These are listed below. I have also included some other useful resources, such as - common command line commands, issue templates, website checklist and more. Those are presented as additional files in this repo.

Repo structure

This repo contains resources for the development process end to end. To we have used a prefix to identify which part of the process it belongs to.

  • dev => development
  • projectManagement => projectManagement
  • design = design and UX/UI Often there is an overlap, so these classifications are the closest match to the contents according to my understanding.

Contribute

Feel free to contribute. Create a pull request, or shoot me an email at sb@sbarkin.com.

Tooling

  1. CLI (SSH Client)
    • iTerm2 (Mac)
    • Putty (Windows)
    • Linux Bash Shell on Windows 10
    • Many others are available - if you are working with Linux servers it's best to find a something more native to Linux. One example is - Babun
  2. FTP/SFTP
    • SFTP uses SSH credentials to connect
    • FTP uses FTP credentials to connect (not secure)
    • FileZilla
    • WinSCP (Windows)
  3. Editors
  4. IDE
  5. App Installer
    • Homebrew (Mac)
    • Ninite (Windows)
      • Safe Download of popular free software. Free software is often available on shady sites with bloatware or malware. Always make sure you are downloading from a trusted source.
    • macapps (Mac)
    • GetMacApps (Mac)
  6. Sharing screenshots (no, don't take a picture of your screen with your camera :)
  7. Issue Tracker
    • Jira // the leading option
    • YouTrack // simpler and cheaper and usually sufficient alternative
  8. Time tracking
  9. Chat Tools
  10. Email Options

Build

  1. Setting up a local development environment
    • Localhost web server
    • XAMPP and WampServer (Windows)
    • Virtual machine
    • Package manager
      • NPM for JS, Composer for PHP, RubyGems for Ruby, Cocoa Pods for iOS, Nuget for C#
  2. VCS (version control)
    • GIT
    • Common commands git add, git commit -m <msg>, git push, git pull, git status
    • You should know how to initiate a remote repository connect to cloud hosted repo and how to clone a project
    • Understand the different workflows, ie feature branches
  3. Cloud GIT repositories
  4. Semantic Versioning
    • The most popular way of version numbering in software development
  5. SSH /FTP/SFTP
  6. Command line
    • Windows - command prompt, Mac- terminal
    • Common commands: cd, mkdir, ls (Unix)/dir (PC), chmod (unix),vi/cat (Unix)...
  7. Popular JS Frameworks
    • React, Angular, Node.js, Vue.js
  8. Content management systems (CMS) - sometimes used for web development
  9. Postman // for testing APIs

Deploy

  1. CD/CI
    • Continuous integration
    • Continuous deployment (or delivery)
    • Code sniffing and linting
  2. Server environments
    • Development
    • Testing/staging/UAT (there may be multiple levels)
    • Production
  3. Server OS
  4. Web Servers
    • IIS // Microsoft product, used for .NET projects
    • Apache
    • Nginx // the new kid on the block
  5. SSL
  6. IP Address
  7. DNS
    • Name servers
    • DNS records
    • A records // Returns a IPv4 address, most commonly used to map hostnames to an IP address of the host
    • MX records // email records
    • CNAME records
    • TXT records
  8. CDN
  9. Cloud Hosting Companies
  10. Static site hosting (for JAM sites)
  11. PaaS (Platform as a service)
  12. Container Management
  13. Security and Recovery
    • Ensure the server has automatic security patching
    • Fail2ban
    • Servers should have read only permissions to repo
    • Setup database backups to a remote location
    • Configure alerts fro critical server usage, errors and exceptions
  14. Serverless, Headless CMS, AMP

Monitor

  1. FullStory, LogRocket HotJar, Google Analytics

Resources

Random Terms

  • Client - a program on the computer used to access something. Email client, CLI client...
  • Provision (server)

Setting up your computer

  1. Windows account types
    • AD
    • Local
    • Windows Account
  2. Pinning to doc/taskbar
  3. Chrome
  4. Split Windows

General Computer Terms/Concepts

  1. Keyboard shortcuts (Mac/Windows)
    • Command/Ctrl + C, copy
    • Command/Ctrl + V, paste
    • Command/Ctrl + X, cut (does not work in Finder)
  2. Browser Shortcuts (Mac/Windows)
    • Command/Ctrl + R, refresh page
    • Command/Ctrl + Shift+ R, hard refresh

About

Development resources

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published