Best resources I have seen so far
"The capacity to learn is a gift; the ability to learn is a skill; the willingness to learn is a choice. "
Hello!
With the numerous resources that're available on the internet, learner in general and software engineer in particular can be overwhelming. The prime consequence that may result from making the wrong decision is time-consuming. In addition, this can lead to missing better opportunities. Because, once you make a choice or a resource to be followed, we're gonna commit to it, and therefore closing the door to the other ones. Therefore, quality resource is considered critical to our well-being. And it's as clear as day that this post is written for helping your decision making.I don't make sure that my list is comprehensive. You can take these resources as reliable reference, because it's curated and evaluated the level of difficulty from my perspective.
The curated list:
Data structure and Algorithms.
Above all, Data structure and Algorithms is highly priority and interesting for beginner. That is the reason why for the most part, the universities choose it for first subject as a nice introduction to the world of computer for freshman. On top of that, It is the most significant factor taken into consideration in interview rounds, even though not widely used in real work. However once having a solid foundation of DS&A, you can easily grasp any working principle of farmework or library. That will facilitate adapting and learning something new by leaps and bounds. And here we go...- Introduction to Algorithms from MIT : It's the most comprehensive and worth DA&A resource. The more understanding you have, the higher your salary is.
- A classic algorithm book: Introduction to Algorithms : Needless to say, it is an algorithm book second to none. I haven't finished it yet, because I use it for fast searching when needed.
- Grokking the Coding Interview: Patterns for Coding Questions from educative.io: One of the best organized pattern for algorithmic interview.
- CSES Problem Set: Another well structural algorithmic questions, but for practicing. And do not hesitate to refer best solution site, if you are struggling with some problems.
Database and relevant factors.
Database is a primary component in an application or whole system. For short, It collects then stores received information and knowledge during lifetime; any developement will be built base on it.- Any courses from your university: It may not be enough to be an expert but a good engineer.
- Database course from carnegie mellon university: : There're many highly rating courses out there, but for me it's the best. It contains advanced content about database theory and system that I can understand. All you need to upgrade your level.
- For any specific database like elasticsearch, redis, etc. I'd like to read the document from its publisher. This is, quite simply, the creator can't be wrong.
Distributed Systems.
Disitributed system is the most interesting and challenging topic for any ambitious developer. And here is mine.- Understanding Distributed Systems: What every developer should know about large distributed applications : It's lean and well-structured. Its latest updates is 2021. Hence, everything is state-of-the-art.
- Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems : It's about database but distributed.
- Distributed Systems from Princeton University: It's worth to learn if you have intention of learning Golang.
General Knowledge.
Computer network and operation system are less crucial than these above for a software engineer. However, they are still main pillars in computer world.- Grokking Computer Networking for Software Engineers from educative.io.
- Operating Systems: Virtualization, Concurrency & Persistence from educative.io.
Others.
There are many classic books that's highly recommended for entry level. However, I find it boring because maybe it isn't attractive to me like above categories.- Clean Code: A Handbook of Agile Software Craftsmanship.
- Head First Design Patterns: A Brain-Friendly Guide.