https://github.com/cdiggins/softwaredevessentials
https://github.com/cdiggins/softwaredevessentials
Last synced: 26 days ago
JSON representation
- Host: GitHub
- URL: https://github.com/cdiggins/softwaredevessentials
- Owner: cdiggins
- Created: 2025-06-24T15:30:52.000Z (9 months ago)
- Default Branch: main
- Last Pushed: 2025-06-24T16:27:48.000Z (9 months ago)
- Last Synced: 2025-06-24T16:40:27.557Z (9 months ago)
- Size: 5.86 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# SoftwareDevEssentials
**An open guide to the essential skills every professional software developer should master.**
## 📌 Why This Exists
Today, it’s easier than ever to build working software — LLMs, frameworks, web-sites, samples, and tools have lowered the bar for entry. That’s a good thing.
But it also means that **many developers enter the industry with critical gaps in their knowledge**. They may not realize what skills are expected of them in a professional environment — until they're already on the job.
This isn’t just a challenge for self-taught developers.
Even students pursuing Computer Science degrees often graduate **without exposure to practical software development**, system design, or modern tooling workflows.
Others may be experts in one niche but unaware of foundational skills expected in others.
---
## 🎯 Who This Is For
- đź§ **Self-taught learners** building their own curriculum
- 🎓 **Students** supplementing university courses
- 🛠️ **Junior developers** preparing for job interviews or career transitions
- đź§ **Career changers** unsure what to focus on next
- 🧑‍🏫 **Mentors & educators** looking for a skill checklist
---
## 📚 What's Inside
This repository is a curated list of **core skills** and **concepts** that every software developer should know to be effective in real-world, professional settings.
It’s not about chasing trends — it’s about building solid, adaptable foundation that will last you throughout a career, even while technology continues to evolve
---
## 🤝 Contributing
This guide is a living document. If you’ve worked in the industry and noticed a skill many new developers are missing — open a PR! If you’re learning and found something confusing that should’ve been obvious — let’s document it.
---
## đź§ The Goal
To help software developers become **competent, confident, and adaptable professionals** — not just coders, but engineers of quality, maintainable software who can quickly learn and use new tools effectively.
This is done by achieving a deep understanding of how things work.
---
**There is no magic in computer programming, but anything is possible.**
---
# Topics:
- Command Line programming
- Files
- Pipes
- Processes
- Sockets
- Standard In, Standard Out, Standard Error
- Command Line Arguments
- Environment Variables
- Console formatting
- Batch file scripting (BASH, ZSH, DOS BAT)
- Markup Languages
- JSON
- XML
- YAML
- HTML
- SVG
- INI files
- LUA
- Graphics
- 2D Graphics
- Bitmaps
- 3D graphics
- MPEG encoding
- Numerical Representations
- Bits and Bytes Operations
- Floating-point Numbers
- How they are represented
- Accuracy
- Text and Strings
- Unicode
- ASCII
- Date Time
- Representations
- Compression
- Huffman encoding
- RTL
- Memory Management
- Stack
- Heap
- Alignment
- Big-endian / Little-endian
- Virtual memory
- Cache
- Garbage Collection
- Memory fragmentation
- Software Optimization
- Profilers
- Cache effects
- Benchmarking
- Dangers of early optimization
- Boolean Logic and Algebra
- Lambda Calculus
- SKI Calculus
- Software Organization
- Source files
- Project files
- Solution files
- Configuration files
- Class libraries
- Versioning
- Packages
- Operating Systems
- File systems
- Virtual memory
- Executables
- Dynamically linked libraries
- Programming Language Survey
- Forth
- Logo
- JavaScript
- Python
- Scheme
- C
- Basic
- ML
- Haskell
- C++
- Rust
- C#
- Java
- Excel
- Programming Paradigms
- Object-oriented
- Prototype-based
- Functional
- Data-flow
- Eager versus Lazy Evaluation
- Parsing
- Regular expressions
- Context Free Grammars
- Concrete Syntax Tree (aka Parse Trees)
- Abstract Syntax Trees
- Compilers
- Lexical Analysis
- Syntactic Analysis
- Parsers
- Byte-code
- Optimization techniques
- Foreign function interfaces
- Calling conventions
- Computer Architecture
- Memory allocators
- Assembly code
- Bytecode
- Programming techniques
- Structured programming
- Event driven
- Asynchronous programming
- Threads
- Reflection
- Internet Protocols
- HTTP
- TCP/IP
- Web-Sockets
- Databases
- Relational databases
- NoSQL database
- Graph databases
- Web-Programming
- JavaScript
- JQuery
- TypeScript
- Node.JS
- React
- Rest APIs
- RPC
- Postman
- Curl
- Web-server
- CORS
- Security
- Hashing
- Cryptography
- PGP
- Data management best practices
- Hardening
- Types of attacks
- Abstract Data Types and Collections
- Arrays
- Dynamic Arrays
- Stack
- Queue
- Dequeue
- Binary Tree
- Linked-List
- Doubly Linked-List
- K Tree
- Algorithmic Complexity (Big O)
- Algorithmic Design Techniques
- Software Engineering Principles
- Management
- Dependency Injection
- Inversion of Control
- Don't Repeat Yourself
- Reduce Coupling
- Encapsulation
- Information Hiding
- Law of Demeter
- Liskov Substitution Principle
- Graphical User Interface
- WinForms
- QT
- WPF
- MVC
- MVVM
- Spaghetti event code
- Terminal UI using Console Codes