The Best way to Learn Computer Science
I've been a computer science student for nearly seven years now, engaging with various aspects of the field. This includes working on web applications, mobile applications, infrastructures, and product management. I won't deny it hasn't been easy, but over time, I've found ways to make things smoother and more manageable.
Learn the basics
Yes, I get it. However, establishing a solid foundation is crucial—it's one of the most important steps you can take. It’s easier said than done, so how can we learn basics in the “best” way?
In my experience, experimenting more worked well. It might vary from person to person, but I recommend trying more experimenting, writing, reading, or diagramming methods.
Choose a good starter project
After grasping the basics and gaining confidence, it’s time to explore project ideas. As an example, let’s consider using C++ for our learning journey.
In our first project, we aim to learn orchestrating by managing a system. Consider Tic-tac-toe as a good starting point—a solid system. But remember, choose a project open to new features; this openness is essential for mastering advanced orchestrating skills.
Once we pick our project, we start coding from the basics. We add new features and, as we go, we make them better and more efficient. For example, let's make Tic-tac-toe even more interesting by adding an undo/redo feature.
Add, Analyze, Advance
The second step of our learning process is “Enforcement”, we will repeat this step until we no longer can.
- Add new features: If we’re confident with the Developer Experience (DX).
- Analyze architecture: If the Developer Experience needs improvement, we delve into the architecture's pain points.
- Advance the project: Post-analysis, we incrementally progress the project.
If we sense there's no room for improvement at this stage, it's a signal that it's time for a new project.
Complete Example
Let’s pick a C++ project of ConnectFour. But why ConnectFour?
It’s a good project for two reasons; Observability and open-for-feature. Observability helps us to work on a small scale while contributing to the big “picture”.
For example, while we develop the main gameplay, we are also developing the main foundation for complex features, those features might be a scoring system, undo/redo or load from previous game, etc.
2
Bekir Gülestan
2 Comments
Here it goes the first really written article
It's very perfect writing.