<?xml version="1.0" encoding="utf-8"?>
<feed xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xml:lang="en-us" xmlns="http://www.w3.org/2005/Atom">
  <title>MissedMemo.com</title>
  <link rel="alternate" type="text/html" href="http://missedmemo.com/blog/" />
  <link rel="self" href="http://missedmemo.com/blog/SyndicationService.asmx/GetAtom" />
  <icon>favicon.ico</icon>
  <updated>2010-02-20T22:08:15.5581685-08:00</updated>
  <author>
    <name>MissedMemo.com</name>
  </author>
  <subtitle>- Andy L., intrepid software engineer</subtitle>
  <id>http://missedmemo.com/blog/</id>
  <generator uri="http://www.dasblog.net" version="1.9.7174.0">DasBlog</generator>
  <entry>
    <title>Agile Won't Just Sell Itself</title>
    <link rel="alternate" type="text/html" href="http://MissedMemo.com/blog/2010/02/21/AgileWontJustSellItself.aspx" />
    <id>http://missedmemo.com/blog/PermaLink,guid,715ff197-35b4-4986-90f1-b51b9e1f02be.aspx</id>
    <published>2010-02-20T17:22:14.934-08:00</published>
    <updated>2010-02-20T22:08:15.5581685-08:00</updated>
    <category term="Agile" label="Agile" scheme="http://missedmemo.com/blog/CategoryView,category,Agile.aspx" />
    <category term="Dev. Process" label="Dev. Process" scheme="http://missedmemo.com/blog/CategoryView,category,Dev.%2BProcess.aspx" />
    <category term="Management" label="Management" scheme="http://missedmemo.com/blog/CategoryView,category,Management.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
One thing that kind of bothered me in my recent CSM training course was a consultant's
comment that he didn't feel any need to try to "sell" Scrum to resistant management,
implying that, if they didn't buy into it, it was their loss -- but winning over management
is almost certainly a big part of what developers in that organization are expecting
a consultant to HELP THEM WITH!
</p>
        <p>
Just as management needs some level of developer "buy-in" for a project to have any
chance of success, anyone hoping to transition a traditional organization to Agile
needs to be able to SELL the concept, in terms a traditional business manager can
understand. "Just trust us" is the arrogant Agile counterpart to management's "Just
do it" -- and about as effective.
</p>
        <p>
Agile is a TOUGH SELL! You're asking what may be a whole STACK of non-programming
middle managers to abandon established practices, to override PMP-influenced resistance
(which may finally be diminishing, now that the Project Management Institute has begun
to <a href="http://agile-pm.pbworks.com/"><u>take an interest in Agile</u></a>), to
buy into subversive concepts like "self-organizing teams", based on rationale they
typically don't have the first-hand development experience to understand... knowing
that if it all goes wrong, THEY'RE the ones who'll be held accountable.
</p>
        <p>
Emphasizing Agile's ability to deliver better quality software, much faster, using
fewer resources (better, faster, cheaper) is critical to convincing management to
at least give Agile a TRY, but avoiding an outcome that permanently DISCREDITS Agile
requires knowing where you can compromise the "purity" of your model, while holding
the line on items necessary for Agile to actually produce benefits. Setting up a system
of code review and mentoring, to ensure code is kept clean, maintainable, and extensible,
is more important than insisting a large team of developers with poor dev. skills
write sloppy unit tests to support their convoluted code. Generating some amount of
unecessary documentation is preferrable to having your product fail a customer audit,
or to have your project remain unfunded by corporate managers who don't buy into your
"trust us" argument.
</p>
        <p>
To offer reassurance and manage expectations, you'll need to provide justification
for the changes that will need to take place, be able to offer credible alternatives
to traditional methods of maintaining accountability, and openly acknowledge potential
areas of conflict (for example, Agile organizations typically require a smaller number
of more highly-skilled developers, which may eventually lead to issues of what to
do with long-time employees who are under-performing in a department which is over-staffed,
under the new standard).
</p>
        <p>
By choosing your battles, and focusing on a few key issues like obsessive attention
to code quality, replacing <a href="http://blog.scottbellware.com/2009/07/problem-with-big-design-up-front-is-big.html"><u>Big
Design Up-Front</u></a> with a commitment to iterative "refinement" of an initial
outline spec., sqeezing in at least SOME amount of regular customer proxy feeback
(usually from a busy marketing rep. who doesn't understand why you can't just go off
and build the entire app. as specified), limiting the number of items under development
to force developers out of their silos and encourage them to collaborate, holding
regular informal reviews to try to improve the dev. process based on observed results...
you are surreptitiously "infecting" the organization with traces of Agile, so you
can break down resistance and eventually take over the host. 
</p>
        <p>
Don't make the mistake of the last organization I was in, where we managed to get
buy-in on adopting specific Agile PRACTICES (continuous integration, unit testing...),
but failed utterly to get commitment to the more important Agile PRINCIPLES. Management
still insisted that we begin a three year project by dividing all work into "tasks",
which were distributed to 15+ developers in two globally-distributed teams to "estimate",
despite the fact that only three of us had significant first-hand experience with
the technologies we would be using, and many developers suffered from questionable
coding skills... with disasterous results.
</p>
        <p>
Kanban is interesting here again, because it seems better able to overcome initial
management and developer resistence, by requiring only very minor changes to ANY existing
development process (including waterfall), with teams reportedly adopting more and
more agile techniques naturally, over the course of the project, as productivity improvements
become obvious to everyone involved.
</p>
        <img width="0" height="0" src="http://missedmemo.com/blog/aggbug.ashx?id=715ff197-35b4-4986-90f1-b51b9e1f02be" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Agile Fundamentalism</title>
    <link rel="alternate" type="text/html" href="http://MissedMemo.com/blog/2010/02/14/AgileFundamentalism.aspx" />
    <id>http://missedmemo.com/blog/PermaLink,guid,f5aa5b89-9037-453d-a480-844e4612ba11.aspx</id>
    <published>2010-02-14T00:01:15.771-08:00</published>
    <updated>2010-02-14T20:57:55.921725-08:00</updated>
    <category term="Agile" label="Agile" scheme="http://missedmemo.com/blog/CategoryView,category,Agile.aspx" />
    <category term="Dev. Process" label="Dev. Process" scheme="http://missedmemo.com/blog/CategoryView,category,Dev.%2BProcess.aspx" />
    <category term="Management" label="Management" scheme="http://missedmemo.com/blog/CategoryView,category,Management.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <blockquote dir="ltr" style="MARGIN-RIGHT: 0px">
          <em>"The (Pirate's Code) is more
what you'd call 'guidelines' than actual rules."</em>
          <br />
          <br />
          <p>
- Captain Barbossa, Agile pragmatist, <u>Pirates of the Carribean</u>, 2003
</p>
        </blockquote>
        <br />
        <br />
        <p>
