# Software Engineering
Software Engineering that one problematic friend of computer science that's comfortable with saying "but somehow it works".
Better yet,
Software engineering is what happens to programming when you add time and other programmers.
# Software Development vs Software Engineering
While software development deals with solving problems by building software, software engineering does it by integrating existing software, often by programming.
Although, most often, both software engineering and software development can be uses interchangeably, because in practice, the difference often gets blurry.
For example, when you build a backend for a website, you neither write the database logic, nor the http communication logic, not even the logic of the web framework that you used. You just integrate all the existing pieces together. So, are you a developer because you "built" a website or are you an engineer because you "integrated" all the existing pieces together? You will get different answers depending on who you ask.
However, the role of a Software Engineer include responsibilities way beyond just integrating software. They are also responsible for designing, deploying, analysing and maintaining software.
# Personal Opinions
# Resources
- Learn how to design systems at scale and prepare for system design interviews https://github.com/karanpratapsingh/system-design
- System Design resources: https://github.com/InterviewReady/system-design-resources
- Software Engineering blogs: https://github.com/sumodirjo/engineering-blogs
- Awesome DB tools: https://github.com/mgramin/awesome-db-tools
- The Architecture of Open Source Applications http://aosabook.org/en/index.html
- Implementing webhooks https://webhooks.fyi/
- https://blog.pragmaticengineer.com/
- https://github.com/Alliedium/awesome-software-engineering
- https://backend.husseinnasser.com/
- https://www.freecodecamp.org/news/software-design/
- https://github.com/DovAmir/awesome-design-patterns
- https://github.com/mehdihadeli/awesome-software-architecture/
- https://github.com/simskij/awesome-software-architecture
- https://blog.pragmaticengineer.com/software-architecture-is-overrated/
- https://www.2ndquadrant.com/en/blog/partitioning-enhancements-in-postgresql-12/
- https://developers.cloudflare.com/
- https://www.worldql.com/posts/2021-08-worldql-scalable-minecraft/
- Architectural Decision Records (ADRs) https://adr.github.io/
- Numbers every Engineer should know: http://brenocon.com/dean_perf.html
- All about emails: https://youtu.be/mrGfahzt-4Q
- I Finally Understand Load Balancing: https://youtu.be/jdRTpslyvP4
- Learn how to design large-scale systems: https://github.com/donnemartin/system-design-primer
- technical communication resources https://github.com/lilin90/awesome-technical-communication
- Google tech talks: https://www.youtube.com/@googletechtalks
- Magic Tricks for Postgres psql: https://www.crunchydata.com/blog/magic-tricks-for-postgres-psql-settings-presets-cho-and-saved-queries
- Decentralized Open-Source Replacement for Cloudflare + Pubnub https://github.com/coinkite/cloudfire
- system design 101: https://github.com/ByteByteGoHq/system-design-101
- Fully-local simulator for Cloudflare Workers: https://github.com/cloudflare/miniflare
# Tools / Frameworks / Libraries
- A library for building fast, reliable and evolvable network services. https://github.com/cloudflare/pingora
Also See: