Interesting read, especially after On Interviewing and Interview Questions .
I'd like to add not to stare yourself blind on perl (or any other programming language for that matter) to grade yourself. Have a look at for example versioning of software (I recommend subversion), testing (TDD, Test Driven Development), Extreme Programming, Design patterns, Refactoring... These things you can use in any programming language.
| [reply] |
| [reply] |
I'm an apprentice. I simply don't have time to reach the next level in any one programming language, even Perl. Maybe once I get my degree. | [reply] |
That's an interesting way to look at things, and is consistent with what I've read on such topics elsewhere. It brought to mind two things my mentor passed to me; my brothers and sisters here may take them for whatever they deem them to be worth.
There are three levels of understanding: awareness, familiarity, and proficiency.
- Awareness begins when one first learns that something exists. One may then learn a bit about that thing, and even apply some of that knowledge. (In Perl, this would mean, at most, that someone might install a Perl-based tool, edit the config variables, maybe even slightly modify cut-n-paste code/one-liners to suit their purposes)
- Familiarity begins when one first gains the ability to solve simple problems and/or answer simple questions about a topic. Eventually, one can solve any common problem or answer any common question -- though their solutions and answers may be inexact, inefficient, or subtly flawed. (In Perl, this is where I am at: given a problem solvable by computing, I can probably solve it with Perl. Yet my solution will likely not be the best, particularly novel, or elegant. I may do some things without entirely understanding why I do them.)
- Proficiency begins when one can answer the same question/solve the same problem in several different ways, and reaches its epitome when one knows which of the possible answers/solutions is the best for a given case, and why. Proficient individuals may begin to truly expand their area of knowledge. (In Perl, these are the people who debug the interpreter; know without testing which of several approaches is fastest, least fragile, etc.; and are capable of actively improving perl.)
Each problem, and each solution, comes from the three stages of thought: knowledge, understanding, and wisdom. Imagine yourself standing on train tracks:
- Knowledge is the awareness that you are on the train tracks, a train is approaching, there is a cliff to your right, and that this is not a good situation.
- Understanding is the awareness that remaining where you are for much longer will end your life, as will jumping right.
- Wisdom is getting off the tracks as quickly as possible by jumping to the left.
<-radiant.matrix->
Larry Wall is Yoda: there is no try{} (ok, except in Perl6; way to ruin a joke, Larry! ;P)
The Code that can be seen is not the true Code
"In any sufficiently large group of people, most are idiots" - Kaa's Law
| [reply] |