One of the more confusing aspects of Scrum for me has been the fact that "adapting"
Scrum to fit your team's specific circumstances is always encouraged... but doing
something like applying the "Kanban" technique to Scrum upsets many traditionalists.
</p>
        <blockquote dir="ltr" style="MARGIN-RIGHT: 0px">
          <em> "The surprising thing for me
is that many smart Agile people - people I know to be intelligent insightful people
- seem bugged by Kanban... I'm seeing Agile people behave as strangely about Kanban
as traditional process folks behaved about Agile. They seem threatened." </em> -- <a href="http://agileproductdesign.com/blog/2009/kanban_over_simplified.html"><u>Jeff
Patton</u></a></blockquote>
        <p>
I've had a hard time getting some Scrum fundamentalists to even DISCUSS why they feel
certain parts of Scrum should be "off limits" to change -- a strange idea, considering
that Scrum, as it is typically applied today, is already very different from the way
it was originally described. This seems inconsistent with Agile principles that encourage
change based on continued analysis and experimentation, especially since the majority
of people applying Kanban seem to be experienced Scrum practitioners, who report great
success with this <a href="http://www.infoq.com/minibooks/kanban-scrum-minibook"><u>Scrum
+ Kanban approach</u></a> in solving real-world issues that their teams struggled
with under "straight" Scrum.
</p>
        <p>
There is a subculture of agilists who seem to promote an "all or nothing", "enlightened
vs. heathen" attitude, reflected in statements along the lines of "if you're not doing
X, Y, and Z (or if you try to add Q), you're doing it wrong and you're not Agile".
Many senior Agile dev. community members have explicitly spoken out against this,
as counter-productive and just plain wrong. Kent Beck included an apology in the preface
to the second edition of his book, <u>Extreme Programming Explained</u>, specifically
to try to address this for the XP community, and published works by other industry
thought leaders including Mary Poppendieck, Alan Shalloway etc. have made similar
points. IBM has pushed for ALL its developers to adopt SOME form of agile, while explicitly
REJECTING the idea that you need to follow any specific set of practices or methodology.
</p>
        <blockquote dir="ltr" style="MARGIN-RIGHT: 0px">
          <em>
            <a href="http://www.infoq.com/presentations/dancing-agile-elephant">
              <u>The
Dancing Agile Elephant: IBM Software Group's Transition to Lean and Agile Development</u>
            </a>
          </em>
        </blockquote>
        <p>
Having worked both in highly-productive start up environments, and some amazingly
dysfunctional corporate beauracracies, I'm an absolute supporter of developing software
in a way that's consistent with <a href="http://www.agilemanifesto.org/principles.html"><u>Agile
PRINCIPLES</u></a>, and it is frustrating to think, after finally convincing your
corporate management to take a serious look at what Agile has to offer, they'll encounter
a discussion space filled with a mixture of hippie-dippy idealism and bickering that's
likely just to make them roll their eyes and dismiss the topic out-of-hand.
</p>
        <img width="0" height="0" src="http://missedmemo.com/blog/aggbug.ashx?id=f5aa5b89-9037-453d-a480-844e4612ba11" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Certifiable!</title>
    <link rel="alternate" type="text/html" href="http://MissedMemo.com/blog/2010/02/10/Certifiable.aspx" />
    <id>http://missedmemo.com/blog/PermaLink,guid,fb13bea8-0ec5-4eda-8169-885cafca33c6.aspx</id>
    <published>2010-02-10T15:18:32.474-08:00</published>
    <updated>2010-02-14T21:34:31.8031838-08:00</updated>
    <category term="Agile" label="Agile" scheme="http://missedmemo.com/blog/CategoryView,category,Agile.aspx" />
    <category term="Dev. Process" label="Dev. Process" scheme="http://missedmemo.com/blog/CategoryView,category,Dev.%2BProcess.aspx" />
    <category term="Management" label="Management" scheme="http://missedmemo.com/blog/CategoryView,category,Management.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <blockquote dir="ltr" style="MARGIN-RIGHT: 0px">
          <em>"Badges? We don't need no stinkin'
badges!"</em> - <u>Blazing Saddles</u>, 1974 </blockquote>
        <br />
        <br />
        <p>
I became a "Microsoft Certified Professional" (MCP) for .Net back in '03, got my MCP
for WPF last summer, and just picked up a Certified ScrumMaster (CSM) badge, all of
which means... SQUAT!
</p>
        <p>
Any experienced developer can tell you an MCP certificate (or a CS degree) says absolutely
NOTHING about whether someone can actually write production quality code or help a
company ship products, and there's been some criticism over the way the term "Certified
ScrumMaster" is sometimes promoted and abused. For the record, a Microsoft certification
essentially proves you can memorize API trivia out of a study guide, and a CSM certification
just says you've had two days of classroom exposure to the basic concepts of Scrum.
</p>
        <p>
Of course, there's a LITTLE more to it than that. A Microsoft certification guarantees
baseline familiarity with the recommended way to handle common Windows dev. tasks,
and a CSM badge guarantees exposure to fundamental Agile concepts, along with a general
idea of how to apply them, and obviously indicates a commitment to helping to refine
a company's development process. When interviewing new hire candidates at my last
three companies, I always asked about certification as evidence of some level of "devotion
to craft", beyond simply working on "assigned features", but I was always more impressed
if the candidate was familiar with notable developer community authors, or attended
local dev. events.
</p>
        <p>
From the job candidate perspective, certification is most useful in helping get past
HR and other non-programming middle manager filters. From management's perspective,
the risk in being overly impressed by a Microsoft certification is alot less than
the risk of turning an inexperienced CSM loose on your enterprise organization's development
process for your mission critical software. CSM training and resources often have
a kind of naive idealism to them ("Let's play a game to illustrate collaboration!"),
and I think a CSM who hasn't personally experienced harsh corporate realities is in
danger of having management and technical staff quickly flip the "<a href="http://en.wikipedia.org/wiki/Bozo_bit"><u>Bozo
Bit</u></a>" on them. For example, there's a HUGE difference in promoting "self-organizing
teams" in an environment of top-notch, experienced, highly-motivated developers, versus
in a bloated, complacent, corporate development environment.
</p>
        <p>
I've been keeping up with Agile practices and approaches since the late '90's, and
I'm currently most impressed by approaches that combine Scrum and Kanban, as described
in Henrik Kniberg's newly-published "<a href="http://www.infoq.com/minibooks/kanban-scrum-minibook"><u>Kanban
and Scrum, Making The Most of Both</u></a>". The book is succinct and the clearest
explanation I've come accross, of what all this "Kanban" stuff is that everyone keeps
talking about, and how it relates to Scrum
</p>
        <br />
        <p>
          <strong>Update (2/13): </strong>Scrum co-creator Ken Schwaber recently parted ways
