Archive

Posts Tagged ‘linkedin’

How Many Tines….

…does a fork have? Hoytee-toytee forks have three, and regular-people forks have four. On a totally different plane of thought, how many tines have you considered taking decisive action on something that really mattered to you but decided not to because of your fear of “what other people (especially the hoytee-toytee dudes with authority over you) would think“? Even worse, how many tines have you not taken action on something important to you, but you didn’t know you remained inert because you weren’t aware of your subconscious tendency to submit to authority? Obviously, you couldn’t count how many tines you did this because  if you weren’t aware, you wouldn’t have any freakin’ idea of when to increment your counter.

It is only by risking our persons from one hour to another that we live at all.”- William James

PAYGO II

June 12, 2010 5 comments

PAYGO stands for “Pay As You Go“. It’s the name of the personal process that I use to create or maintain software. There are five operational states in PAYGO:

  • Design A Little
  • Code A Little
  • Test A Little
  • Document A Little
  • Done For Now

Yes, the fourth state is called “Document A Little“, and it’s a first class citizen in the PAYGO process. Whatever process you use, if some sort of documentation activity is not an integral part of it, then you might be an incomplete and one dimensional engineer, no?

“…documentation is a love letter that you write to your future self.” – Damian Conway

The UML state transition diagram below models the PAYGO states of operation along with the transitions between them. Even though the diagram indicates that the initial entry into the cyclical and iterative PAYGO process lands on the “Design A Little” state of activity, any state can be the point of entry into the process. Once you’re immersed in the process, you don’t kick out into the “Done For Now” state until your first successful product handoff occurs. Here, successful means that the receiver of your work, be it an end user or a tester or another programmer, is happy with the result. How do you know when that is the case? Simply ask the receiver.

Notice the plethora of transition arcs in the diagram (the green ones are intended to annotate feedback learning loops as opposed to sequential forward movements). Any state can transition into any other state and there is no fixed, well defined set of conditions that need to be satisfied before making any state-to-state leap. The process is fully under your control and you freely choose to move from state to state as “God” (for lack of a better word) uses you as an instrument of creation. If clueless STSJ PWCE BMs issue mindless commands from on high like “pens down” and “no more bug fixing, you’re only allowed to write new code“, you fake it as best you can to avoid punishment and you go where your spirit takes you. If you get caught faking it and get fired, then uh….. soothe your conscience by blaming me.

The following quote in “The C++ Programming Language” by mentor-from-afar Bjarne Stroustrup triggered this blog post:

In the early years, there was no C++ paper design; design, documentation, and implementation went on simultaneously. There was no “C++ project” either, or a “C++ design committee.” Throughout, C++ evolved to cope with problems encountered by users and as a result of discussions between my friends, my colleagues, and me. – Bjarne Stroustrup

When I read it on my Nth excursion through the book (you’ve made multiple trips through the BS book  too, no?), it occurred to me that my man Bjarne uses PAYGO too.

Say STFU to all the mindlessly mechanistic processes from highly-credentialed and well-intentioned luminaries like Watts Humphrey’s PSP (because he wants to transform you into an accountant) and your mandated committee corpo process group (because the chances are that the dudes who wrote the process manuals haven’t written software in decades) and the TDD know-it-alls. Embrace what you discover is the best personal development process for you; be it PAYGO or whatever personal process the universe compels you to embrace. Out of curiosity, what process do you use?

If you’re interested in a higher level overview of the personal PAYGO process in the context of other development processes, you can check out this previous post: PAYGO I. And thanks for listening.

Survive And Prosper

The purpose of a living system is to survive and prosper. There are different levels of systems. For example, there’s the organization, the organizational unit, the organizational group, and the organizational worker. Each of these human-composed entities can be considered a System Of Interest (SOI) unto itself and, as the figure below shows, SOIs are nested and connected.

If you believe my BS assertion that the purpose of a SOI is to survive and prosper, then each SOI may (and almost always does) choose to do whatever it can to survive, regardless of the cost to other internally nested and externally coupled systems. Of course, since everything is connected, the actions chosen by one “subsystem” to optimize its survival can (and almost always does) degrade the survival chances of those subsystems nested within it and those systems in which it is nested. For example, if a Bureaucratic Overhead Org Group (BOOG) like “purchasing” puts a boatload of Draconian procedures and forms and approval barriers in place to show how “important” they are, they degrade corpo performance by hindering timely acquisition of external equipment and services needed to get the job done. Schedules slip, which means customers aren’t delighted, and the people in other SOIs think twice about ordering tools that could make them more efficient and happy.

The dysfunction is even worse than you think. When a member of another SOI tries to point out the inefficiency of a BOOG to the so-called BOOG Leader (BOOGL), the auto-defense instinct kicks into high gear. Clever BOOGLs (and they must be clever because they got themselves appointed as a BOOGL in the first place) twist the situation out of whack. The instigator and his/her native SOI are made out to be the cause of inefficiency in the BOOG. This is done, of course, so that the BOOGL and his/her BOOG can survive and prosper. It’s so sad that ya gotta laugh…… LOL!

In Defense Of Incompetence.

When a government contractor is exposed as incompetent by an external observer (e.g. the press or a civilian group), the government agency that hired them almost always comes to its defense. That shouldn’t be surprising to you because those bureaucratic, and thus, mindless agencies:

  • Will do anything to avoid looking incompetent in front of congress for hiring the nin-cum-poops
  • Spend other people’s money (yours and mine) instead of their own – and we’re not talkin pocket change here

