Skip to content

adamluzsi/learn-to-code

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

51 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Learn to Code

In this repository you will see some learning materials about programming, that probably help you begin your journey.

Prologue

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

Foundation

Version control basics

  • What is a version control system, and how does it help software developers?
  • Choosing your first version-control-system (VCS)
  • These companies give you remote repository hosting solutions using git.

Foundations of Programming

  • 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
  • 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.
  • Grasping Visibility

    • Levels of Visibility
      • Private/Protected (Unexported)
      • Public (Exported)
  • Structuring

    • Classes/Structures
      • Methods
    • Singleton Functions

Design

  • Test Driven Development

    • What is TDD
  • Design principle frameworks:

    • Clean Architecture
    • Domain Driven Design
    • Hexagonal Architecture

Philosophy

  • The Unix Philosophy
  • Understanding first the reason why a given programming language was invented helps to understand its design.

About

Learn to Code

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published