with the Scrum Alliance, and started <a href="www.scrum.org"><u>Scrum.org</u></a> to
offer more rigorous developer training. 
</p>
        <img width="0" height="0" src="http://missedmemo.com/blog/aggbug.ashx?id=fb13bea8-0ec5-4eda-8169-885cafca33c6" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Social Butterfly</title>
    <link rel="alternate" type="text/html" href="http://MissedMemo.com/blog/2009/02/27/SocialButterfly.aspx" />
    <id>http://missedmemo.com/blog/PermaLink,guid,41647ead-d15c-4f9a-92de-ecebdc49112b.aspx</id>
    <published>2009-02-26T19:42:40.23-08:00</published>
    <updated>2009-02-26T20:26:04.4008109-08:00</updated>
    <category term="About Me" label="About Me" scheme="http://missedmemo.com/blog/CategoryView,category,About%2BMe.aspx" />
    <category term="Dev. Process" label="Dev. Process" scheme="http://missedmemo.com/blog/CategoryView,category,Dev.%2BProcess.aspx" />
    <category term="Dev. Technologies" label="Dev. Technologies" scheme="http://missedmemo.com/blog/CategoryView,category,Dev.%2BTechnologies.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
It's been a very interesting couple of weeks...
</p>
        <p>
I attended the local .Net User's Group "Education Day" event covering the Model-View-ViewModel
architecture pattern, presented by Microsoft's WPF Program Manager, Karl Shifflet,
and Jamie Rodriguez .  Karl missed our breakfast meeting, but we arranged to
talk on the phone, and he apparently thought enough of my e-mail summarizing
some of the issues to forward it to HIS boss.  Microsoft dev. evangelist Bruno
Terkaly has also forwarded some of my feedback on various topics, and we joked
that I'd end up on some kind of internal list of "trouble makers" at Microsoft
(I listen for the black helicoptors at night...).
</p>
        <p>
My e-mail included the following: "<em><font color="#0000ff">Looking at forums and
sites like StackOverflow.com and listening to questions at the end of presentations,
you'll keep hearing confused developers asking "Do I need to learn Blend?"  "For data
access, are we supposed to use ADO.Net, or DAAB, or Linq to SQL (and is that now deprecated),
or Entity Framework (and what about the posted 'vote of no-confidence')...?" 
"Are we supposed to REJECT the WPF architecture encouraged by VStudio in order
to insert some MVPoo mini-framework?"  "Should we use MVPoo version A, B, C,
or go with Prism?" etc. etc. etc.   Microsoft reps seem to treat
these as trivial concerns because they are each focused on their own specific
area of technology, not considering that a dev. team on an actual project is in the
position of having to essentially investigate ALL the available options in order to
pick the best approach for EACH area of technology (because their project involves
data access, AND remote comms, AND a UI...), and they have to do this in the limited
time available before a project is under active development, and they have to train
all the members of the dev. team (who are generally NOT MVP caliber developers).</font></em>"
</p>
        <p>
The gist of our conversation was that Microsoft is aware of many of these issues,
and has been discussing them internally.  Karl was also surprised to hear that
Blend is NOT included in the professional-level MSDN subscription, and said he'd recommend
changing that, which would be great.
</p>
        <p>
I attended the first meeting of a local SilverLight User's group, hosted in Microsoft's
San Francisco offices.  This was the first event I've ever been to, where
the number of designers and design-related discussion had any kind of parity
with development concerns.  Presenters included Scott Stanfield and
other representatives from <a href="http://www.vertigo.com/">Vertigo</a>, as
well as design/devs from the San Franciso offices of <a href="http://www.mccann.com/">the
advertising firm, McCann Worldgroup</a>.
</p>
        <p>
I also attended the day-long MSDN Developer's Conference, billed as a "mini-PDC",
covering updates to topics and technologies presented last September, and was
honored/priviledged to be invited to attend not one, but two social gatherings,
where I got to hobnob with Microsoft and local dev. community leaders, bending
their ears on dev.-related issues -- especially after the first couple of
free pints...  I reluctantly passed up a free pass to <a href="http://2009.visitmix.com/">MIX</a>,
since I just can't justify the hotel and other costs at this time (and videos for the
sessions will be available online anyway).
</p>
        <p>
For the second time in as many months, I've gotten e-mail from someone who
noticed my CodeProject posts, asking if I'd be interested in doing some WPF consulting. 
This time the request came directly from the CEO of an east coast medical equipment
manufacturer, and I've forwarded some WPF resource links that should help
their devs get up to speed, and offered to put together a simple demo to illustrate
some architecture and design options just for fun -- since many of the requirements
don't seem all that different from another CodeProject demo I've been working
on anyway.
</p>
        <p>
My social calendar hasn't been this busy since college!  Even the ILLUSION of
being included in serious dev. discussions has me hooked, as I discovered from monitoring, <a href="http://groups.google.com/group/wpf-disciples">the
"WPF Disciples" discussion thread</a>.  You have to filter out alot of empty
"banter", but I swear I learn something completely unexpected from
that site at least once a week (variations on approaches to M-V-VM,
markup extensions as a localization technique etc.), and it really makes you
feel like you're sitting directly together with the people who will
have the most influence in guiding the direction of the WPF platform.
</p>
        <img width="0" height="0" src="http://missedmemo.com/blog/aggbug.ashx?id=41647ead-d15c-4f9a-92de-ecebdc49112b" />
      </div>
    </content>
  </entry>
  <entry>
    <title>You Get What You Settle For</title>
    <link rel="alternate" type="text/html" href="http://MissedMemo.com/blog/2009/02/17/YouGetWhatYouSettleFor.aspx" />
    <id>http://missedmemo.com/blog/PermaLink,guid,712e88ad-d1e7-4b64-9b97-f665b71f291a.aspx</id>
    <published>2009-02-16T19:56:53.712-08:00</published>
    <updated>2009-02-17T08:48:17.9465017-08:00</updated>
    <category term="About Me" label="About Me" scheme="http://missedmemo.com/blog/CategoryView,category,About%2BMe.aspx" />
    <category term="Agile" label="Agile" scheme="http://missedmemo.com/blog/CategoryView,category,Agile.aspx" />
    <category term="Dev. Process" label="Dev. Process" scheme="http://missedmemo.com/blog/CategoryView,category,Dev.%2BProcess.aspx" />
    <category term="Management" label="Management" scheme="http://missedmemo.com/blog/CategoryView,category,Management.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <i>"Princeton could USE a man like Joel."</i>
        </p>
        <p>
     - Hope for all us unconventional interview
candidates, from "Risky Business" 1983
</p>
        <p>
          <br />
        </p>
        <p>
I've been living off my incredible shrinking stock portfolio, hanging out in
local coffee shops and restaurants with my laptop, working with WPF and other development
technologies...  for too long now, and I'm itching to APPLY these new
technologies and practices, to something challenging and interesting, working
with people who are "<a href="http://www.joelonsoftware.com/items/2007/06/05.html">smart,
and get things done</a>".
</p>
        <p>
