The goal is to speedup becoming productive in that environment.
where productive =
desigining and implementing pieces of a big application (pieces 1K − 5K LOC, full project (50K LOC))
it implies making atleast ‘not-bad’ design and implementation choices and being able to think with the language/ frameworks with reasonable fluency to propose designs quickly.
giving meaningful feedback to other programmers who are doing similar activity.
i realize that it takes time to get really good at and knowing the internals of the whole stack. Looking for approaches wherein the time to productivity can be reduced.
Okay, I seem to get it. Originally it seemed to me like: “I want to know everything without having to actually understand everything (just give me the most important bits and I will memorize them).”
But now I guess you simply want the information well-ordered, meaning that if you invest e.g. 100 hours of your time into learning, you get the most value anyone could get from 100 hours. Where “value” could mean perhaps: how useful it would be for average programmer’s average task.
Two possible issues:
1) Maybe sometimes specialization provides better results. For example in 20 hours you could learn how to declare variables in 1000 programming languages, or… well, something else, that would be connected with what you already know, and would allow you to do some useful new thing. (Because knowing to declare variables in 1000 programming languages is rather useless.) So you could have different specialization paths. Perhaps too many of them.
Possible real-world examples: Using many programming languages / many frameworks, or becoming good at one or two of them. Learning many different things (algorithms, databases, GUI, networks, cryptography, etc.), or becoming a specialist for e.g. databases (or even e.g. Oracle databases).
2) Maybe it is important to know in advance how much time do want to spend totally. For example, let’s say that knowing an information A can bring you $1000 profit, information B can bring you $500, information C can bring you $200, but a combination of B+C can give you $2000. If you know at the beginning that you will take two lessons, you can take B and C, which gives you $2000. But if you go incrementally, the best choice for the first lesson is A, then the best choice for the second lesson is B, giving you only $1500.
Possible real-world examples: If you want to spend one day or one week learning, just learn Excel. If you want to spend one year, learn Python, or perhaps Java or C#. If you want to spend 10 years, learn mathematics, formal languages, computational complexity, and at the end apply the knowledge to the programming language(s) or your choice. -- In other words: the more time you have, the more meta you can go.
I have seen people starting with PHP, because it provided useful results after ten minutes; only to hear them complaining a few years later than they can’t keep up with all the new PHP frameworks, but they are scared to death from switching to another language. On the other hand, I have seen people who study theoretical computer science for years, but they would have problem to write a simple calculator app—but also they don’t need to, as they make money writing theoretical papers; and they would be able to make the calculator after a 3-days course in one language (and after a single 2-weeks course they could do it in 10 or 20 languages).
The goal is to speedup becoming productive in that environment.
where productive =
desigining and implementing pieces of a big application (pieces 1K − 5K LOC, full project (50K LOC)) it implies making atleast ‘not-bad’ design and implementation choices and being able to think with the language/ frameworks with reasonable fluency to propose designs quickly. giving meaningful feedback to other programmers who are doing similar activity.
i realize that it takes time to get really good at and knowing the internals of the whole stack. Looking for approaches wherein the time to productivity can be reduced.
Okay, I seem to get it. Originally it seemed to me like: “I want to know everything without having to actually understand everything (just give me the most important bits and I will memorize them).”
But now I guess you simply want the information well-ordered, meaning that if you invest e.g. 100 hours of your time into learning, you get the most value anyone could get from 100 hours. Where “value” could mean perhaps: how useful it would be for average programmer’s average task.
Two possible issues:
1) Maybe sometimes specialization provides better results. For example in 20 hours you could learn how to declare variables in 1000 programming languages, or… well, something else, that would be connected with what you already know, and would allow you to do some useful new thing. (Because knowing to declare variables in 1000 programming languages is rather useless.) So you could have different specialization paths. Perhaps too many of them.
Possible real-world examples: Using many programming languages / many frameworks, or becoming good at one or two of them. Learning many different things (algorithms, databases, GUI, networks, cryptography, etc.), or becoming a specialist for e.g. databases (or even e.g. Oracle databases).
2) Maybe it is important to know in advance how much time do want to spend totally. For example, let’s say that knowing an information A can bring you $1000 profit, information B can bring you $500, information C can bring you $200, but a combination of B+C can give you $2000. If you know at the beginning that you will take two lessons, you can take B and C, which gives you $2000. But if you go incrementally, the best choice for the first lesson is A, then the best choice for the second lesson is B, giving you only $1500.
Possible real-world examples: If you want to spend one day or one week learning, just learn Excel. If you want to spend one year, learn Python, or perhaps Java or C#. If you want to spend 10 years, learn mathematics, formal languages, computational complexity, and at the end apply the knowledge to the programming language(s) or your choice. -- In other words: the more time you have, the more meta you can go.
I have seen people starting with PHP, because it provided useful results after ten minutes; only to hear them complaining a few years later than they can’t keep up with all the new PHP frameworks, but they are scared to death from switching to another language. On the other hand, I have seen people who study theoretical computer science for years, but they would have problem to write a simple calculator app—but also they don’t need to, as they make money writing theoretical papers; and they would be able to make the calculator after a 3-days course in one language (and after a single 2-weeks course they could do it in 10 or 20 languages).