My Secret Life as a Spaghetti Coder
home | about | contact | privacy statement
... and back again.

One thing I've noticed about myself fairly recently is that I tend to have trouble at times, mapping theoretical knowledge to practical use, and practical knowledge back to theoretical use. I don't know if "problem" is the right word, as I feel like I still understand in both cases, it just so happens that my understanding is next to that of a reflex in the domain I first learned. I know that makes little sense, so let me provide a couple of examples.

I first learned regular expressions in a theoretical automata context. I understand them really well in that context, almost to a "reflex" capability, where there wouldn't be much thought to coming up with one, or figuring out what strings could be generated from one. But, when I try to put them into practice, I'm not as quick, nor am I as comfortable as I should be with them. This is particularly striking, because from what I can tell, there should be no difference between my theoretical knowledge and practically using it (aside, perhaps for some syntax issues). This has shown up in a couple of instances lately. In particular, one I found funny instance I found was an attribute-value pair. There was a bug in CFEclipse where, when you went to edit a tag in a dialogue, it would not correctly fill out any attribute which had a space in its value. Well, it was simply a problem of splitting on the space, as I recall. So I posted a regular expression I thought would work, but which I couldn't get to do so. It really was simple: one or more spaces, followed by one or more letters, followed by zero or more spaces, an equal sign, more optional space, a quote, then any number of characters, and another quote. (There is a problem there - I didn't take into account escaped quotes and didn't force the outer ones to match, but you get the idea). I think the problem may have been a "forgetting" of how split worked, but I was convinced my regex wasn't working. I still am not sure what the problem was.

In another example, in our data management class we have to write this CSV Database, which at the moment is just a command line utility to select some columns, or select based on a simple condition, or join on a single column. I check that the input matches some expected syntax using regular expressions, and then call the appropriate function for the input. That's good. But, when I parse the input, I'm back to splitting on, say "(" to know where the arguments are (and since I am sure it meets the correct syntax, this is possible). Now, that way works, but it isn't the easiest to know what is going on just by reading the code. It just shows I'm not as comfortable using the regular expressions as I'd like to be.

Finally, I'll leave with a bit about going from practical to theoretical. I first learned about SQL and databases in a practical context - at work. So, in going back to the theoretical, I've been getting confused at selection (which is more like the where clause in your query) and projection (which is the select column clause). I'm not near as confident in that class as I am when dealing with something practical in the database world.

And again, I'm not talking about going from complete incompetence to competence, but more like competence to better than competent. Do you have trouble relating theoretical knowledge to practical, and back again? Any ideas on how you've overcome it? I just keep pushing, until it clicks (which, eventually it always does). But, I'm wondering if anyone has other strategies.

Hey! Why don't you make your life easier and subscribe to the full post or short blurb RSS feed? I'm so confident you'll love my smelly pasta plate wisdom that I'm offering a no-strings-attached, lifetime money back guarantee!

Leave a comment

One way of looking at it is going from unconscious incompetence (can't to it) to conscious competence (can figure it out, but have to think) to unconscious competence (can just do it without thinking). That's the way George Leonard describes it in "Mastery" which is a simple, but neat book if you haven't read it.

I think it just takes time, although I'd also be interested to hear any "acceleration strategies".

Posted by Peter Bell on Feb 25, 2007 at 01:20 PM UTC - 5 hrs

You know, I haven't read the book, but I'm familiar with the concept from the various agile development mailing lists / groups. That is essentially what I was reaching for (but couldn't find the words) when I said "going from complete incompetence to competence, but more like competence to better than competent." Perfect, thanks!

Posted by Sam on Feb 25, 2007 at 02:03 PM UTC - 5 hrs

Leave a comment

Leave this field empty
Your Name
Email (not displayed, more info?)


Subcribe to this comment thread
Remember my details

Picture of me

.NET (19)
AI/Machine Learning (14)
Answers To 100 Interview Questions (10)
Bioinformatics (2)
Business (1)
C and C++ (6)
cfrails (22)
ColdFusion (78)
Customer Relations (15)
Databases (3)
DRY (18)
DSLs (11)
Future Tech (5)
Games (5)
Groovy/Grails (8)
Hardware (1)
IDEs (9)
Java (38)
JavaScript (4)
Linux (2)
Lisp (1)
Mac OS (4)
Management (15)
MediaServerX (1)
Miscellany (76)
OOAD (37)
Productivity (11)
Programming (168)
Programming Quotables (9)
Rails (31)
Ruby (67)
Save Your Job (58)
scriptaGulous (4)
Software Development Process (23)
TDD (41)
TDDing xorblog (6)
Tools (5)
Web Development (8)
Windows (1)
With (1)
YAGNI (10)

Agile Manifesto & Principles
Principles Of OOD
Ruby on Rails

RSS 2.0: Full Post | Short Blurb
Subscribe by email:

Delivered by FeedBurner