jump to navigation

King-Size November Round-Up November 29, 2007

Posted by ActiveEngine Sensei in Coaching.
Tags:
add a comment

72 pages Training continued at a brisk pace at the ActiveEngine Dojo, with these topics of discussion:
* Kick-off of the Test Driven Development series “Drive-by Specifications” which discuss the implications for the business partners, as well as how to approach building solutions that will allow for changes without imposing costly re-writes.
* Plenty of philosophical discussions surrounding the importance of communication in projects, and why the development community needs to adapt new tactics.

* The adventures of ActiveEngine Sensei and his team attacking the Windows Registry, bad software and other awful processes.

* Brief book review of chess master Josh Waitzkin and his own personal ActiveEngine.

More to come next month. Excelsior!

Clarity of Thought Only Comes From Practice November 21, 2007

Posted by ActiveEngine Sensei in .Net Development, ActiveEngine, Business Processes, Coaching, Personal Development, Problem Solving.
Tags: , , ,
2 comments

All of you code jockeys need to start a new series of mental calisthenics. Your thoughts are blocked, as your set of speech patterns is your worst enemy. If you have used the phrase “I want it to be extensible” in front of you customers this week, shame on you!

The business community is looking to solving problems, but they are not looking to you for help; rather, they want you to just make things work based on what they tell you the software should do. Because of that fact alone you may not be offering the value that will sustain your gigs, period. “Open to extension, but closed to modification” – who cares, because your customer base can’t understand you what you mean.

ActiveEngine Sensei says head over to ProjectManagement411.com, and learn what the business community wants to hear and how to best communicate with them. You should read the series on value selling your projects, because you’ll notice that NONE OF IT MENTIONS THAT MODIFICATIONS TO YOUR BUSINESS LAYER .DLL’s WILL BE CHEAPER BECAUSE YOU USED THE DECORATOR PATTERN!!!! That’s not on their minds, and hearing that from you maybe why they want to ship your job offshore. You need to learn how to measure value through their eyes.

ProjectManagement411 is focused on how the enterprise can become lean, how agility is going to become their ActiveEngine. Don’t let this synergy pass you by. Concepts like Data Stewardship may make you snicker, but that is the way your stay will extended.

It’s Not What You Kenshu November 20, 2007

Posted by ActiveEngine Sensei in ActiveEngine, Coaching, Mythology, Personal Development, Problem Solving.
Tags: , , , ,
add a comment

Steel is forged, not uncovered, and forging steel is a violet process, but the end yields a magnificent tool. An ActiveEngine is not born, it’s made from disciplined process of training, learning, relearning and unlearning.

For those familiar with Bushido, there is a concept of an advanced study called Kenshu. This is a specially designated class where top students are taught to unlearn all bad habits, study the basic fundamentals in such detail that there learning abilities are transformed, enhanced to quickly acquire and adapt new skills at rapid speeds. A Kenshu student is distinguished by their ability to adapt new methods born from new understanding of old habits or from newly discovered techniques. The price to pay for such skills is the ability to endure intensive periods of repetition of movements, recital of rules, and study of martial arts technique.

A sensei is a teacher or mentor who selects and prepare students of Bushido or martial arts and the progenitor of the habits that will one day, hopefully, give rise an ActiveEngine. There is an old saying you do not find a sensei until that sensei has found you. If you want those skills you must be willing to submit to that process of repetition.

Technical teams need to be placed through the rigors of “forging steel”, as the leader is the Sensei who will set their goals, who finds the avenues for growth, and who guides the team members to greater heights of productivity and capability. This is not philosophical farce such as “the sound of one hand clapping”. No, it’s the repetition of basics in attention to quality, or the reflection of things gone right and wrong on a project, and the drive become better. Then repeat, repeat, unlearn bad habits, repeat again.

The older teams members deserve to be honored, as their productivity can be jump-started by including their opinions, relying on their recalcitrance, asking them play the gadfly, or by allowing them to try something new. In the middle of a crisis, and there will be crisis, the older team members will provide balance. When Sensei is not present, hopefully they reflect an image of his teachings, and move others along.

You’ll want all of their minds and efforts focused, and maybe you can build an even bigger, more productive ActiveEngine that is ready for the next challenge.

The Art of Learning November 19, 2007

Posted by ActiveEngine Sensei in Books, Coaching, Personal Development, Uncategorized.
1 comment so far

Hard work, repetition and analysis all comprise the inner workings of an ActiveEngine. There is no better example than Josh Waiztkin, chess Grand Master and martial arts champion. His book, The Art of Learning details his approach to creating the foundation for a learning machine and high performance in the realms of chess and sports.

