In this repository you will see some learning materials about programming, that probably help you begin your journey.
Change and learning go hand in hand. Understanding the mechanics of the brain and adopting effective learning habits significantly boosted my performance. As a child, I struggled with studying, often feeling proficient in one area while lacking in others. The turning point came when I realized the importance of context in learning. Whenever teachers provided contextual information about a subject, it became easier to grasp and remember. In contrast, topics taught without context felt harder to retain.
I've found that Software Engineering can be enjoyable and manageable when tackled incrementally. Starting with the core concepts and building upon them makes the learning journey steady and less daunting. Without this step-by-step approach, the field might seem overwhelming or exclusive to the "naturally gifted." However, if you find yourself struggling, it's likely you've missed some fundamental concepts along the way.
In my view, persistence outweighs talent in this profession. Your interest in reading this affirms your determination. If you need assistance, feel free to reach out; I'm here to help.
Each Section below here will be a reference to a separate file that focus on one topic
-
Cultivating Habits for a Growth-Oriented Mindset
- Embrace vulnerability; seek clarity by asking questions and accelerate your learning speed
- Establish a solid knowledge base before progressing to more advanced concepts
- Overcome your fears
- Fear of the unknown is a natural response, but courage is honed when you challenge these fears.
- Venture outside your comfort zone, even when failure seems probable.
- What is a version control system, and how does it help software developers?
- Choosing your first
version-control-system
(VCS)- the suggested
vcs
to start with isgit
You can find Git basics here
- the suggested
- These companies give you remote repository hosting solutions using git.
-
Selecting Your First Programming Language
- Opt for a general-purpose programming language with a concise specification. For instance, Go is a recommended choice due to its intentional simplicity, which masks complexity without concealing implementation details, thanks to its imperative language nature.
-
Setting Up Your Development Environment
- Install the chosen programming language on your machine.
- Install a code editor:
-
Understanding Control Statements
- Conditional Statements
- if/else
- switch/case
- Loops and Iteration
- for / loop / foreach
- while / until
- break / continue
- Conditional Statements
-
Introduction to the 'goto' Statement
- It's not essential to use, but it's useful to understand the 'goto' statement for when you come across it.
-
Delving into Package Management
- Understanding Packages
- The Rationale Behind Using Third-Party Packages
- Discovering Packages
- The
awesome
collections are usually a great starting point to explore new packages. - Community-driven package distribution platforms.
- The
-
Grasping Visibility
- Levels of Visibility
- Private/Protected (Unexported)
- Public (Exported)
- Levels of Visibility
-
Structuring
- Classes/Structures
- Methods
- Singleton Functions
- Classes/Structures
-
Test Driven Development
- What is TDD
-
Design principle frameworks:
- Clean Architecture
- Domain Driven Design
- Hexagonal Architecture
- The Unix Philosophy
- Understanding first the reason why a given programming language was invented helps to understand its design.