HeshamaMohamed / Books-Documentation

Documenting code snippets, and my thoughts on books I read.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Books Documentation

Documentation of my reading journey on technical books. That includes code snippets, and thoughts on them while reading (you can find these in every chapter's README.md).

Currently, I am reading The Road To React ~ by Robin Wieruch.

I will be treating this repo as a personal journal. So I might be keeping some personal updates at the end of the ReadME.

Reading Plan

I will be documenting the books I have read in addition to the books I am planning to read.
The reading order of the books may vary over time according to my needs and vision.
However, suggestions based on my studying objectives are welcome and appreciated.

Books I will read next:

  • The Road to GraphQL
  • Test-Driven Development by Example
  • Test-Driven Development in Ruby
  • The Rails 5 way
  • Clean Code
  • Clean Architecture
  • Designing Data-Intensive Applications
  • Algorithms Unplugged

Books I have read:

  • Well-Grounded Rubyist (Read ✅, Documented ✅)
  • Design Patterns In Ruby (Read ✅, Documented ✅)
  • Practical Object Oriented Design (Read ✅, Documented ✅)
  • Grokking Algorithms (Read ✅, Documented 🔵)
  • Headfirst Object-Oriented Programming (Read ✅, Documented 🔵)
  • Headfirst Design patterns (Read ✅, Documented 🔵)

All kinds of advice are appreciated, feel free to provide me with feedback on anything you think could be improved, thanks :).

Why start this?

I have 4 reasons in mind.

  • I want to practice my writing skills. Hoping that I might turn these reviews/thoughts into blog articles someday.
  • It would serve as documentation for my learning process and reading journey.
  • It might benefit anyone who wants to start reading any of these books.
  • It would be a helpful future reference for me while coding.

My history with books.

Throughout my life, I have read only a few books.
This is something I wanted to change for so long, and finally, I did back then in January 2021.

I started reading technical books. That was when I first started serving in the military (mandatory service).
So, why books? In addition to wanting to read for so long, it was the only learning resource available in the military.

It first seemed like a big limitation for my learning journey. I always favored video content when it comes to learning.
After a while, I saw it as an opportunity rather than a limitation, it was the best time to build a reading habit.
Gladly, it is now my favorite type of resource when it comes to learning a new concept/technology.
And now, I am no longer satisfied with incomplete knowledge or just a shallow understanding of the topics I see important.

I experienced something different from the video courses I used to learn from.
I started to visualize the big picture rather than consume small bites of information with no proper linking between them.
What I loved most were:

  • How they build your knowledge from the bottom up, starting from the root of the problem.
  • How they show various solutions with each's pros and cons to decide on which one fits better.
  • How they propose a problem and its solution in a fitting context.
  • How they link the information together provides you with a deep understanding of the topic.

So, over 14 months (till March 2022) I have been able to read 9 total books. 6 of which are technical and 3 non-technical.
Given the circumstances back then and my new phase with books, I am satisfied with the result as a beginning.
Unfortunately, I couldn't put what I read into practice back then.
However, now that I can do so, I decided to give it a go.

What are my studying objectives, and why does it matter?

Based on this, I'll prioritize/re-arrange my learning/reading plan. This is a broad vision of what I want to do/become.

Before landing my first job, I have been wandering around through all kinds of Software Engineering topics.
Ranging from junior stuff (Basic OOP, SQL, etc.. ), to senior stuff (e.g: System Design, SW architecture, etc...)
It's because I have a wide range of interests and wanted to have a solid grip on everything at the same time.

The downside of this came to light after having my first SWE job. I found that I wasn't getting good enough at any of these. As a Junior Software Engineer, I don't even need all of these "Advanced topics" that I have been wandering through (at least not yet)

I once thought that If I had enough knowledge of advanced topics, it might help me get promoted faster or even skip the early stages.
However, I found out that your responsibilities as SWE are cumulative, you need to build them brick after brick.
Doing otherwise, you'd be like the guy in the gym who always skips leg day and have an unsymmetric body shape.

Only by perfecting my current responsibilities as a junior SWE (e.g: Code quality, learning to listen) I would succeed at the next level.
That's why currently I am only focusing on my current responsibilities as a Junior SWE.

So when it comes to code quality, I want to write the perfect piece of code for the problem at hand.
When it comes to Pull Requests, I want to create the perfect PR that you wouldn't suffer reviewing.
When it comes to communication/teamwork, I want to become someone everybody enjoys working with.
When it comes to mentorship, I want to become someone you'd love to mentor.
And everything else I could improve to be better than I am today.

To achieve all of these I mentioned, I needed to define these objectives and build a study plan based on them.
Although the objectives are mixed with technical/non-technical objectives, I will be documenting only the technical ones for now.

Updates

November 16th 2022

  • Added 2 new books (The Road to React and The Road to GraphQL).
  • Added a studying objectives section.
Updates on the last 3 months:

Three months ago, I landed my first job as a Software engineer. It took a while to get up and running with the new job requirements/stack/etc...
Before starting, I have finished reading "Practical Object-Oriented Design". Since then, I didn't get a chance to continue reading.

The number of new frameworks/tools I got exposed to was overwhelming (e.g: GraphQL/React/Next/Relay/another bunch of libraries)
I had to put in more hours after work to learn them properly. However, with so little time, I had only scratched the surface. Having gotten a steady pace at work now, I can proceed to read books to deepen my knowledge of them.

I haven't been exposed to much JS or front-end technologies before, just some HTML/CSS from 4 years ago.
I can tell it has evolved much with the new frameworks (e.g: React/Vue/etc..) and has become more challenging.
Most importantly, it has become more appealing to people who didn't enjoy resizing/moving/coloring HTML elements (me included).

However, currently, It's neither a pleasant nor satisfying experience. I only know an overview of what these technologies do.
I am facing issues that I am unable to debug efficiently. I have little understanding of the details happening under the hood.

That's why I have got 2 new books about React/GraphQL. Hopefully, they'll deepen my understanding of the tools I am working with.

About

Documenting code snippets, and my thoughts on books I read.


Languages

Language:Ruby 94.4%Language:JavaScript 5.5%Language:HTML 0.1%