Skip to content

A curated list of awesome software engineering resources.

Notifications You must be signed in to change notification settings

irublev/awesome-software-engineering

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

59 Commits
 
 
 
 

Repository files navigation

Awesome Software Engineering

A curated list of awesome software engineering resources.

Quick links to sections in this page

🔍 Fundamentals 🌀 Common Mistakes 🎁 Code Review
⚔ Data Structures and Algos 💰 Common principles ➿ Design Patterns
🛀 Clean Code 🔦 Clean Architecture 🔧 Refactoring
🔏 UML & noUML 📜 Software Development Methodologies 🎓OOP
🏁 Debugging 💪 Testing 🤖 IDEs
🧵 Security 🏷️ Programming Languages 🗞️ Databases
📡 Java 🗺️ Python 📥 JavaScript
🔴 REST API 🧩 GraphQL
📓 Linux ❔ Windows ✨ Proxmox
📊 SSH 🔖 Git 📠 Vim
🎻 LibreOffice 💎 Kdenlive ✒️GIMP
📚 ZFS ⛳ LVM 🎹 tmux
🧮 Ansible [ 🍃 Docker 🌌 Kubernetes
🔐 KeePassXC 🗿 iptables

Fundamentals

OOP

  1. 🎞️ What is OOP by FoxMinded
  2. 🎞️ OOP: Incapsulation explained by FoxMinded
  3. 🎞️ OOP: Inheritance explained by FoxMinded
  4. 🎞️ OOP: Polymorphism by explained by FoxMinded
  5. 🎞️ OOP explained by Mosh
  6. 📜 Why OOP is not a silver bullet
  7. 📜 Inheritance vs Composition. Which should you use?

Common mistakes

  1. 🎞️ 7 Common mistakes of Junior developers
  2. 🎞️ 5 Programming Anti-patterns for Beginners
  3. 📜 Anti-patterns and Code Smells
  4. 🎞️ Why it is bad to return NULL in Java
  5. 📜 The Anti Pattern of Getters And Setters by Ajeng Sugiarti
  6. 📜 Avoid getters and setters whenever possible by scottshipp
  7. 📜 Software Engineering Anti-patterns catalogue in Wikipedia

Code Review

  1. 🎞️ How to Review Someone Else's Code by Codecademy
  2. 🎞️ Code Review Best Practices by JetBrains

Code Style

  1. 📜 Code style as a standard of software development

Data Structures and Algos

  1. 🎞️ Data Structures and Algorithms by Mosh

Common principles

  1. 🎞️ Problem Domain Decomposition by FoxMinded
  2. 🎞️ DRY principle
  3. 🎞️ DRY, KISS, YAGNI
  4. 🎞️ SOLID principles
  5. 🎞️ SOLID principles & Architecture: a lecture from FPMI
  6. 🎞️ Frameworks & Inversion of Control
  7. 🎞️ Dependency Injection & Inversion of Control
  8. 📜 Dependency Injection vs Inversion of Control
  9. 📜 Low Coupling & High Cohesion by German Gorelkin
  10. 📜 Low Coupling & High Cohesion by Ammar Verbi Merakli
  11. 📜 Demeter's Law: Don't talk to strangers by Carlos Caballero
  12. 📜 GRASP Design Principles by Krzysztof Kwieciński
  13. 📜 What are General Responsibility Assignment Software Patterns? by Jakub Kapuscik
  14. 📜 Object-oriented design: GRASP patterns by J.Serrat
  15. 📜 ADVANCED SOFTWARE DESIGN: GRASP, SOLID, YAGNI, DRY, KISS, OTHER PRINCIPLES BY Dave Clarke

Design Patterns

  1. 🎞️ Design Patterns by Mosh
  2. 📖 Design Patterns: Elements of Reusable Object-Oriented Software, Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides
  3. 🎞️ Design patterns (brief)
  4. 🎞️ Design patterns (full)
  5. 📜 Java Design Patterns - online catalog
  6. 📜 The Builder pattern vs Java syntax

Clean Architecture

  1. 📖 Clean Architecture, A Craftsman's Guide to Software Structure And Design, Robert C. Martin
  2. 🎞️ SOLID principles & Architecture: a lecture from FPMI

Clean Code

  1. 🎞️ Clean Code lecture by FoxMinded
  2. 📖 Clean Code: A Handbook of Agile Software Craftsmanship,Robert C. Martin

Refactoring

  1. 📖 Refactoring: Improving the Design of Existing Code, Martin Fowler, Kent Beck, 2st edition
  2. 🎞️ Refactoring lectures by FoxMinded
  3. 📜 The Art of Refactoring: 5 Tips to Write Better Code
  4. 📜 Code Refactoring Best Practices: When (and When Not) to Do It

UML & noUML

  1. 🎞️ A brief UML tutorial by Lucidchart
  2. 🎞️ A detailed UML tutorial by Derek Banas
  3. 📜 noUML explained, UML criticism by Vladimir Frolov, part1
  4. 📜 noUML explained by Vladimir Frolov, part2

Software Development Methodologies

  1. 🎞️ Who is who in Software Development: Developer, QA, BA, PM - who are those people? by FoxMinded
  2. 🎞️ Phases
  3. 🎞️ Methodologies

Debugging

  1. 🎞️ Debugging, lecture from FPMI, part1
  2. 🎞️ Debugging, lecture from FPMI, part2
  3. 📜 Debugging tips
  4. 📜 10 Debugging Tips for Beginners: How to Troubleshoot and Fix Your Code Without Pulling Your Hair Out By Hartley Brody

Testing

  1. 🎞️ Unit Testing in Software Development
  2. 🎞️ TTD vs BDD 1
  3. 🎞️ TTD vs BDD 2
  4. 📜 Unit Tests vs Functional Tests
  5. 🎞️ TTD crash course
  6. 🎞️ BDD

TTD in Java

  1. Go to "TestNG" and "Mockito" subsections below under "Java Frameworks" section.

BDD in Java

  1. Go to "Serenity BDD" subsection below under "Java Frameworks" section.

TTD in JavaScript

  1. Go to "Jest" subsection below under "Java Script Frameworks" section.
  2. 🎞️ React Unit Testing

IDEs

IntelliJ Idea

  1. 🎞️ IntelliJ Idea Full Course by Amigoscode

Linux

  1. 🎞️ 6 Things to Know When Switching to Linux from Windows by Chris Titus
  2. 🎞️ 6 Mistakes New Linux Users Make by Chris Titus
  3. 🎞️ Unix philosophy by unixway
  4. 🎞️ 5 Things I Hate About Linux by Chris Titus

Linux Distributions

  1. 🎞️ Which Linux Distribution? | Understanding Linux Distros by Chris Titus
  2. 🎞️ How to Choose a Linux Distribution by Chris Titus
  3. 🎞️ Debian vs Arch by Chris Titus
  4. 🎞️ Why Ubuntu is the Devil and Why So Many No Longer Use It by Chris Titus

Command line

  1. 🎞️ 15 Useful Linux Commands Every Linux User Needs | Learning Terminal Part 1
  2. 🎞️ 15 Useful Linux Commands Every Linux User Needs | Learning Terminal Part 2
  3. 🎞️ Bash tutorial
  4. 📜 zsh+OhMyZsh+fzf+powerlevel10k: Your terminal can be much, MUCH more productive by Ivan
  5. 📜 fzf: Why you should be using fzf, the command line fuzzy finder by Alexey Samoshkin

Tips & Tricks

  1. 📜 Awesome Linux Configuration Scripts by Alliedium
  2. 🎞️ Git Bare Repository - A Better Way To Manage Dotfiles by DistroTube

Linux Utilities

  1. 🎞️ Linux Apps I Use Daily by Chris Titus
  2. 🎞️ Linux Apps I Use At Work by Chris Titus

tmux

  1. 🎞️ Console Utility tmux by unixway

Arch Linux, Manjaro

  1. 🎞️ Arch Linux basics
  2. 🎞️ Arch Linux pacman
  3. 🎞️ Arch Linux AUR
  4. 🎞️ Arch Linux vs Manjaro

Proxmox

  1. 🎞️ Virtualize Everything! - Proxmox Install Tutorial by Craft Computing
  2. 🎞️ Proxmox VE 6.0 Beginner Tutorial - Installing Proxmox & Creating a virtual machine by Proxmox HHS
  3. 🎞️ Virtualize Windows 10 with Proxmox VE by Techno Tim
  4. 🎞️ Proxmox tutorial by realmanual

LVM

  1. 🎞️ LVM: Theory and practice by unixway

SSH

  1. 🎞️ OpenSSH basics
  2. 🎞️ SSH config basics

Linux Filesystems

  1. 🎞️ File Systems | Which One is the Best? ZFS, BTRFS, or EXT4 by Chris Titus

ZFS

  1. 🎞️ What Is ZFS?: A Brief Primer by Level1Linux
  2. 🎞️ ZFS filesystem by unixway

Desktop Environments

KDE

  1. 🎞️ How to Customize KDE | KDE Customization by Chris Titus
  2. 🎞️ KDE is Slow !?! | Disable Baloo File Indexer by Chris Titus

Image Editing

GIMP

  1. 🎞️ GIMP vs Photoshop | How to Optimize Your Workflow by Chris Titus

Video Editing

Kdenlive

  1. 🎞️ Kdenlive Tutorial 2019 - Beginner Basics by Victoriano de Jesus
  2. 🎞️ 2020 Kdenlive Video Tutorials by Victoriano de Jesus
  3. 🎞️ Kdenlive Cinematic Title Animation by makinars

Text Editing

Vim

  1. 🎞️ Vim Basics in 8 Minutes by tutorialLinux

LibreOffice

  1. 🎞️ Microsoft Office vs LibreOffice | How to Make the Change by Chris Titus

Windows

  1. 🎞️ 17 Reasons Why I Do Not Use Windows 10 by Chris Titus
  2. 🎞️ Speed Up Windows 10 in 2020 by Chris Titus

Source Control

Git

  1. 🎞️ Git Tutorial - Learn Git in 1 Hour by Mosh
  2. 🎞️ Git Basic Training
  3. 📜 Awesome Git Exerises by Alliedium
  4. 📜 Git exercies online by fracz

Security

KeePassXC

  1. 🎞️ Introduction to KeePassXC

iptables

  1. 🎞️ iptables: getting started
  2. 🎞️ Iptables detailed tutorial

Databases

SQL

  1. 🎞️ SQL Tutorial | PostgreSQL | Full Course by Amigoscode

Apache Ignite

  1. 🎞️ Getting started with Apache Ignite part 1
  2. 🎞️ Getting started with Apache Ignite part 2
  3. 🎞️ Getting started with Apache Ignite part 3
  4. 🎞️ Getting started with Apache Ignite part 4
  5. 🎞️ Moving Apache Ignite into Production: Best Practices for Distributed Transactions
  6. 📜 Boosting Jira Cloud App Development with Apache Ignite and Spring Boot
  7. 📖 High Performance in-memory computing with Apache Ignite: Building low latency, near real time application, Shamim Ahmed Bhuiyan, Michael Zheludkov and Timur Isachenko

Programming Languages

Java

  1. 🎞️ Java Overview by FoxMinded
  2. 🎞️ Java Application Development: the first steps by FoxMinded
  3. 📜 AWESOME JAVA: A curated list of awesome frameworks, libraries and software for the Java programming language.
  4. 🎞️ What is a Java server, comparison of Java Servers: Tomcat, Jetty, Wildfly, Glassfish, IBM WebSphere, Oracle WebLogic
  5. 🎞️ Java Tutorial for Beginners by Mosh
  6. 🎞️ Java For Beginners by FoxMinded
  7. 🎞️ Why it is bad to return NULL in Java
  8. 🎞️ Never ever use Lombok! Why this library is bad by FoxMinded
  9. 📖 Thinking in Java, Bruce Eckel, 4th edition
  10. 📜 Java Tutorials by JournalDev

Code Style

  1. 📜 Checkstyle is a tool for enforcing a Code Standard in Java
  2. 📜 Jenkins Warnings Next Generation Plugin
  3. 📜 How to Centralize your Checkstyle Configuration with Maven

Build Tools

Maven
  1. 🎞️ Simple Explanation of Maven and pom.xml
  2. 📜 Maven Tutorial
  3. 📜 Multi-Module Maven Project by Baeldung

Java Frameworks

  1. 🎞️ Which Java Frameworks you should know by FoxMinded
Java Collections Framework
  1. 📜 Java Collections Framework official documentation
ExecutorService
  1. 📜 ExecutorService - 10 tips and tricks
  2. 📜 InterruptedException and interrupting threads explained
TestNG
  1. 📜 Introduction to TestNG
  2. 📜 Why TestNG is better than JUnit
  3. 🎞️ Java Unit Testing with TestNG and Mockito
  4. 📖 Practical Unit Testing with TestNG and Mockito, Tomek Kaczanowski
Mockito
  1. 📜 Unit Tests with Mockito: Tutorial
  2. 📜 Mockito in six easy examples
  3. 📜 A sip of Mockito
  4. 📜 Mockito - Quick Guide
  5. 📜 Mockito When/Then Cookbook
  6. 📜 Usage of Mockito
  7. 📜 Mocking with Mockito: advanced techniques
  8. 📖 Practical Unit Testing with JUnit and Mockito, Tomek Kaczanowski
Serenity BDD
  1. 📜 How to implement test automation using Serenity
  2. 📜 Serenity BDD official documentation
  3. 📜 JBehave vs Cucumber JVM comparison
Hibernate
  1. 🎞️ What is JDBC? What is ORM, Hibernate & JPA? by FoxMinded
  2. 🎞️ Getting started with Hibernate
  3. 🎞️ Spring Boot JPA(Hibernate): let's add a database to our Java-based website by letsCode
  4. 🎞️ Hibernate Tutorial, Full Course
Spring Boot
  1. 🎞️ Spring Boot Tutorial for Beginners by freeCodeCamp.org
  2. 🎞️ Comparing Spring and JavaEE by FoxMinded
  3. 🎞️ Spring Boot 2: let us build a simple website together! by letsCode
  4. 📜 Boosting Jira Cloud App Development with Apache Ignite and Spring Boot
Spring Boot Dev Tools
  1. 📜 Faster Development with Spring Boot DevTools
  2. 📜 Optimize Your Dev Loop with Spring Boot Dev Tools

JavaScript

  1. 🎞️ Java Script Tutorials by Mosh
  2. 📜 AWESOME JAVASCRIPT: A collection of awesome browser-side JavaScript libraries, resources and shiny things

JavaScript frameworks, Tools and Runtimes

Node.js
  1. 🎞️ Node.js Tutorial for Beginners: Learn Node in 1 Hour by Mosh
  2. 📜 AWESOME NODEJS: Delightful Node.js packages and resources
Babel
  1. 🎞️ What is Babel and why you need it? Introduction to Babel
Jest
  1. 🎞️ Jest: Unit Testing in Java Script
React
  1. 🎞️ React Tutorial for Beginners [React js]
  2. 📜 AWESOME REACT: A collection of awesome things regarding React ecosystem
  3. 🎞️ React in 30 minutes
  4. 🎞️ Learn useState In 15 Minutes - React Hooks Explained
  5. 🎞️ Learn useEffect In 13 Minutes
  6. 🎞️ Redux Tutorial - Learn Redux from Scratch
  7. 🎞️ React Unit Testing

Python

  1. 🎞️ Python Tutorial - Python for Beginners [2020]
  2. 📜 AWESOME PYTHON: A curated list of awesome Python frameworks, libraries, software and resources

DevOps

  1. 🎞️ DevOps explained by IBM
  2. 📜 What is DevOps, DevOps lifecycle
  3. 📜 Continuous Delivery vs Continuous Deployment
  4. 📜 DevOps exercies by Bregman Arie

Containers and Container Orchestration

Docker

  1. 🎞️ Docker basics
  2. 📜 Docker Interview Questions
  3. 📜 Docker Compose Tutorial
  4. 📜 Docker Exercises by Bregman Arie
  5. 🎞️ Portainer - Lightweight Management UI for Docker

Ansible

  1. 🎞️ What Is Ansible? | How Ansible Works? | Ansible Tutorial For Beginners by Simplilearn
  2. 🎞️ You need to learn Ansible RIGHT NOW!! (Linux Automation) by NetworkChuck

Kubernetes

  1. 🎞️ Minikube Basics and How to Get Started with Kubernetes by Peter Jausovec
  2. 🎞️ Kubernetes video tutorial
  3. 📜
  4. 📜 Kubernetes exercies by Bregman Arie

Jenkins

  1. 📜 Jenkins Pipeline Tutorial
  2. 📜 Continuous Integration with Jenkins
  3. 🎞️ Jenkins Video Course in Russian
  4. 📜 Jenkins CheatSheet
  5. 📜 Jenkins Interview Questions

Networks

REST API

  1. 🎞️ REST API explained by Mosh
  2. 🎞️ Autogenerating Swagger Documentation with Node & Express
  3. 🎞️ REST API testing via Postman

GraphQL

  1. 📜 Introduction to GraphQL by Udara Bibile
  2. 📜 GraphQL With Python Flask by Manish Jain
  3. 📜 Schema-First GraphQL: The Road Less Travelled by Jakub Draganek

About

A curated list of awesome software engineering resources.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published