The UI/CI/CC/UC Path

All of these acronyms stand for the

"Unconscious Incompetence > Conscious Incompetence > Conscious  Competence > Unconscious Competence"

path. All this started with a discussion on a mailing list about Agile Modeling some time ago. People like most of the ones I read from on that list are at the Unconscious Competence level and are exploring the limits. Hence they tend to be "pragmatic"... (e.g. Scott is telling us to be agile and piles every possible diagram, writes a long thing about O/R mapping, can use ERWin for DB refactoring etc). So, a supersmart, well rounded, efficient approach is fine for those who have already achieved Unconscious Competence. But for those people that still need to make the transition between Conscious Incompetence and Conscious Competence, clear definitions and separations of concerns are needed to aid them in making through this step. Yes, but... how to be pragmatic if you are unsure about the underlying foundation ? What about understanding the subject matter to a sufficient extent so that you can make educated decisions and then bend whatever rule you want because it's the pragmatic thing to do ? Maybe this is what most agile practicioners do... As for the quote, it's not a quote as such, it's related to the NLP (for Neuro Linguistic Progamming) ideas that my wife practices (and me too by the way). There is also a relationship with creativity workshops I followed in the past. My wife is working on how to apply stragies that work, how to model behavior. Her scope is on how to teach kids about strategies that work. She's pretty good at that. So, when we model successful people, we find that they have strategies that work and if we apply them, it will work for us too (usually it boils down to working consistently in a smart way and having a good network, along with ongoing marketing, but it helps having some clues on the details ūüėČ ). In that respect, when we learn something, there are *always* those 4 stages present. This is also linked to what I call the valley of dispair:
The Dip or "Valley of Despair"

The Dip or "Valley of Despair"

When someone moves to the conscious incompetence level, a whole new field of knowledge opens and it is usually pretty frightening. The time it will take to master the field is unknown and this generates great stress. This challenges the homeostatis of the being. So, there is a tendency to step back and stay off the new field (easier to avoid pain than to work towards gaining pleasure). Add to this the external environment where people who are still at the unconscious incompetence level always try to drag that someone back to them... Furthemore, learning the new skill takes energy and is usually less effective than doing things the way they always have been done in the organization (at that moment, the individual is experiencing the dispair, doubt about the new way is experienced etc). No wonder that it's difficult to decide to learn for good despite those calls. From there, several strategies are available : 1) keep on pushing like mad ("I'll do it, I'll do it, ... whatever it takes) This usually leads the individual to burn out and shoot the messenger kind of reaction towards the person. The person cannot stand staying on a plateau level for too long and call quits. 2) jump to another topic constantly This way, the conscious competence level may sometimes be reached by luck but usually leading to a dillettante style. Knows a bit about everything, brags, talks all the time etc. No quantum leap in personal performance. 3) decide to be intrinsically motivated and walk the talk on real problems, enhancing the practice believing that the time will come without becoming a bigot of the practice. Conscious competence builds up and at one moment, the person realizes that a jump to inconscious competence happened. (Without noticing, usually opening new perspectives). As an additional tought, when knowledge increases, it's like the radius of a circle. And the unknowns increases like 2 * PI * R ... The more one knows, the more unknowns there are. But, the person becomes much more sensitive on a lot of subjects. As a sample case, look at the career of Peter Coad where he started on design [handbook], moved to more conceptual things [archetypes], worked with a vision [together], and then know works as a strategist  (environment=design, beliefs=vision, transcending|identity=strategy). [He's one of my role models on the software envisioning front (well, as is Ivar Jacobson , as is Jim Rumbaugh whose OMT is the first method I used to move away from messy arrows and boxes, and Grady Booch with the "Managing the OO project" book).] I guess that this is a natural path to what some call "enlightment". Maybe can we reach some kind of it through software engineering or "architecture" of systems (like 4+1, form & function as I do see in some talks). One of the rules of NLP is that the mind and body are a cybernetic  system (which is also function and form). In my courses, I find myself more and more talking about beliefs and what would be the business case for UML (benefits vs costs). This makes very interesting talks. This may be a consequence of the unconscious competence mode... starting bending the rules and asking questions, pushing the boundaries, understanding the trade offs and beliefs that were in the minds of the creators.

Helpdesk – accurate reality check

Done in 2001, still very accurate today!

YouTube Video: Failure, the key to success

Look at this for some inspiration: As Alan Weiss would put it, if you are not failing, you are not trying.

Fun with requirements from Borland

They may have quite bad tools but they can make a fun video about requirements engineering. Also cool: Let's get ROFL:

On API Design from Google

I always have had a great interest in how to design a proper API. This is not only code-related. The issues at hand are really linked to how to express things clearly, concisely, and with purpose. At Google (and Microsoft for that matter), there is really a great amount of insights available. Check this video on API design: Google Video has the most insane amount of videos on these subjects. And still, I see a ton of crappy designs that seem to follow no rule at all, as they would have been designed by monkeys typing random characters (by that, meaning, no modularity nor responsibiliy concept showing up, tearing objects apart just to reassemble them after). Thanks God, there are places where people know the craft. Also, if you want more Josh Bloch (this guy is a true genius on Java), check out this (ok, this is getting hardcore):

For having fun when using #tunify with friends: lyrics

I am using Tunify a lot these days. Finding new use cases all the time. Terrific product. I would love gating Tunify with Lyrics.com or MusicBrainz. Here is what you can get from lyrics.com:

Ame Caleen widget by 6L & Daxii