In addition to pointing out that I'll be starting my job search in
the depths of a nation-wide employment freeze, friends have predicted that hiring
managers will reject me because of my recent "sabbatical", but I think any
company that would consider intense work with next generation development technologies
on my own dime to be a BAD thing is probably one I wouldn't want to work at
anyway :-)
</p>
        <p>
I'm obviously delusional enough to think I can still afford to be picky, and
there are <a href="http://thedailywtf.com/Articles/A_Secure_and_Well-Ventilated_Location.aspx">some
situations</a> I'm really hoping to <strong>AVOID </strong>this time around...
</p>
        <ul>
          <li>
            <strong>The New Number 6:</strong>  "This 'best practices' stuff all sounds very
interesting, but right now what we really need is for someone to take over
John's code.  We're down to five developers now that John got fed up and
quit, no one undertands his stuff, and marketing has commited us to delivering a big
stack of new features in eight months." 
</li>
          <li>
            <strong>How Hard Could It Be?:</strong>  "We can't spare any of our hardware
engineers to spend a weekend knocking out this 'simple' software, so
we want to hire you.  We've already done the hard part of defining the database
schema, and we just need you to add a few things and get together with
marketing to slap on some kind of pretty UI." 
</li>
          <li>
            <strong>Brain Silos:</strong> "Joe is designing data access, Tim is handling
remote comms, Fred is responsible for security... you don't need to concern yourself
with those issues, and they don't need to be a part of discussions involving
your area." 
</li>
          <li>
            <strong>Plug-and-Play Developers:</strong>  "We're going to need to pull
you and Joe off the project for eight weeks to jump on a new marketing request. 
Remedial Roger's not doing anything right now, so he can fill in until you get back,
and then maybe we'll have you split your time 60/40 between projects X and Y..." 
</li>
          <li>
            <strong>Sacred Tablets:</strong>  "I'm not sure what you mean by 'Agile',
but we follow the process described in this 5 inch thick binder, written
ten years ago" 
</li>
          <li>
            <strong>Invertebrates:</strong>  "Yes, we've all been saying for years how
we should be doing X, Y, and Z, but what can we do?" 
</li>
        </ul>
        <p>
I have this fantasy where I work in an environment where we avoid doing
things we already know are dumb before we even start, and where we actually FIX
things we discover we got wrong along the way.  I'm not holding
out hope for an environment <a href="http://www.joelonsoftware.com/items/2008/12/29.html">as
enlightened as Fog Creek</a>, but a company should fall within some
REASONABLE RANGE on these issues.
</p>
        <p>
Some organizations believe they "can't afford" to spend time refactoring their
development process, especially in the current economic environment, when its probably
the adoption of a more streamlined iterative process, featuring cross-functional
teams, relying on a smaller number of more capable individuals, that is likely
to have the most dramatic long-term positive impact on a company's software
development costs, schedules, and quality.
</p>
        <img width="0" height="0" src="http://missedmemo.com/blog/aggbug.ashx?id=712e88ad-d1e7-4b64-9b97-f665b71f291a" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Dev. Advocate General</title>
    <link rel="alternate" type="text/html" href="http://MissedMemo.com/blog/2009/01/30/DevAdvocateGeneral.aspx" />
    <id>http://missedmemo.com/blog/PermaLink,guid,6e4de4c0-d0c7-4e2f-bb4e-5a4b4dde7365.aspx</id>
    <published>2009-01-29T23:51:58.881-08:00</published>
    <updated>2009-02-07T20:11:36.6936833-08:00</updated>
    <category term="Dev. Process" label="Dev. Process" scheme="http://missedmemo.com/blog/CategoryView,category,Dev.%2BProcess.aspx" />
    <category term="Management" label="Management" scheme="http://missedmemo.com/blog/CategoryView,category,Management.aspx" />
    <category term="WPF" label="WPF" scheme="http://missedmemo.com/blog/CategoryView,category,WPF.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
I've been meeting regularly with Bruno Terkaly, Microsoft Dev. Evangelist for Northern
California, who has updated his WPF presentations to include discussion of issues I've
suggested are important to developers moving to WPF -- but
which always seem to be left out or misrepresented in Microsoft
presentations and published resources.  Bruno has reported getting some "thank-you"s
from audience members specifically related to the new material, just as I got "thank-you"s
from developers in reaction to <a href="http://missedmemo.com/blog/2008/09/13/WPFTheFizzBinAPI.aspx">my
original blog post on the subject</a>.
</p>
        <p>
WPF is a GREAT technology, but developers need open, honest discussion of the pain
points they can expect to run into as they make the transition.  Examples of
less-than-helpful guidance includes the often-repeated advice to simply
"hand the project to the designers", while all the developers in the audience
are wondering "WHAT designers?  We can't even get approval to hire
TESTERS!"  Xaml is frequently portrayed as low-level tooling support,
which can safely be ignored, while failing to mention that Visual Studio
lacks design-time support for basic WPF features (DataTemplates, for example),
and Expression Blend, which DOES offer support, is promoted as a tool for
designers.  Any suggestion that developers avoid working directly with Xaml
is especially unfortunate, since it takes just a few weeks to become completely
comfortable editing Xaml directly, and this approach is MUCH more productive,
and leads naturally to better-refactored, more maintainable markup.
</p>
        <p>
