Programmers are artisans. We are masters of tools... or at least should be.
I see many programmers fail to focus on their tools. The programmer himself is the most important part of the equation right? Well, yes, but that doesn't mean tools cannot amplify his or her abilities.
Even the worlds greatest carpenter will be hampered with substandard tools.
There are a set of common tools that every developer should be familiar with. I am going to focus on C/C++ Unix development but this list is easily translated into other environments.
1. Your editor.
This is where you are going to spend most of your time. On Linux you have a many choices but every developer should know one of Emacs or Vi. I'm an Emacs guy so I won't talk about Vi much, and besides... there is nothing your OS can do that my Emacs can't. :)
Editors are highly sophisticated programs with huge arrays of features. The better you are at running your editor the more time you will save yourself in the long run.
2. Your shell.
Ever time you interact with your OS you are using a shell. A little bit of shell script can save you hours. Currently the most popular Unix shell is Bash. Therefore that's the one we will use. Bash includes a complete programming language which is perfect for automating systems tasks.
3. Your OS.
If you don't know your operating system them you are really just flailing in the dark hoping things will work the way you expect. Knowledge of your operating system will help you work faster and help you understand how your code interacts with the underlying hardware.
4. Your language.
A language is more than just syntax.
In addition to its syntax a language has a system of tools, libraries, patterns, and idioms all designed to work together.
Taking C++ for example:
Tools include compilers, debuggers, profilers, static and dynamic analysis, documentation generators, and editors.
Libraries include the C standard library, C++ standard library, standard template library, and boost to name a few.
For patterns and idioms we have a stack of literature which will help you write code which does things the way other developers expect them to be done. (please refer to Star Trek for an example of communicating in a common language but with no shared idioms)
I firmly believe that no time spent learning these things can be considered wasted. Even a little bit of extra knowledge in one of these areas can often save hours of work.
We are going to walk through linux from scratch which is the quickest and most thorough way I know to learn how the Linux operating system was put together. I'll attempt to run the whole process in a virtual machine so that we don't need to wipe out a disk partition. Hopefully I don't come to regret that decision.
I see many programmers fail to focus on their tools. The programmer himself is the most important part of the equation right? Well, yes, but that doesn't mean tools cannot amplify his or her abilities.
Even the worlds greatest carpenter will be hampered with substandard tools.
There are a set of common tools that every developer should be familiar with. I am going to focus on C/C++ Unix development but this list is easily translated into other environments.
1. Your editor.
This is where you are going to spend most of your time. On Linux you have a many choices but every developer should know one of Emacs or Vi. I'm an Emacs guy so I won't talk about Vi much, and besides... there is nothing your OS can do that my Emacs can't. :)
Editors are highly sophisticated programs with huge arrays of features. The better you are at running your editor the more time you will save yourself in the long run.
2. Your shell.
Ever time you interact with your OS you are using a shell. A little bit of shell script can save you hours. Currently the most popular Unix shell is Bash. Therefore that's the one we will use. Bash includes a complete programming language which is perfect for automating systems tasks.
3. Your OS.
If you don't know your operating system them you are really just flailing in the dark hoping things will work the way you expect. Knowledge of your operating system will help you work faster and help you understand how your code interacts with the underlying hardware.
4. Your language.
A language is more than just syntax.
In addition to its syntax a language has a system of tools, libraries, patterns, and idioms all designed to work together.
Taking C++ for example:
Tools include compilers, debuggers, profilers, static and dynamic analysis, documentation generators, and editors.
Libraries include the C standard library, C++ standard library, standard template library, and boost to name a few.
For patterns and idioms we have a stack of literature which will help you write code which does things the way other developers expect them to be done. (please refer to Star Trek for an example of communicating in a common language but with no shared idioms)
I firmly believe that no time spent learning these things can be considered wasted. Even a little bit of extra knowledge in one of these areas can often save hours of work.
We are going to walk through linux from scratch which is the quickest and most thorough way I know to learn how the Linux operating system was put together. I'll attempt to run the whole process in a virtual machine so that we don't need to wipe out a disk partition. Hopefully I don't come to regret that decision.
Comments
Post a Comment