What is the half-life of a programmer’s knowledge? Usually people often say 5 years. In other words, half of what you know about programming will be obsolete in 5 years. A similar sentiment is, "Programming sucks because nothing you knew a few years ago is useful now."
At first glance, this seems reasonable. After all, there are always new programming languages and technologies popping up. However, I think the above view is incorrect. Programming knowledge has a longer useful life than some people realize.
Syntax is not difficult
Start learning a new programming language. For non-programmers, learning Python when you know Java is like learning French when you know English. Of course, programming learning is not exactly like this. There will be new syntax to learn, but this is just a little difficult on the surface. The core concepts of all programming languages are the same.
Writing a program in any language, you will use basic knowledge like types, data structures and logic. If you already know Boolean functions, integers, floating point numbers, and strings, these types will be used similarly in the new language. Of course, data structures like lists, sets, dictionaries, and directory trees are the same, and the logic you use will also be arithmetic operations, if statements, loops, function calls, etc.
In addition, key skills such as which algorithm to use, how to decompose the problem, and the naming of variables and functions can be directly applied in the new language. These are common programming knowledge in various programming languages. To borrow a term from "No Silver Bullet": "The syntax of a language is incidental knowledge, but how to program is crucial knowledge."
The same goes for libraries and tools. Even if you have no idea how regular expressions are used in the new language, you know what they most likely support. It's not hard to find the knowledge about how to use them, it's the use of them that's hard, and that's the valuable knowledge. The same is true for tools like IDEs. You may not know the details, but you know what they can do.
So learning a new language is not a big deal, but if you change jobs, you may still have a lot to learn. I divide knowledge into the following 3 dimensions:
Three dimensions of knowledge
Programming: Knowledge at this level is programming languages, paradigms, technologies and tools. Like I said above, even though details like syntax may be completely different, a lot of the core concepts are the same across programming languages.
Domain: This is what you know about the environment used in programming. For example, if you work in telecommunications, it's about how various protocols work, how text messages are processed, how billing and monitoring are done, and so on. The longer you work in a department, the more you know about it and the greater your contribution is likely to be.
Code base: This depends on the company. When you've been at a company for a long time, you understand your programming style: you understand what gets done, what parts are tricky and unintuitive, why something is done in a certain way, The whole process of doing it in different ways and so on.
Live and learn
As a programmer, you are most valuable when your knowledge in the above three dimensions is sound. If you change jobs at this time, it is inevitable that you will know nothing about the new code base at the beginning, and you will have to start working and learning seriously.
However, even after you change jobs, the programming and domain knowledge you learned will still be useful. Knowing several programming languages will give you more reference points and let you understand how things are done in different ways (even if the basic principles are the same). Generally speaking, it is also good to read more good books on software development.
Finally, I think part of what makes software development fun and exciting is that there's always something new to learn. You'll never get bored, so keep learning. Most of what you learn will just make you a better programmer, even though new programming languages are being invented every year.
Receive LAMP Brothers’ original PHP video tutorial CD/"Essential PHP in Detail" for free. For details, please contact the official customer service:
http://www.lampbrother.net
|