In addition, the “esteemed” government watchdog agencies (e.g. SEC and FDA and EPA) responsible for ensuring that contractors don’t perpetuate gargantuan disasters make up all kinds of excuses for not detecting the incompetence before massive stakeholder damage has been manifest (lost money, lost lives, lost livelihoods). They do this, of course, because these dudes don’t want to look incompetently asleep at the wheel either.

The system sux and the exhibited behavior is encrusted in its hierarchical, silo+caste system structure that crushes individual conscience. Expect this behavior to go on and on since complexity and the intertwining of interests and agendas will no doubt keep increasing as the world’s population increases. After all, if we can’t fix it, it ain’t broke.

Play ISTY For Me

June 9, 2010 1 comment

In my experience, the more raw technical knowledge an engineer acquires, the more the tendency for him/her to drift unconsciously into ego-centricity and arrogance. The more specialized the knowledge, the more the arrogance. Having personally overcome this malady to at least some extent, I’m facing a conundrum with a brilliant younger colleague. The conundrum is how to teach the youngster to internalize a sense of humility while trying to remain somewhat humble myself.

Like many academically smart kids with a few years of programming experience under his belt, this kid knows a lot of details about a few topics in software engineering (if it can be called engineering) along with a few details about a bunch of others – especially more abstract subjects like large scale design and architecture. On the topics he has little knowledge of (but just enough to be dangerous), he makes sweeping generalizations that I know aren’t correct based on my long but undistinguished career. However, when I try to gently poke holes in his sweeping generalizations and assertions, he digs in. I then lose my patience and tend to get sucked into the awful, I’m-Smarter-Than-You (ISTY) game. The irony of the situation is that my young friend doesn’t lose patience and he stays “cooler” than I do while  playing ISTY. D’oh! Because of this ability to remain cool, ignorant, and overconfident, he no doubt has the makings of a future bozo-type manager. Alas, I hope he doesn’t choose that path because he is truly a remarkable technical contributor who creates value.

Oh well, life would be boring without challenges (<- that’s bozo-management-speak for “problems”) to overcome.

Categories: miscellaneous Tags: , , ,

Call Tree

Check out the call thicket, oops, I mean call tree, below. From the root main() node, you can deduce that the 26 function program is written in C. Actually, there are several more than 26 functions because a few of the functions in the model call other lower level functions not shown in the figure.

Even though the functions are cloaked in a sequential numbering scheme, they’re not neatly called one right after another. Intertwined between, around, and across the function calls are a bunch of nested if-then and switch-case statements that make the mess more intimidating. Execution path sequencing is controlled by > 20 statically loaded configuration parameters and several dynamically computed control parameters.

I’ve got to transform this beast into an object oriented C++ design and verify that the new design works. Of course, there are no existing unit, integration, or system tests to reuse. Wish me luck!

Categories: C++ Tags: , , ,

How Do You Like It?

Stunningly, I was once (and only once) asked by a manager how I liked my raise. It was stunning because I speculate that cosmic events like this rarely happen. Has it ever happened to you?

I told the manager that I was happy to get a raise at all. I also told him that since it was the same amount as the average company given raise, I perceived that he thought of me as an average employee. He, and no other manager has ever asked me for “raise feedback” again.

Of course, fairness and unfairness are in the eye of the beholder, or, in physicist-speak, the “observer”.

The Meeting Surrogate

How’s this for a new product idea, “The Meeting Surrogate“. It’s a gadget that hooks up to your phone and participates in call-in conference meetings for you – freeing you up to do whatever you’d like. When you power it on and press its “Start BS” button, it intelligently monitors the conversations and strategically voices out words and phrases like “uh huh”, “yes – yes”, “I get it”, “very insightful”, “nice”, “understood”, “got it”, at appropriate times during the yawnfest.

The Meeting Surrogate” is extendable. You could program in catchy new phrases as you think of them when you’re offline. You pre-configure “The Meeting Surrogate” by speaking into it so that it can process and store a replica of the pitch, tone, and inflections of your voice.

Do ya think it would sell to the Dilbert crowd? How much should it cost?

Meetings are a refuge from the dreariness of labor and the loneliness of thinking – Bernard Barush

Past, Present, Future

I can’t remember who said it, but;

Feedback is information given in the present about behavior in the past that can be used to modify behavior in the future.

Just because feedback can be used to modulate future behavior doesn’t mean it actually will be used. Depending on the quality of the relationship between the feedback provider and the feedback receiver, the feedback may be taken to heart or it may be ignored. If the feedback receiver has little respect for the feedback provider, regardless of whether the provider is the receiver’s so-called “superior”, the feedback will be ignored. Oh sure, the receiver’s behavior may appear to superficially change out of fear, but counterproductive behind-the-scenes behavior will be guaranteed if the feedback is delivered as an “or else” ultimatum. On the other hand, if there is a two way connection of respect and trust between provider and receiver, the receiver’s behavior may change – if the receiver agrees with the provider’s assessment and it strikes an emotional chord within the receiver’s being.

Emotional energy, not logical deduction, is the driver of behavior. So stop being puzzled when people don’t behave “logically”.

Categories: miscellaneous Tags: , ,

All My Children

When rearranging the chairs within their stratified and siloed command and control hierarchies fails (and it almost always fails) to improve performance, mechanistically thinking patriarchs often resort to the ubiquitous centralize/decentralize cycle. However, the c/d cycle is also a stone cold loser for improving performance because all it does is spawn mini command and control patriarchies – just like daddy’s. The mindsets of daddy and his sons don’t change, so neither does performance – duh! But hey, at least there’s a lot of action taking place and it looks impressive to outsiders – til the duplication of work and resources is realized and the move back to centralization takes place.