You’ll find quickly that Josh spends very little time dwelling on talent; rather, it is the time spent on basics and constant analysis of results that has fueled his success, illustrated by the anecdotes of his tournaments. He studies basics in order to internalize them, make them second nature, and recall them when circumstances dictate. This process must be performed countless times to create a fluidity of thought that and link different fields of study together through newly discovered correlations, or in some cases, allowing the subconscious link to the conscious. A great interview can be seen here.
His reflections are shared by cognitive researchers as well. In this Scientific American article the thought and analytical processes used by chess masters are examined and several startling premises are put forth:

  • It takes at least 10 years for prodigies to master their field.
  • Repetition is a key factor for results, as it exercises the ability for chess masters to use “chunking” or quick categorization of data through analogies with their experience.
  • Grand masters do not make more decisions than other players of lower skill. They make different decisions.

Imagine that, less is more. Focus on the right data and ignore the superfluous.

Drive-by Specficiations – Part 1 November 16, 2007

Posted by ActiveEngine Sensei in .Net Development, ActiveEngine, Business Processes, C#, Problem Solving, TDD, Test Driven Development.
Tags: ,
3 comments

Here’s a concept that’s new for the business community. A team will produce a product that meets your goals, but must write programs to test your new program.

Why? That must be more inefficient since you’re doing twice the amount of work. Why can’t you just do what we listed on the specification we gave you? What about all that talk about necessary and sufficient?

Test Driven Development is often mis-understood, and that’s unfortunate as the business community can greatly benefit from this approach to developing software solutions. Yes, there is additional programming required, but think of this effort as validation of a contract, and that contract is the set of criteria that you have given the developers. By following the proscribed approach, the developer will have thought through each facet of the code that leads to the fulfillment of the specification. No other code is written other than that which will fulfill passing a test. This greatly focuses on what is necessary and sufficient as nothing should be concentrated beyond the boundaries of the set of tests. The test are like that piece of paper with stick figures Al and Wu used to communicate to each other.

It must be noted that an advantage here is that when changes are made later on, as they always will be, the tests can be repeated again and it can be quickly determined if the alterations have broken other facets of the program. Luckily the execution of these tests can be automated, for as you can imagine you quickly end up with lots of tests.

Only after all tests are passing then the developer can perform enhancements as the tests will gage whether or not the program still functions as specified. Most programmers forget this part, as the artisan within can often subdue pragmatism, and some, but not all developers, will continue to will continue to develop code that will be used for the future, yet will not have hit the targets of the original specification. The tests will help re-enforce the boundaries. Who? Wu? No who, Wu! No Wu? Right here on the paper you idiot!! Yes, you should really yell like that at the programmers!

Heres a set of criteria, the basis of our program:

Process an increase in commission of sales for each customer:

  • For customers that have been with our product line UltraSlim for 5 years or less, increase by 4%. All other UltraSlim customers increase by 6%.
  • For customers that have been with our product line UltraSmart for 3 years or less, increase by 2.5%. All other UltrSmart customers increase by 3.5%
  • Do not apply a commission for those customers who have been with either product line since 3rd quarter of the current sales year (calendar year based).

Seems like a lot? Consider this, if this is the criteria and the means for communicating you quickly begin moving in concert and hit those sweet spots of productivity. You’ll find that you’ll discover contradictory criteria that you may have supplied, and you’ll both spot errors more quickly. That flow productivity and ideas will become your ActiveEngine for great software creation.

The next part in the series will discuss how these tests are validated, and will be technical in nature but of benefit to the business community, as when done properly they will communicate what the developers are doing with the code.

Key Elements to an ActiveEngine November 16, 2007

Posted by ActiveEngine Sensei in ActiveEngine, Personal Development, Uncategorized.
Tags: , , ,
add a comment

Jean Paul is a developer with extraordinary talent born from hard work, focus, and humility. Here are his ingredients for an ActiveEngine.

Surely you must be joking … November 16, 2007

Posted by ActiveEngine Sensei in .Net Development, ActiveEngine, C#, Problem Solving.
Tags: , , , , ,
add a comment

It takes all types of people to run a corporation, but only certain individuals can tap into the ActiveEngine and put things into overdrive. This post is not about a great new design pattern that solved a problem or fit neatly into a methodology. More time for that in another post.

This is about the onerous task of updating 200 desktop computers with a technology that barely passes for worst practices from 1997. Yep, ten years of garbage code and retarded customizations, compounded by bad design and awful practices, 10 servers to update and 200 desktops to uninstall the old version and update with next version, the operative word being next.

For those not of the techie world, this can be a technician’s nightmare. This complexity is increased when the software manufacturer pretends that they themselves have wisdom greater than the rest of software industry,shun standard practice, and create some unique yet “better” software update process. Processes that can not be controlled, that when followed would result in 200 computers updating automatically at once, and sentencing a corporate network to a speedy death.

Can you see the challenge? The task, create an update process that circumvents the software manufacturers, is automated with measurable outcomes, saves time, and executes successfully. The risk, if you fail the company can’t invoice or collect the next month end close. Oh, and by the way, the sales force uses a pseudo workflow engine based on this mess as well. Better not disappoint that bunch of patient delicate artisans.

