{"id":29120955,"url":"https://github.com/cdiggins/softwaredevessentials","last_synced_at":"2026-02-24T18:31:30.808Z","repository":{"id":300992926,"uuid":"1007825342","full_name":"cdiggins/SoftwareDevEssentials","owner":"cdiggins","description":null,"archived":false,"fork":false,"pushed_at":"2025-06-24T16:27:48.000Z","size":6,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-06-24T16:40:27.557Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cdiggins.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-06-24T15:30:52.000Z","updated_at":"2025-06-24T16:27:51.000Z","dependencies_parsed_at":"2025-06-25T14:32:32.898Z","dependency_job_id":null,"html_url":"https://github.com/cdiggins/SoftwareDevEssentials","commit_stats":null,"previous_names":["cdiggins/softwaredevessentials"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/cdiggins/SoftwareDevEssentials","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cdiggins%2FSoftwareDevEssentials","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cdiggins%2FSoftwareDevEssentials/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cdiggins%2FSoftwareDevEssentials/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cdiggins%2FSoftwareDevEssentials/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cdiggins","download_url":"https://codeload.github.com/cdiggins/SoftwareDevEssentials/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cdiggins%2FSoftwareDevEssentials/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262621426,"owners_count":23338660,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-06-29T15:38:14.114Z","updated_at":"2025-10-27T09:51:22.251Z","avatar_url":"https://github.com/cdiggins.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# SoftwareDevEssentials\n\n**An open guide to the essential skills every professional software developer should master.**\n\n## 📌 Why This Exists\n\nToday, 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.\n\nBut 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.\n\nThis isn’t just a challenge for self-taught developers.\n\nEven students pursuing Computer Science degrees often graduate **without exposure to practical software development**, system design, or modern tooling workflows. \nOthers may be experts in one niche but unaware of foundational skills expected in others.\n\n---\n\n## 🎯 Who This Is For\n\n- 🧠 **Self-taught learners** building their own curriculum\n- 🎓 **Students** supplementing university courses\n- 🛠️ **Junior developers** preparing for job interviews or career transitions\n- 🧭 **Career changers** unsure what to focus on next\n- 🧑‍🏫 **Mentors \u0026 educators** looking for a skill checklist\n\n---\n\n## 📚 What's Inside\n\nThis repository is a curated list of **core skills** and **concepts** that every software developer should know to be effective in real-world, professional settings. \nIt’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 \n\n\u003c!--\nTopics include:\n\n- Programming fundamentals\n- Version control and Git workflows\n- Data structures and algorithms\n- Databases and querying\n- System and software design\n- Testing and quality assurance\n- DevOps and deployment basics\n- Communication and teamwork\n- ...and more\n\nEach section includes:\n- ✅ Key concepts\n- 📘 Recommended resources\n- 🔎 Real-world examples\n--\u003e\n\n---\n\n## 🤝 Contributing\n\nThis 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.\n\n---\n\n## 🧭 The Goal\n\nTo 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.\nThis is done by achieving a deep understanding of how things work. \n\n---\n\n**There is no magic in computer programming, but anything is possible.**\n\n---\n\n# Topics:\n\n- Command Line programming\n  - Files\n  - Pipes\n  - Processes\n  - Sockets \n  - Standard In, Standard Out, Standard Error\n  - Command Line Arguments\n  - Environment Variables\n  - Console formatting\n  - Batch file scripting (BASH, ZSH, DOS BAT)\n- Markup Languages\n  - JSON\n  - XML\n  - YAML\n  - HTML\n  - SVG\n  - INI files\n  - LUA\n- Graphics\n  - 2D Graphics\n  - Bitmaps\n  - 3D graphics\n  - MPEG encoding\n- Numerical Representations\n  - Bits and Bytes Operations\n- Floating-point Numbers\n  - How they are represented\n  - Accuracy    \n- Text and Strings\n  - Unicode\n  - ASCII\n- Date Time\n  - Representations\n- Compression\n  - Huffman encoding\n  - RTL \n- Memory Management\n  - Stack\n  - Heap\n  - Alignment\n  - Big-endian / Little-endian\n  - Virtual memory\n  - Cache\n  - Garbage Collection\n  - Memory fragmentation \n- Software Optimization\n  - Profilers\n  - Cache effects\n  - Benchmarking\n  - Dangers of early optimization    \n- Boolean Logic and Algebra\n  - Lambda Calculus\n  - SKI Calculus \n- Software Organization\n  - Source files\n  - Project files\n  - Solution files\n  - Configuration files\n  - Class libraries\n  - Versioning\n  - Packages \n- Operating Systems\n  - File systems     \n  - Virtual memory\n  - Executables\n  - Dynamically linked libraries  \n- Programming Language Survey\n    - Forth\n    - Logo\n    - JavaScript\n    - Python\n    - Scheme\n    - C\n    - Basic\n    - ML\n    - Haskell\n    - C++\n    - Rust\n    - C#\n    - Java\n    - Excel\n- Programming Paradigms\n   - Object-oriented\n   - Prototype-based\n   - Functional\n   - Data-flow\n   - Eager versus Lazy Evaluation\n- Parsing\n  - Regular expressions\n  - Context Free Grammars\n  - Concrete Syntax Tree (aka Parse Trees)\n  - Abstract Syntax Trees \n- Compilers\n  - Lexical Analysis\n  - Syntactic Analysis\n  - Parsers\n  - Byte-code\n  - Optimization techniques\n  - Foreign function interfaces\n  - Calling conventions \n- Computer Architecture\n   - Memory allocators\n   - Assembly code\n   - Bytecode \n - Programming techniques\n    - Structured programming\n    - Event driven\n    - Asynchronous programming\n    - Threads\n    - Reflection \n - Internet Protocols\n    - HTTP\n    - TCP/IP\n    - Web-Sockets\n- Databases\n  - Relational databases\n  - NoSQL database\n  - Graph databases\n- Web-Programming\n  - JavaScript\n  - JQuery\n  - TypeScript\n  - Node.JS\n  - React\n  - Rest APIs\n  - RPC\n  - Postman\n  - Curl\n  - Web-server\n  - CORS\n- Security\n  - Hashing   \n  - Cryptography\n  - PGP\n  - Data management best practices\n  - Hardening\n  - Types of attacks\n- Abstract Data Types and Collections\n  - Arrays\n  - Dynamic Arrays\n  - Stack\n  - Queue\n  - Dequeue\n  - Binary Tree\n  - Linked-List\n  - Doubly Linked-List\n  - K Tree   \n- Algorithmic Complexity (Big O)\n  - Algorithmic Design Techniques\n- Software Engineering Principles\n  - Management\n  - Dependency Injection\n  - Inversion of Control\n  - Don't Repeat Yourself\n  - Reduce Coupling\n  - Encapsulation\n  - Information Hiding\n  - Law of Demeter\n  - Liskov Substitution Principle\n- Graphical User Interface\n  - WinForms\n  - QT\n  - WPF\n  - MVC\n  - MVVM\n  - Spaghetti event code\n  - Terminal UI using Console Codes \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcdiggins%2Fsoftwaredevessentials","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcdiggins%2Fsoftwaredevessentials","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcdiggins%2Fsoftwaredevessentials/lists"}