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.
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.
Feel free to contribute. Create a pull request, or shoot me an email at sb@sbarkin.com.
- 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
- FTP/SFTP
- Editors
- Atom
- Sublime
- Brackets
- Visual Studio Code
- Notepad++ (Windows)
- IDE
- JetBrains (multiple IDEs for many languages)
- Visual Studio
- Eclipse
- Xcode (Mac)
- 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)
- Sharing screenshots (no, don't take a picture of your screen with your camera :)
- Issue Tracker
- Time tracking
- Chat Tools
- Email Options
- G Suite
- Office 365
- Self Hosted
- 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#
- 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
- Cloud GIT repositories
- Semantic Versioning
- The most popular way of version numbering in software development
- SSH /FTP/SFTP
- Command line
- Windows - command prompt, Mac- terminal
- Common commands:
cd
,mkdir
,ls
(Unix)/dir
(PC),chmod
(unix),vi
/cat
(Unix)...
- Popular JS Frameworks
- React, Angular, Node.js, Vue.js
- Content management systems (CMS) - sometimes used for web development
- Postman // for testing APIs
- CD/CI
- Server environments
- Development
- Testing/staging/UAT (there may be multiple levels)
- Production
- Server OS
- Windows Server (web server = IIS)
- Linux // Used for PHP and other technologies
- Web Servers
- SSL
- Encrypts traffic on a website
- Let’s Encrypt // free SSL
- IP Address
- 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
- CDN
- Cloud Hosting Companies
- Static site hosting (for JAM sites)
- PaaS (Platform as a service)
- Container Management
- 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
- Serverless, Headless CMS, AMP
- Got a question?
- Ask Google (yeh, really!)
- Still can find the answer?
- Ask on stackoverflow // general development questions
- Or a the appropriate StackExchange site
- Git Cheat sheet
- Comprehensive list of development stuffs Awesome list
- Client - a program on the computer used to access something. Email client, CLI client...
- Provision (server)
- Windows account types
- AD
- Local
- Windows Account
- Pinning to doc/taskbar
- Chrome
- Signing into chrome
- Bookmarks (Bookmarks bar, folders)
- Ad blocker - uBlock Origin
- Password Manager
- Split Windows
- Keyboard shortcuts (Mac/Windows)
- Command/Ctrl + C, copy
- Command/Ctrl + V, paste
- Command/Ctrl + X, cut (does not work in Finder)
- Browser Shortcuts (Mac/Windows)
- Command/Ctrl + R, refresh page
- Command/Ctrl + Shift+ R, hard refresh