How to point to a road without knowing the direction?

A development approach usually depends on the idea, doesn't it? Do you have an issue to solve and/or do you have an idea? Do you realize the genuine purpose of the idea to be expressed to the world? Is it possible to express the idea operating the present techniques? Is it possible to reify the idea? Is it possible to apply an expressible story to the idea or is it relatively abstract? Is it possible to shape the idea into a project in its current state? Is it possible to subdivide the project into small enough steps? Is it possible to accomplish the steps in affordable amount of time/resources? If so, let's present the world the idea, and possibly form a whole universe...

Have you considered the language(s) or field(s) you specifically find interesting to discover further? I believe the "domain list" crucially depends on the initial mission and knowledge and a "universal" approach may result in unorganized development due to a non-systematic attitude which, in turn, may or may not lead to more mistakes and/or time requirements.

Personally, I would suggest C++ and C for most of the game development in general, but it really depends on the project and you. What if you will love Haskell, Ruby, or Erlang? C# may be an interesting initial point since it implements many of the C++ features, has a built-in garbage collector, and may appear more available to operate at the very start, yet it is still less supported and flexible than C++ I'd say, hence "unsafe {}".

For example, OpenSSL, Git, Aircrack-ng, John the Ripper, SDL2 etc. are presented in C. If interested, the book I'd recommend for C language learning boost is called "C Programming Language, 2nd Edition by Brian W. Kernighan and Dennis M. Ritchie" (ISBN-13 978-0131103702).

Some might say that a relatively elementary MCU/CPU/ALU/service/logic programming knowledge of more abstract languages/solutions may indeed provide faster results but depends on the approach. Low level fundamentals, general patterns, and organized information base will significantly help disclosing various relatively unexpected pitfalls and solving issues in the process of applying/contributing to works of others, including vendor/community/teammate libraries/frameworks/interfaces/modules. For example, Karnaugh map/Boolean algebra/discrete mathematics may assist in certain logic challenges/circumstances.

Did you find any exact idea/problem which you personally would want to reify/solve? So far, I have noticed that adequate amount of organized practice outstandingly improves the learning curve and advances discoveries!

Let's express it in colors and sounds!

> "A designer knows he has achieved perfection not when there is nothing left to add, but when there is nothing left to take away." - Antoine de Saint-Exupéry

> "The user experience design of a product essentially lies between the intentions of the product and the characteristics of your user." - David Kadavy

> "The greatest thing in this world is not so much where we stand as in what direction we are moving." - Johann wolfgang von Goethe

> "When working with data, I discover what I really want to say" - Damian Mingle

> "That's all data is. A gift from yesterday that you receive today to make tomorrow better" - Jon Acuff

> "We are artists. When we can't find the beauty, we create it." - Adrienne Posey

> "A blank canvas... has unlimited possibilities." - Stephanie Perkins

> "I shut my eyes in order to see." - Paul Gauguin

Related:

https://stackoverflow.com/questions/388242 (The Definitive C++ Book Guide and List...)

https://github.com/AnthonyCalandra/modern-cpp-features (A cheatsheet of modern C++ language and library features...)