After describing similar issues involving other Microsoft technologies, including
difficulty in trying to make sense of Microsoft's recently-announced "Azure"
cloud computing platform (Bruno says I can take credit for the fact that essential
white papers are now grouped together and accessible when you click on the link labelled...
er... "White Papers"), I was very kindly invited to attend an informal upcoming
get-together of local Microsoft dev. community figures, where I'm hoping to compare
notes.  I've also managed to finagle a breakfast meeting this weekend with Microsoft's
Karl Shifflet, where I'll have the opportunity to discuss these issues directly with
the WPF Program Manager.  Last night, I attended an excellent presentation on
Azure, by David Chappelle, where I mentioned some of these issues, and
was surprised to hear him express similar sentiments (confusion over the dual storage
systems in Azure, the lame attempt to paint the lack of schema support as a feature
instead of the honest -- and more palatable -- reality that ALL cloud vendors are
adopting a very similar approach...).  He also seemed to agree with my impression
that these issues are occuring more frequently, with evidence of development by
independent teams (who don't talk to each other)... showing through at the seams.
</p>
        <p>
I've suggested Microsoft could benefit from having internal developer ADVOCATES, focused
on identifying and fixing these kinds of issues, rather than just developer "evangelists",
who operate more as an extension of Microsoft marketing. Responsibilities for
such a team might include...
</p>
        <ul>
          <li>
Working to identify and resolve sources of frustration and confusion in all public-facing
content. 
</li>
          <li>
Acting as a dev. community resource, soliciting reports of new issues, and maintaining
a public (?) list of issues and their resolution status. 
</li>
          <li>
Ensuring that cases where perceived issues are actually justified (or temporary),
are clearly explained, as close to the start of the release cycle as possible. 
</li>
          <li>
Using the history of reported issues to improve internal guidance for online
documentation and SDK content and install experiences (including the possibility
of relying more on pre-configured vhd images). 
</li>
          <li>
Working to see that all mainstream documentation, sample code, tool-generated code,
and public presentations, reflect industry "best practices", or that such
information is at least mentioned alongside the usual focus on point-and-click solutions. 
</li>
        </ul>
        <p>
The idea is a little naiive, of course, and developers already have access to a wide
variety of ways in which to report issues, but the current “scattershot” approach,
leaving it up to each individual team to report and respond to issues in its
own way, may be part of the problem.  A small team that served as the developer
community voice INSIDE Microsoft, that was explicitly tasked with helping to identify
and resolve these issues, regardless of which dev. or documentation group might actually
be technically responsible for that particular area… could reduce frustration
among Microsoft's target customer base, and probably also reduce the time dev.
and marketing team members spend, having to repeat answers to the
same questions, from a variety of sources.
</p>
        <p>
I'm really enjoying the opportunity to discuss these issues with knowledgable
people in the Windows dev. community, and I'd love to think that something in one of
these discussions could trigger real change.
</p>
        <img width="0" height="0" src="http://missedmemo.com/blog/aggbug.ashx?id=6e4de4c0-d0c7-4e2f-bb4e-5a4b4dde7365" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Do The Right Thing</title>
    <link rel="alternate" type="text/html" href="http://MissedMemo.com/blog/2009/01/06/DoTheRightThing.aspx" />
    <id>http://missedmemo.com/blog/PermaLink,guid,0d0f29e2-d433-439f-b5c6-3f550c803a76.aspx</id>
    <published>2009-01-06T15:02:55.326-08:00</published>
    <updated>2010-02-14T20:51:41.2702706-08:00</updated>
    <content type="html">&lt;p&gt;
I've been seeing a growing number of discussions and resources that try to reconcile
Microsoft RAD tool output with generally accepted software engineering "best practices"
(Separation of Concerns, Inversion of Control etc.). The topic certainly isn't new,
but the discussion seems less academic and more mainstream now, compared with the
days when Allen Holub would rail against MFC's violation of OOD principles, possibly
due to a spreading awareness of Agile and Domain Driven Design principles.
&lt;/p&gt;
&lt;p&gt;
A recently published book, "&lt;a href="http://www.amazon.com/Microsoft®-NET-Architecting-Applications-PRO-Developer/dp/073562609X/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1231180843&amp;sr=1-1"&gt;Microsoft
.Net: Architecting Applications for the Enterprise&lt;/a&gt;", by Dino Esposito and Andrea
Saltarello is almost a definitive reference on this subject, describing Microsoft
technologies, from the much-abused Dataset to the recently-maligned Entity Framework,
in the context of architecture patterns listed in Martin Fowler's classic "&lt;a href="http://www.amazon.com/Enterprise-Application-Architecture-Addison-Wesley-Signature/dp/0321127420/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1231181000&amp;sr=1-1"&gt;Patterns
of Enterprise Application Architecture&lt;/a&gt;", while providing practical advice on when
and how to apply various approaches on real world projects. The book also does a great
job tracing the evolution of the MVC pattern, through MVP "Passive View" and "Supervising
Controller" variations, to its current instantiation as the Model-View-ViewModel pattern
targeting WPF. The book even includes discussion of the potential benefits of popular
NON-Microsoft offerings, including NHibernate.
&lt;/p&gt;
&lt;p&gt;
Other recent examples of discussion in this area include a Code magazine article by
Miguel A. Castro, "&lt;a href="http://www.devx.com/codemag/Article/39837"&gt;WCF the Manual
Way... the Right Way&lt;/a&gt;", describing shortcomings of the "Add Service Reference"
option and default code generated by WCF project templates (others have voiced similar
criticisms). There have also been a number of variations on how to better segregate
data access concerns through some form of generic "Repository" layer. The recent posting
of a "&lt;a href="http://efvote.wufoo.com/forms/ado-net-entity-framework-vote-of-no-confidence/"&gt;Vote
of No Confidence&lt;/a&gt;" petition (signed by a number of Microsoft MVPs), following the
release of version 1.0 of the Entity Framework is, in some sense, a reaction to "convenience"
tools that some developers feel make it unecessarily hard to "do the right thing",
and may lead inexperienced developers down an inappropriate path. In this case, &lt;a href="http://blogs.msdn.com/timmall/archive/2008/06/24/vote-of-no-confidence.aspx"&gt;the
Entity Framework team responded&lt;/a&gt; with changes to elements of the design planned
for version 2.0, commited themselves to soliciting community feedback on an ongoing
basis and, most reassuring of all, began consulting directly with DDD/OOD luminaries
Eric Evans and Martin Fowler.
&lt;/p&gt;
&lt;p&gt;
The competing M-V-XYZ "schools of thought" all share in the fact that they represent
a recommendation to RESIST practices that Microsoft's tool set and documentation encourage
by default (placing implementation logic directly in event handlers in the view's
code-behind). Whether you'll actually succeeed in getting your project dev. team members
to reject IDE features that support the standard project workflow, to manually insert
some M-V-Poo mini-framework, is open to question, especially since several of the
most popular M-V-XYZ variations rely on advanced WPF features, like custom attached
properties, to replace operations as basic as handling a simple ListBox selection
change event.
&lt;/p&gt;
&lt;p&gt;
Unlike diatribes against Microsoft technologies that were common years ago, those
raising objections today tend to be hardcore FANS of Microsoft technologies. The most
influential advocates also tend to be pragmatists, repeatedly warning developers not
to become overly obsessed with issues of design "purity". On projects of limited scope,
one-click "it just works" solutions that generate a little cross-concern "contamination"
may be a perfectly reasonable and practical approach. A product catalog, for example,
requiring basic CRUD and query operations with little or no associated business logic,
might be a good candidate for binding a Dataset directly to a DataGrid, or making
use of the "Add Service Reference" project option although, technically, those approaches
represent an inappropriate surfacing of service connection and data storage details
in the UI layer.
&lt;/p&gt;
&lt;p&gt;
The work of Microsoft's "&lt;a href="http://msdn.microsoft.com/en-us/practices/default.aspx"&gt;Patterns
and Practices Group&lt;/a&gt;" is supposed to represent "best practice" guidance in applying
Microsoft technologies, but that group is not well known outside the ranks of the
already-converted, and incorporating their libraries on a shipping product can meet
with some resistance, since these aren't regarded as "full-fledged Microsoft product
offerings. PAG guidance is not reflected in the standard Microsoft tool set or mentioned
in mainstream Microsoft presentations or sample code, leading to a natural reaction
along the lines of "If this is so good, how come I've never heard of it, and why isn't
it built into Visual Studio?". The PAG group also tends to cripple their own cause,
with a wide selection of offerings that seem to be in perpetual beta, and are often
intimidating in their complexity ("&lt;a href="http://msdn.microsoft.com/en-us/library/cc707819.aspx"&gt;Composite
Application Guidance for WPF&lt;/a&gt;", for example, which members of a development team
are apparently expected to tackle IN ADDITION to the already non-trivial task of understanding
the underlying framework technologies).
&lt;/p&gt;
&lt;p&gt;
Its currently not uncommon for Microsoft resources to describe a technology exclusively
in terms of clicking this (Visual Studio) button, and pulling that lever... while
highly-regarded developer community resources (Juval Lowy on WCF, for example), explicitly
warn against relying on those same conveniences. Just as Microsoft earlier managed
to commit to making security a first order concern in all its internal development
activity, it could also help make it easy for developers to "do the right thing" BY
DEFAULT, by requiring all Microsoft tools, and public-facing materials, sample code,
and presentations... to always take "best practice" conventions into consideration.
Ironically, the very developers Microsoft is targeting with its RAD tools are the
same ones who most desperately need guidance and assistance in learning to write BETTER
code -- who are effectively being led down a blind alley, with other developers left
to clean up behind them, and try to explain why some code needs to be restructured
when "that's the way Microsoft said to do it".
&lt;/p&gt;
&lt;img width="0" height="0" src="http://missedmemo.com/blog/aggbug.ashx?id=0d0f29e2-d433-439f-b5c6-3f550c803a76" /&gt;</content>
  </entry>
  <entry>
    <title>Click Me!  Click Me!</title>
    <link rel="alternate" type="text/html" href="http://MissedMemo.com/blog/2008/10/16/ClickMeClickMe.aspx" />
    <id>http://missedmemo.com/blog/PermaLink,guid,45629abb-5559-446c-89d0-f355dd734f7d.aspx</id>
    <published>2008-10-15T22:54:58.485-07:00</published>
    <updated>2008-11-16T22:26:24.3303555-08:00</updated>
    <category term="Dev. Process" label="Dev. Process" scheme="http://missedmemo.com/blog/CategoryView,category,Dev.%2BProcess.aspx" />
    <category term="UI Design" label="UI Design" scheme="http://missedmemo.com/blog/CategoryView,category,UI%2BDesign.aspx" />
    <category term="WPF" label="WPF" scheme="http://missedmemo.com/blog/CategoryView,category,WPF.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Our most important client wanted to draw attention to a major new feature
in the next version of their successful commercial software product with a "flashing
red button".  We tried to explain that this would be irritating, and our task should
be to enable the user to quickly LOCATE and understand HOW TO
USE features, not to impose our own idea of what their individual
workflow should be.  I asked the client's marketing reps to imagine a
word processor featuring a blinking "SPELLCHECK... SPELLCHECK... SPELLCHECK..."
button.  They insisted...  We resisted...  Several weeks
later, one of the marketing reps called to say that they now completely agreed
that a flashing red button had been terrible idea... but could we add a "cycling button", which would endlessly transition
through a set of colorful images?  We eventually delivered the product, free
of any "throbbing" UI elements, to rave reviews -- and a Software Publishers
Association "Codie" award.
</p>
        <p>
Effective UI development requires attention to many different areas...
</p>
        <p>
          <strong>Buy-in:</strong>  Attention to UI is still an afterthought at many
organizations ("our customers pay for FEATURES!"), and it sometimes takes a
competing (possibly technically inferior) product, that wins over reviewers with
its intuitive design and polished graphics, to change this.  Until
you can overcome the attitude that developers can just use MS Paint to generate artwork
for the shipping product, you'll be very limited in what you can accomplish in
terms of design.
</p>
        <p>
          <strong>Interactive Design:</strong>  Guidance on principles and practices
considered to contribute to "good UI" has long been available in published
references from a number of notable industry authors (see the list below).  In
addition to making the effort to actually STUDY the subject, it helps to be
able to mentally "block out" your deep understanding of the underlying technical
issues, and see interaction requirements from a user's non-technical
perspective.  Common UI sins include exposing far too many options
in the top-level UI, failing to group associated features or define interactions
for similar tasks in a consistent way, failing to create a visual hierarchy to promote feature
"discovery", creating deeply nesting submenus under submenus or dialog buttons
that pop up more dialogs, and many others.
</p>
        <p>
          <strong>Aesthetics:</strong>  This is what most managers and marketing people
tend to think of when they hear the term "UI design", with managers justifiably
skeptical that the company should invest time and money just to "make things pretty",
while marketing department representatives are envisioning how the application will
look, projected on the JumboTron, at the next trade show.  A general
consensus on the definition of "good enough" is important when considering
changes that are purely aesthetic -- but much less so when it comes to
issues of usability.  Aesthetics are almost completely subjective:
"It's too round, the borders need to be thicker/darker, it 'feels' too crowded,
the animation isn't smooth enough, it's too blue...".  A subtopic which is less
subjective involves "color theory", and developers can dramatically improve their
designs by relying on resources like <a href="http://kuler.adobe.com/">Adobe's "Kuler"</a> to
help them select a limited set of colors that are guaranteed to look good together.
</p>
        <p>
          <strong>Engineering Effort:</strong>  Developers who focus exclusively on server-side/infrastructure/business
logic issues, HUGELY underestimate the engineering effort required to
produce an intuitive and compelling UI.  Speakers at dev. training events
will often wave their hands in front of a thinly populated data grid near the
end of a presentation on the latest data access/remote communications mini-framework,
and make some offhand remark to the effect that "someone" can hang
a pretty UI on all of this later...  In reality, I don't think I've ever
seen a project where the time and effort required to implement a non-trivial
user interface didn't turn out to be many times greater than what was required to
pound out the underlying business logic and support layers, where implementation
of the UI didn't require the attention of the teams's best developers, or where there
weren't significant benefits to refactoring lower layers to present information
in a form more convenient to the UI.
</p>
        <p>
          <strong>Design Extremes:</strong>  More than one member of the Windows
developer community has warned about WPF's potential to inflict interfaces
consisting of dancing 3D teapots pouring colored streams of text onto virtual
curling pages...  At the other extreme, some developers will continue to
simply glom together 3rd party controls, and rob their projects of the benefits
of the DESIGN capabilities built into the framework.
</p>
        <p>
          <strong>Designer-Developer Interop:</strong>  Some people have been mislead to
believe that designers can essentially make indiscriminate changes in Blend, while
developers make indiscriminate changes to the shared project source in Visual Studio,
and that as long as everything works in one environment, it will work in the other...
and that designers and developers can work in harmony while remaining largely ignorant
of each other's area of concern. Many teams, including some inside Microsoft, <a href="http://channel9.msdn.com/posts/Charles/Real-World-WPF--Designers-and-Developers-working-together/">are
finding that this is simply not true</a>.
</p>
        <p>
          <strong>UI Testing:</strong>  The process of writing unit tests for business
logic generally results in better code, converting methods that were formerly
"private" into testable "public" methods in new classes with more narrowly-defined
responsibilities, for example.  The structure of "good" UI code, on the other
hand, is dictated by the UI development framework being used (Windows Forms, WPF etc.),
and trying to unit test the presentation layer often requires conforming
to a dramatically different coding style, which is not inherently better, but required by
the test framework (implementing all control handlers as empty stubs that call into
new "presenter" classes, for example -- although there are arguably other benefits
to this particular technique that extend beyond testing).  Unit tests are
also completely unable to test effects that are purely visual, which make up
a HUGE proportion of UI bugs (scrolling is not smooth, controls don't line up, layout
doesn't conform to UI guidelines, X is misspelled, quickly dragging the window causes
the video image to dissappear while audio continues to play...), while much of what
CAN be detected would rarely have escaped notice, even without unit tests (verify
that clicking buttonX launches featureX...).  The cost-benefit trade off
for trying to unit test the presentation layer becomes even more questionable with WPF,  since the
majority of UI behavior in a well-designed WPF application will be defined in Xaml
and, even if you could test the markup, you would essentially be testing
Microsoft's Xaml parser and data binding implementations.
</p>
        <p>
A less common type of UI testing consists of formal "usability" testing.  On
the project mentioned earlier, our development team got to spend a week in
an actual usability lab and (once we got over the fun of zooming the hidden
cameras in and out on the test subject's bald spot), we found it to be a very humbling
experience to watch user after user struggle with features we "knew"
were completely intuitive, while we jumped around behind the one-way
mirror begging the user to "Just click the Toolbar button!"  Formal usability
testing is very valuable if you can justify the expense, but interpreting test
results can be tricky -- thinking that maybe the user would have noticed
that Toolbar option IF ONLY WE'D USED A FLASHING RED BUTTON!
</p>
        <p>
 
</p>
        <p>
          <u>
            <strong>Recommended UI Design Resources:</strong>
          </u>
        </p>
        <ul>
          <li>
"<a href="http://www.amazon.com/User-Interface-Design-Programmers-Spolsky/dp/1893115941/ref=sr_1_3?ie=UTF8&amp;s=books&amp;qid=1224132663&amp;sr=1-3">User
Interface Design For Programmers</a>", Joel Spolsky:  Concise &amp; authoritative. 
Best place to start! 
</li>
          <li>
"<a href="http://www.amazon.com/Dont-Make-Me-Think-Usability/dp/0321344758/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1224133488&amp;sr=1-1">Don't
Make Me Think</a>", Steve Krug:  Web-focused, but very relevant and a very quick
read 
</li>
          <li>
"<a href="http://www.amazon.com/Designing-Interfaces-Patterns-Effective-Interaction/dp/0596008031/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1224133826&amp;sr=1-1">Designing
Interfaces</a>", Jenifer Tidwell 
</li>
          <li>
            <a href="http://blogs.msdn.com/jensenh/archive/tags/UI+Design+Issues/default.aspx">Jensen
Harris blog</a> (MS Office Design Mgr.):  Fascinating details of MS design
efforts on Office 2007 
</li>
          <li>
"<a href="http://www.amazon.com/About-Face-Essentials-Interaction-Design/dp/0470084111/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1224133743&amp;sr=1-1">About
Face</a>", Alan Cooper:  Sometimes controversial MS Windows UI luminary 
</li>
          <li>
"<a href="http://www.amazon.com/Designing-Usability-VOICES-Jakob-Nielsen/dp/156205810X/ref=sr_1_2?ie=UTF8&amp;s=books&amp;qid=1224133578&amp;sr=1-2">Designing
Web Usability</a>", Jacob Nielsen: Leading authority on UI issues 
</li>
          <li>
"<a href="http://www.amazon.com/Design-Everyday-Things-Donald-Norman/dp/0465067107/ref=sr_1_2?ie=UTF8&amp;s=books&amp;qid=1224133673&amp;sr=1-2">The
Design of Everyday Things</a>", Donald Norman:  A recognized classic 
</li>
          <li>
"<a href="http://www.amazon.com/Software-Use-Practical-Methods-Usage-Centered/dp/0201924781/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1224133971&amp;sr=1-1">Software
For Use</a>", Larry Constantine:  In-depth, textbook treatment of the subject  
</li>
          <li>
Edward R. Tufte (<a href="http://www.amazon.com/exec/obidos/search-handle-url/ref=ntt_athr_dp_sr_1?%5Fencoding=UTF8&amp;search-type=ss&amp;index=books&amp;field-author=Edward%20R.%20Tufte">series
of 5 books on design</a>) :  The books themselves are works of art </li>
        </ul>
        <img width="0" height="0" src="http://missedmemo.com/blog/aggbug.ashx?id=45629abb-5559-446c-89d0-f355dd734f7d" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Lead Or Follow!</title>
    <link rel="alternate" type="text/html" href="http://MissedMemo.com/blog/2008/09/26/LeadOrFollow.aspx" />
    <id>http://missedmemo.com/blog/PermaLink,guid,af3e12a9-3740-403f-b573-1ab97df46b16.aspx</id>
    <published>2008-09-25T20:17:15.104-07:00</published>
    <updated>2008-10-07T23:08:37.9243842-07:00</updated>
    <category term="Management" label="Management" scheme="http://missedmemo.com/blog/CategoryView,category,Management.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <blockquote dir="ltr" style="MARGIN-RIGHT: 0px">
          <p>
            <font face="Arial">
              <em>"Lead or follow, but GET OUT OF THE WAY!"</em>
            </font>
          </p>
          <p>
       - plaque on the desk of Ted Turner
</p>
        </blockquote>
        <p dir="ltr">
 
</p>
        <p dir="ltr">
I've worked with some really GREAT managers, several of whom had absolutely
no software development experience.  Some were hardware engineers, some
were from marketing, and some were just individuals with relevant domain
expertise.  Qualities that made them great engineering managers included
the ability to quickly grasp the GIST of technical issues, highly-developed
BS-detectors, calm in the face of a need for decisions on the basis
of limited information, the courage to say "no" to upper management when
necessary (and the willingness to fight, to make it stick), intolerance of
empty beauracracy, a commitment to the highest (practical) engineering standards, and acceptance
of the fact that plans and predictions inevitably CHANGE, incrementally
but continuously, sometimes right up until near the very end of a project.
</p>
        <p>
A good engineering manager enjoys getting their hands dirty with the evolving
product, and is able to provide constructive feedback like "I was playing
with the product yesterday, and I noticed X, Y, and Z", or "How can we design feature
A to be better than a similar feature in our competitor's product?" 
A poor manager takes refuge in a filtered subset of second hand information
ABOUT the project, in the form of tidy reports and spreadsheets and charts, and may
go to great lengths to avoid commiting to a decision involving actual technical
or design issues.  Unfortunately, over the course of dozens of projects,
at half-a-dozen different companies, really good managers have been in the minority,
and were often handicapped (if not initially, then after the first or second
reorg.), by having to report to individuals farther up the chain who seemed
to consider "management" to be a TITLE instead of an ACTIVITY.
</p>
        <p>
Some managers become obsessed with being recognized as the primary
source for all information and decisions on the project.  I once walked
into a project manager's office, with print outs of bug reports spread out
all over her desk, who complained she was being overwhelmed with issues reported
by our publisher client.  Since I'd recently resolved several
issues just by speaking directly with one of the publisher's engineers,
I curiously leaned over to look at one of the reports, and she practically
THREW HERSELF onto the desk, covering the print outs with her arms,
as I sloooowly backed out of the office.  On another occassion, a year
into <a href="http://missedmemo.com/blog/2007/08/14/PMPsychicManager.aspx">a job at
the Tokyo offices of a US investment banking firm</a>, I was CC'd on email that revealed
that a certain middle manager had been rewording requests for information from
upper management, and then rewording my responses, in order to hide the identities
of the original email authors and ensure that they remained at the center
of all communication.  That would have been fine (if a little silly), except
that they sometimes misunderstood either the original request or my response,
creating confusion and wasting everyone's time.  Some dysfunctional managers insist
on personally taking charge of presentations, or leading discussions,
on issues with which they have only a very superficial understanding, where they hopelessly
mangle key technical information, or sidetrack the proceedings onto irrelevant
(but more familiar, non-technical) issues.
</p>
        <p>
Managing software engineering is HARD!  Even skilled developers who take on a
management role quickly lose touch with continually-evolving development
technologies and best practices, and must depend on their top engineers for guidance
on project decisions.  Identifying RELIABLE sources for information from
among the development staff is especially difficult for non-technical managers,
since it is easy for mediocre developers to fake a convincing level of
expertise, while many of the best developers don't bother to cultivate the kind
of basic social skills that engender management trust.  Some organizations resolve
this by splitting management responsibility, giving a "Technical Lead" authority
over a project's engineering-related issues (including issues which are not strictly
technical, such as "Joe is not performing and needs to be taken off of the project"),
while the "Project Manager" takes on a more administrative role,
becomming responsible for shepherding issues through the corporate beauracracy
so the engineers can focus on... engineering.
</p>
        <img width="0" height="0" src="http://missedmemo.com/blog/aggbug.ashx?id=af3e12a9-3740-403f-b573-1ab97df46b16" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Demo Project Links</title>
    <link rel="alternate" type="text/html" href="http://MissedMemo.com/blog/2008/09/14/DemoProjectLinks.aspx" />
    <id>http://missedmemo.com/blog/PermaLink,guid,0b4cf262-bea1-4997-9729-f687621d00a8.aspx</id>
    <published>2008-09-14T13:05:14.275-07:00</published>
    <updated>2008-10-13T21:21:14.6649493-07:00</updated>
    <category term="Dev. Technologies" label="Dev. Technologies" scheme="http://missedmemo.com/blog/CategoryView,category,Dev.%2BTechnologies.aspx" />
    <category term="WPF" label="WPF" scheme="http://missedmemo.com/blog/CategoryView,category,WPF.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
        </p>
        <p>
I've posted several demo projects to dev. community sites, and I'll continue to update
this page as more are completed.
</p>
        <p>
        </p>
        <table border="1">
          <thead>
            <tr>
              <th>
Links</th>
              <th>
                <i>( click to enlarge )</i>
              </th>
            </tr>
          </thead>
          <tbody>
            <tr align="middle">
              <td>
                <a href="http://www.codeproject.com/KB/WPF/XSButton.aspx">WPF Custom Controls - Without
the Pain</a>
              </td>
              <td>
                <a href="content/binary/Proj_XSButton.png">
                  <img hspace="10" src="content/binary/ProjThumb_XSButton.png" vspace="10" border="0" />
                </a>
              </td>
            </tr>
            <tr align="middle">
              <td>
                <a href="http://www.codeproject.com/KB/WPF/CustomFrames.aspx">WPF Non-Client Area
Design Techniques For Custom Window Frames</a>
              </td>
              <td>
                <a href="content/binary/Proj_CustomFrame.png">
                  <img hspace="10" src="content/binary/ProjThumb_CustomFrame.png" vspace="10" border="0" />
                </a>
              </td>
            </tr>
            <tr align="middle">
              <td>
                <a href="http://www.codeproject.com/KB/WPF/AlarmBar.aspx">An Animated AlarmBar Custom
Control in WPF</a>
              </td>
              <td>
                <a href="content/binary/Proj_AlarmBar.png">
                  <img hspace="10" src="content/binary/ProjThumb_AlarmBar.png" vspace="10" border="0" />
                </a>
              </td>
            </tr>
            <tr align="middle">
              <td>
                <a href="http://www.codeproject.com/KB/WPF/WatermarkTextBox.aspx">A WatermarkTextbox
in 3 Lines of Xaml</a>
              </td>
              <td>
                <a href="content/binary/Proj_Watermark.jpg">
                  <img hspace="10" src="content/binary/ProjThumb_Watermark.jpg" vspace="10" border="0" />
                </a>
              </td>
            </tr>
            <tr>
              <td>
                <p dir="ltr" style="MARGIN-RIGHT: 0px">
   <u><strong>Bay Area .Net User's Group Project</strong></u></p>
                <ul>
                  <li>
                    <a href="http://www.codeplex.com/PizzaManiacUI1">PizzaManiac 1 - Simplistic WPF layout,
to support basic application structure and behavior</a>
                  </li>
                  <li>
                    <a href="http://www.codeplex.com/PizzaManiacUI2">PizzaManiac 2 - Realistic feature
set, real-time WCF communication, and some UI customization</a>
                  </li>
                  <li>
                    <a href="http://www.codeplex.com/PizzaManiacUI3">PizzaManiac 3 - Significant increase
in complexity, to support multiple product types</a>
                  </li>
                </ul>
              </td>
              <td align="middle">
                <a href="content/binary/Proj_PizzaMania.png">
                  <img hspace="10" src="content/binary/ProjThumb_PizzaMania.png" vspace="10" border="0" />
                </a>
              </td>
            </tr>
          </tbody>
        </table>
        <p>
        </p>
        <img width="0" height="0" src="http://missedmemo.com/blog/aggbug.ashx?id=0b4cf262-bea1-4997-9729-f687621d00a8" />
      </div>
    </content>
  </entry>
</feed>