A team of heroes was assembled, people who had the strength of will to overcome the repeated failures and obstacles that such a nightmare offered. A team that turned on the ActiveEngine and fought like hell. For the most part, automation of software processes could be accomplished easily enough, but for a software push to operate successfully presupposes that all target desktops are in a state to be updated, and this is where the nightmare truly began. Picture this:

  • 43 desktop computers could not be connected to remotely, meaning that files could not be copied from a central source using automation. So updates had to be processed by a technician logging directly into the machine.
  • 15 desktop computers continued to execute update processes that prevent the crucial update from completing successfully.
  • 27 computes had corrupted Windows Registries, meaning that network administrator ids could not install new or remove old software, period. This could be repaired but the duration of this task took 10 -15 minutes. If the repair process failed the computer could be rendered useless.

This last issue was the deal breaker, as it indicated that a computer was no longer under control. Scary thought. You see, you wouldn’t find out that the Windows registry was corrupted until 2/3 of the install was completed. The figure above was ascertained after the entire set of 200 computers were updated. The prospect of failure heading into this mess was down right terrifying as what was not known could not be known.

Immediately diagnostics were performed on the registry. For non technical folks, this means that files containing more than 120,000 lines of code and security settings had to be examined. On a lucky break the starting point of the issue was ascertained, but this starting point was narrowed down to c. 20,000 lines. More comparisons to functioning registries were attempted, but the problem remained that comparisons were limited to eyeballing lines of registry keys. The support folks groaned, but offered their standard answer of “we’ll have to compare this manually”.

Unacceptable. That’s acquiescing, not thinking.

The heroes researched and found SubinACL, a tool that creates text file of all registry keys and ACL’s for those keys. The problem still existed that there was no way to compare text files from machine to machine. Not until the ActiveEngine kicked in and agile minds woke up, and a process to index the files – assign the same value for the same registry entry across all files – was created. Next, the files were imported into Access where the registry keys could be queried based on their ACL characteristics, eliminating any need for reading lines of registry dumps. 683 culprit lines were identified, 13 of these were unique. A text file with the new ACL’s was created and SubInACL was executed with this file to apply to the security settings for every machine. Yes, one day’s worth of programming eliminated weeks of work. The beauty of the brute force method was that if the settings were already correct, SubInACL would not apply the changes.

The code for this process will be discussed in a later post. It was a quick and dirty, actually really dirty, C# console app. Extensible enough to make quick changes and now subject to a re-write in hopes to create a flexible text file parser that will accept user defined fields that can be applied to the parsing process on the fly.

Hang-Dai Wu, Hang-Dai November 15, 2007

Posted by ActiveEngine Sensei in ActiveEngine, Business Processes, Mythology, Problem Solving.
Tags: , , ,
4 comments

Two groups of people talking past each other, goals missed, frustration abounds. You are lying if you don’t admit that this is common when the business units interface with the technical folks. Are they speaking English? We are but they aren’t. They’re lazy. They don’t get it. How do they get along in society?

This inhibits your strategy. The goal is to win, go home, come back tomorrow and do it even faster the next time, yet with people talking over each other’s heads there is no way you can start to run the race. Pitiful when you think about it.

One of the most memorable scenes from Deadwood involved conversations between slum lord Wu and evil anti-hero Al Swearengen. Neither could understand each other, and gesticulations added to additional confusion so they resorted to cartoon stick figures and and shouting matches until they communicated their meaning to each other. Al and Wu threw out all convention and stuck to what worked because they had no other choice. This clip shows the such a scene. Watch here.

You need to force your teams to do this. You’re all speaking the same language, why can’t you get it together. Start with nothing, don’t accept “You use words I don’t understand”, and win the day with cartoon-ish stick figures telling the story.

An active mind needs this unfettered communication to truly create and execute. Consultants, drop your charts and grab a crayon. When you capture what is necessary and sufficient, then you can unleash all your talents to jump start your ActiveEngine of creativity.

(For those who are interested, the whole can be viewed here. Be warned, the language is foul.)

Plus en chance … November 9, 2007

Posted by ActiveEngine Sensei in ActiveEngine, Business Processes, Problem Solving.
Tags: , ,
add a comment

What is necessary and sufficient to your success? At the end of the day can you truly say you have accomplished what is critical to your success with the appropriate amount of energy? Now place yourself in the shoes of a professional providing a service to an internal customer and think of which goal is greater:

  • Keep them happy” – achieve the recipients goals at the expense of efficiency, maintainability and repeatably (“keep them happy”);
  • Keep them safe” – complete tasks in a manner structured to handle variability.

That’s the balancing act called your day. To complete this framework, compound juggling those goals with time constraints, emotional reticence disguised as rational, cogent arguments, and throw in some in-coherent email chains and a video conference. How do prioritize and get done should be done?

This blog is about keeping an agile active mind by creating an engine that is fueled by ideas, creativity. It’s also about getting things done, and the great opportunity we have technology to do what’s important, repeat that great success over and over, and shut off the background noise. Being smart and working less is really cool, and with the right technology you can produce great things. It’s about creating an Active-Engine because it’s the right thing to do.