
On 10/19/10 9:32 AM, Michael Snoyman wrote:
There are 11 skills I'm leaning towards dropping, all because they fall in the too vague/too general category. Your input is requested on these. They are:
Attribute Grammar Categorical Programming Denotational design Proving observational equivalence between Haskell programs
Taking all these together, they seem like they're trying to make more specific what someone means when they say they know "mathematics". Bisimulation, denotational semantics, category theory, and AG are all popular mathematical techniques for writing robust functional programs. Perhaps they should be renamed to be a bit clearer to the uninitiated, but I see no reason to remove them. Perhaps something about domain theory should be added to the list.
Mathematics
Definitely too general IMO. Do we mean analytical mathematics (calculus, analytic geometry,...), discrete mathematics (sets, automata,...), algebraic mathematics (group theory, rings,...), or what? It might be worth having my more specific examples for folks who want to advertise having mathematics degrees, but just "Mathematics" is too vague.
Cabal, packaging, build and distribution tools
This seems like a good one to keep. There's a difference between knowing a language itself, and knowing the ecosystem well enough to be an effective developer in a team setting. This is the kind of skill that employers really like to see, since it distinguishes "hobbyists" from folks who have used the language in a professional setting. For example, I've known Java well enough to write programs in it for a long time. But I've only recently learned how to use Ant, PMD, FindBugs, TestNG, etc. Knowing those latter skills is what makes me a "Java developer"; not knowing the language. Similarly, one could consider knowing C++ vs knowing Boost etc.
UNIX Scripting and Tool Authoring
I think this one absolutely needs to stay. *nix scripting is a whole field of work, even though it's not generally recognized as such. This is what *nix sysadmins do all day (when they're not fighting fires). And it's one of the reasons why current NLP/SMT research is so painful (the lack of people writing the appropriate tools). Half of web development, in practice, often ends up being about this kind of thing too. -- Live well, ~wren