I'm pretty sure somewhere sometime someone has examined this topic in more depth and breath and volume than I attempted to (in a personal way) or ever could attempt to touch on. Eg your's best friend (besides google) wikipedia, IEEE's SWEBOK (http://www.swebok.org/), or numerical books.
But as I discovered that the most efficient of learning is to learn from others who could pass on digested information (ie: improved signal/noise ratio and demonstrated way of reasoning), I decided to put them down anyway: there might be someone who finds it useful, if any.
Neverthelessly, in a personal way, I value those bullets of topics (not intended to be elaborated) as an important asset to own if you know them and are using them, or to acquire if you are not familiar with, for being a long-term training roadmap (self-training, most of time :p), on the backdrop of either if you would just like to stay afloat in the software field or grow from inexperienced software engineer to master mind of crafting something pragmatic yet beautiful, without any prejudice, always considering software a serious engineering activity. I repeat, software is a serious engineering activity.
Skillsets are always composed of hard ones and soft ones. Depending on your personality, you would learn the hard skill easy way and learn the soft ones hard way, or vice versa. But, one thing is always true, they are two sides of a coin, the probability of requiring them at certain point of time along the path of growing pain is the same as if you toss a normal coin. Therefore, it is probably wise to find them, groom them before they find you. :)
You won't find the battling camp of windows or unix, c# or java, vim or emacs, firefox or IE, after all, they are the tools to build things upon, the knifes to cut things apart. There is such a known story...(sidetrack, best appreciated with the beautiful Chinese language :p. "记得梁羽生先生笔下有一位正邪兼修的高手,名曰“乔北溟”,一次此人与大侠张丹枫在一个庙中相遇,乔北溟随手操起香案上的香炉,张丹枫问他:“你的家伙称手吗?” ,乔北溟笑答:“以吾辈之见识,还在意手中之物是否为剑?”,张丹枫一愣,心中暗念,此人果然不同凡响……" -- from <<十年MFC经历认识的Microsoft技术>>)
Back to the main topic (after an Odyssey trip to the invincible)
I prefered to split the skillsets into the following categories.
(1) Joy of Cooking, or Tools of Trade
(2) Design Essential, or Art of War
(3) Construction Essential, or Tactics of Swordfighting
(4) Engineering of Software, or Management of Imprecise Engineering
(5) Advanced Engineering Topics, or We Are Engineers After All
(6) Art, or Rather Philosophy
The first part is Joy of Cooking, or Tools of Trade.
Text Manipluation
text editing (vi, vim, emacs etc)
text transformation
code generation
Regular Expression (power of search)
grep, find
"Uniquitous" Automation with Scripting
Windows Shell (including VBScript)
Unix Shell
Portable Scripts
JavaScript? (a regular expression engine is available)
Perl (classic regular expression engine)
Python, Ruby (fast prototyping)
Source Code Version Control
Discipline against changes
"More Keyboard Shortcut, Less Mouse"
Time Management and Priority Setting
<to be continued>
Posted
Nov 21 2006, 05:03 PM
by
blackinkbottle