Wednesday, 11 March 2009

A Culture of (Potential) Assholes: Sexual Harassment in IT

On a recent trip I had my eyes opened to the phenomenon of sexual harassment in the IT industry. I don't know why I was so surprised, but I was. It broke my heart to discover that friends of mine had to put up with treatment that I thought only occurred in bad HR training videos.

Before I unpack my thoughts on this issue I feel I must issue a disclaimer. I'm a man. I've been guilty of sexual harassment to some degree in my life. I do not want to give the impression that I am above this issue. I enjoy making comments laced with double entendre that are probably more than a little offensive at times. Only now, I am more aware of and sensitive to these situations than before.

Here is what I observed. I was sitting next to a female developer in a hotel lobby in the evening during a multi-day conference. We had just met that evening, and I was enjoying our conversation. We were both sober, while many of those around us were not.

Seemingly out of nowhere, a loud and drunken man, whom I had met briefly the night before, appeared. He made a few comments to the assembled group, then reached in his back pocket to pull out the envelope that the hotel gives you with your room key cards. Apropos of nothing, he hands the envelope, containing a key, to the lady next to me and says "my room number is written on there. I expect to see you in my room later."

He then walked away while she tried unsuccessfully to give the room key back. After she sat back down, another male developer on her other side, in apparent sarcasm, said "you took somebody's room key. You're such a whore!" This pushed me past my tolerance and I yelled at him "Dude, over the line!"

While this brief scenario doesn't indicate a trend, it did spark a series of conversations with several women in my circle of contacts. I discovered through these conversations that it is a nearly universal experience that similar inappropriate scenarios happen on a regular basis. What was especially disturbing to me was that the women couldn't believe that I was surprised by this.

I consider the people I interact with professionally to be my community. I believe fundamentally that we have to take care of one another so that we can all succeed. To discover that members of my community were regularly tolerating treatment that I would not put up with for an instant was mind blowing to me.

I learned that rather than viewing men as neutral peers on first meeting, the women often view us with suspicion and caution. It is as though we are all potential assholes in their eyes, guilty until proven innocent. This led me to second guess many interactions I have had with women developers, wondering if they suspected my motives.

It seems to me that the women in our industry are swallowing emotional poison every time an harassing interaction takes place. They appear to have too high a threshold of tolerance for bad behavior. The lady involved in the situation that prompted this post told me that she couldn't speak up because she would then be seen as a bitch and would lose business because people wouldn't want to work with her. Here are some quotes:

I just shrug off certain comments/advancements, because being in IT I feel like I need to be “one of the guys”, so I take it and move on.

That's what i hate - having to keep my guard up in order to respond professionally, because there's this expectation that i have to respond in some way, either by being offended or going along with the joke and showing that i'm cool, etc.

I've been plenty naive, falling for "yeah sure we're just friends" or "no I didn't mean anything by that" lines. After enough lost trust in people, I've probably become more aware and/or suspicious.

Protesting too much gets you nowhere except labled in one of various negative ways. In which case, you HAVE to pick your battles, and figure out what is truly offensive and worth speaking up about, and ignore the rest. Otherwise you're just the "boy who cried wolf."

This condition frankly saddens me. In discussing these discoveries with my friend Dustin Campbell, he reminded me that as men, we have a tendency to fix and rescue. The issue at hand defies my attempts at immediate refactoring. I asked the women what I could do when I witness an incident of harassment. They suggested that I take the offender aside and talk to him rather than publicly reacting and potentially escalating an uncomfortable situation. One friend made it clear that I should say that I find the behavior offensive rather than come across like I'm sticking up for a "little lady."

Henceforth, if I see anyone pulling any of this shit, I will take the person aside and have a discrete but direct conversation. If it continues, I will call the person out publicly. If it continues beyond that, I'll take whatever steps necessary to inform vendors and clients of the individual's character.

The day after my "awakening", I went to a Women In Technology meeting to learn more. There I heard that retention of women in the industry is at least as big a problem as recruiting them in the first place. The three biggest causes of women leaving IT are sexual harassment, lack of role models and lack of mentors.

When it comes to role models and mentors, there may be fewer women than men, but they definitely exist. I know quite a few amazing women developers. Now, I am even more impressed with these women because of what they have had to put up with as they progress in their careers. I invite all of my peers to join me in making the profession of software development more welcoming to everyone by looking out for your neighbor.

Peace,

++Alan

 Sunday, 03 August 2008

The Paradox of Simplicity

In agile development, it is common to hear people say "do the simplest thing that could possible work." This is a corollary to YAGNI or "you ain't gonna' need it." I don't hear many of my fellow developers outside of the agile movement arguing with those sentiments. It seems we can all agree that we should not exert effort beyond solving the specific problem at hand.

There is, however, contention about what the implementation of such pragmatic simplicity looks like. As a .NET practitioner of agile development, it is common for me to write tests before implementation code. I often write interfaces which have only one implementation. I may use an inversion of control container, an object-relational mapper and other infrastructure utilities which appear to add unnecessary complexity to developers with a different outlook.

One of the most glaring anti-patterns for simplicity in my view is the SQL data source. It seems very simple and pragmatic to some because it allows the developer to quickly create a forms over data application which will deliver value to the client. While I agree that there is tremendous immediate benefit in using the SQL data source for the initial delivery of value, there is also a tremendous cost down stream.

In my view, the SQL data source represents all that is flawed in RAD (rapid application development) tooling. It allows the developer to quickly get data into and out of a database into and from the user interface. It also tightly couples the data access implementation to the user interface making future changes very difficult to implement. Fundamentally, tools such as the SQL data source represent the software equivalent of a Rube Goldberg machine where each bit of functionality relies intimately on the implementation details of it's neighboring components.

The core problem in software from my experience is not the delivery of the initial version of any functionality. The core problem is that that I and the customer never know when or where the code will need to change, but we know for certain that it will change. Enabling change therefore becomes a top priority along with delivering value.

If I deliver value up front while discouraging later changes to the code, then I have not actually delivered value. I have in essence paid with a credit card. The cost of changing the code must be paid later with interest. This phenomena is commonly referred to as "technical debt."

In my agilist mindset, I view the avoidance of technical debt as an essential element of simplicity. High coupling and low cohesion are too high a price to pay for immediate gratification. Furthermore, I have found that once I become experienced with the tools and practices of agile development, there is little cost, if any, to building changeability into my implementation from the start.

Kind regards,

++Alan

 Sunday, 18 May 2008

How I Found My Tribe on Twitter

I've been using Twitter since 11:04 PM October 25, 2007. I quickly found it to be useful and entertaining, like a group IM client or IRC. But Twitter is different than previous "group chat" tools. I've been struggling with what exactly is different, and I think I've finally put my finger on it.

The people I interact with on Twitter are my tribe. I like the word "tribe" because it connotes a shared identity. My Twitter Tribe are a "we" and an "us". I suppose this is how sports fans feel about their fellow fans, but I've never had this experience before, or at least not to this degree.

It was Rands who introduced the idea of tribes in Twitter to me. He does an excellent job of explaining some of the game-changing social networking hacks that Twitter provides, but he misses something that I've been trying to come to grips with. Twitter has provided a new sense of belonging in my life.

Because Twitter is an "opt-in" social network, it self selects for like interests. I don't follow people because they are "famous", but because I'm interested in what they have to say. What was unexpected at the start was that I became engaged with the people themselves, and not just their insights and wit. For instance, when I got into Joe O'Brien's minivan this weekend, I immediately realized it was the same vehicle that had been stolen and recovered. I only knew this piece of Joe's personal history because he had twittered it. I remember the feeling of relief I felt when he announced, on Twitter, that the police had recovered his family's primary vehicle.

Beyond all the productivity, entertainment and publicity benefits of Twitter lies this fact: I love the people in my Twitter Tribe. If you're uncomfortable with the "L Word", then please accept that I feel emotionally connected to them, even if I've never met them. When I do meet people after following them on Twitter, I have an urge to hug them like a reunited friend.

Twice now I've had the opportunity to meet up with members of my tribe that I hadn't met previously, and the experience was seamless. I didn't "think" I knew these people. We knew each other. We were already an "us"; a tribe. At the Indianapolis Code Camp last month I met around ten people I knew through Twitter and it reinforced my feeling about the power of Twitter.

This past weekend at the Cleveland Day of .NET I met easily twenty people that I knew through Twitter and followed that many more new people I was introduced to. This was a very emotional experience for me. You see, I am part of a small demographic of social or extroverted computer nerds. There aren't that many people like me who are geographically close. Not enough to call a tribe, anyway.

Through Twitter I can connect with this demographic of people all over the world, and maintain constant contact. Twitter bridges the gaps between conferences etc. where people in my niche gather socially. Because of Twitter, I am in touch with "my people" all the time. The sense of belonging and acceptance is unprecedented in my experience.

There are many ways to use Twitter. There is no "right" way to use this simple service. I have stumbled into one particular habit of use. I am not resorting to hyperbole when I say that the effect has been life changing. Your mileage may vary, but from conversations I've had, I know I'm not the only one experiencing these effects.

I always demo Twitter at the start of my presentations these days as a way to encourage audience members to continue the conversation and learning outside the session. Perhaps I should include a warning "This service could lead to serious emotional attachment and meaningful relationships resulting in a fulfilling sense of belonging. Proceed with caution."

Peace,

++Alan

 Wednesday, 30 January 2008

No NuSoft Solutions For You!

For the last week, I've been listening to Al Green and attempting to grok the ASP.NET MVC Framework in fullness. I have not been looking for a job. You see, on Monday of last week I had a three hour dinner with a hiring manager which ended with us agreeing to work together.

Because I have been around the block before, I did not crow from on high that I had found a job. Nothing is real until it is written up and signed by all parties. I know this, but NuSoft Solutions had been very forthcoming with me, to date. Prior to our dinner, this hiring manager had met with his superiors to confirm that my travel needs were acceptable. He called me to confirm that we were all on the same page regarding travel before scheduling our dinner meeting.

This morning, eight days after our meeting, I received word from my HR contact that I would not be hired. When I asked the reason, I was told that my travel costs would be too much. I find this scenario totally unprofessional, disrespectful to me and my family, and thoroughly unacceptable.

I am disappointed this morning, not just because I'm unemployed, but because this opportunity was such a good fit for me. I want, most of all, for my next position to be a good opportunity for my employer as well as for me. I know that I would have made very positive contributions to this organization, while working on a personally satisfying variety of solutions and technologies.

I will not slander NuSoft Solutions, but if any of my contacts in the developer community ask me about the company I will relate my experience and have them draw their own conclusions.

With all that said, I am still looking for a challenging and fulfilling new opportunity. Please have a look at my resume and contact me if you know of any appropriate opportunities. Finally, if you are reading this because you are considering me as a job candidate, please perform thorough due diligence before offering me a position.

Cheers,

++Alan

 Saturday, 03 November 2007

Visual Studio as an Application Platform

Josh Holmes blogged about Microsoft as a platform company rather than an application company.  He referred to VSTO as making Office a platform for other companies to develop applications.  He further mentioned Facebook's recent success as a platform for others to extend.

I heartily agree with everything that Josh is saying.  I think I heard the same argument a few years back.  Jerry Pournelle has said for years that while OS/2 was the better OS technically, IBM wanted to sell the SDK, while Microsoft was slipping Windows SDK CDs in every Comdex attendee's bag.

I especially endorse Josh's argument that Firefox is a better platform than Internet Explorer.  It doesn't have to be that way, but it is, for now.  Firefox has some flaws in its add-in model.  I keep expecting Microsoft to release a managed API like VSTO or the MPF for IE.

Software development is constantly in flux.  Should we build web apps, Windows Forms apps, Click Once smart clients, WPF or Silverlight apps?  For my eight years as a software developer, I have built applications that leverage the power of the desktop computer.  I like desktop apps.  I use web apps, like gmail, del.icio.us and Google Reader, but I prefer a rich desktop application UX.

Perhaps I'm becoming a curmudgeon, but AJAX doesn't excite me.  It's still just JavaScript, and it's still slow.  I'm not foolish, I realize that the trend will continue to be leveraging the web as a platform, as more previously desktop only applications move into the browser, and I don't think this is a bad thing.

What I know is that no web app can completely duplicate the rich UX of a desktop application, no matter how many smart people argue otherwise.  I use OWA frequently, but it is not a replacement for Outlook.  In fact, I think Outlook is the best example of leveraging Office as an application platform.  The most recent release of VSTO made creating Outlook plugins significantly easier.

If I were still creating line of business applications as a consultant, I would be adding an Outlook dashboard to every client's system.  Check out TeamLook for an example of what I'm describing.  I keep expecting Microsoft to purchase Personify Design and make Juan independently wealthy.

As I examine my own computer usage I have identified one other desktop application that I believe will not be moved entirely to the web.  That application is Visual Studio.  I use it daily, and I cannot imagine an equivalent experience in a browser.  That is why I have been so stoked about VSX since I first heard about it.

I'm not sure the message has traveled throughout the developer community, but the new Visual Studio 2008 Shell turns Visual Studio into a platform for new application development.  It takes some explaining, but think of Visual Studio as a framework for building an application.  VS handles the main screen, and most of the plumbing, and you as the application developer focus on adding business value.

I'm not saying that the Visual Studio Isolated Shell is the right solution for every smart client application, but if the problem domain fits the Visual Studio tool and command metaphor, then it is worth your time to investigate.  I'll be speaking about exactly this topic on November 10 at the Memphis Day of .NET.  I'll also be blogging on Cave Markings about the progress I have made in exploiting the VSX tools for application development.  Stay tuned, the future is bright!

++Alan

What's Up at Windows Live?

I don't write blog posts from my desktop PC (or anywhere else, honestly) very often.  I wanted to make a post about some progress I made with the VSX, but I noticed I had an old beta of Windows Live Writer installed on this box.

I downloaded what appeared to be the installer for Live Writer here.  Upon download completion, I began the install only to be prompted to set my default home page and my default search provider to MSN and Live search respectively.  While I don't like an installation routine trying to change unrelated settings, I will credit the Live team for at least prompting me.  I won't install anything from Yahoo after they changed my home page and search provider without asking.

Moving on, I encountered a screen asking if I wanted to install additional software with all the boxes checked, of course.  I unselected the additional packages, and looked for a "next" button without success.  I tried cancel, but that wanted to exit the whole install.

I stared at the same dialog while it apparently checked to see if I had Messenger, Writer and Sign-in Assistant already installed.  I don't why it took so long to check, it obviously new they were installed because they weren't listed in the additional products section. 

This "Checking for installed products" went on for far too long.  Eventually the installation began, with an update to Messenger that I did not ask for, nor particularly want.  Why does Microsoft continue to insist that they have the right to install un-requested updates on my machine.  At least with the Microsoft Update site I can decline updates.

In the end I have the new version of Windows Live Writer that I wanted.  It "only" took 41 minutes to install!  What is up with that?  Who thought this would provide a good UX (user experience)?  WTF?!?!?

Grrrrr,

++Alan

[Update] It appears that I took issue with the install experience the last time I updated my Live Writer install.

 Thursday, 05 July 2007

When the Pattern Is Its Own Anti-Pattern

I'm totally digging Alex Miller's "Patterns I Hate" series.  So far he's taken down Singleton and Template Method.  I love to study patterns and "best practices" in general, but I realize they can do harm when slavishly copied in inappropriate contexts.

While on the topic of Patterns, I must give a shout out to my co-worker Geff Ivey.  I mentioned my liking of Design Patterns Explained as an alternative to the GoF, and Geff convinced me to finally take a look at Head First Design Patterns.  I'm sure this book isn't for everyone, but it was useful to me.  They finally helped me to wrap my head around Model View Controller.  They did it better than the Pragmatic Programmers, or Martin Fowler, although Fowler has more context on the evolution of the design.

Anyway, Alex appears to be a fan of dependency injection, which will soon be promoted by agile practitioners, as a cure for cancer, or at least cancerous code.  Alex has some excellent, thoughtful comments.  You should read them, highly recommended.

Enjoy,

++Alan

 Wednesday, 06 December 2006

UML Sucks (Really!)

I recently received a comment on my blog about a comment I made on another blog.  Ain't the Internet great?

Here's the response I sent:

Hello Nick,

Thanks for alerting me to the need for a contact link on my blog. :-)

While I don't use UML, and neither do any of my coworkers, I have mixed feelings about the need for it.  It seems perfectly reasonable that we should agree as an industry on a common set of symbols to represent OOP concepts, but UML has a typical "design by committee" feel. 

In his comments to the "5 Books" post, Jonathan Allen brought up something that I was aware of,  but never expressed precisely.  He said that the object model is the most malleable part of the design.  This is absolutely true.  This is actually the conceptual basis for iterative, agile practices.  The most critical aspect of the initial design, in my experience, is the interface between the UI and the object model.

While changing the UI is frustrating for users, it is not a technical challenge.  Refactoring the middle tier requires discipline to avoid introducing errors, but should not affect other parts of the system.  It is a well designed interface contract that makes for an extensible system.  This is why SOA with its service contracts is appealing.

Unfortunately, UML doesn't address interfaces (or at least poorly addresses them).  It seems obsessed with minutiae in a parody of academic distraction.  The only time I see UML in my daily development is in technical books and articles, and even then a Visio diagram would usually work better.

With regards to your objective of developing "ways to improve UML interaction to be more practical," I encourage you to ignore UML initially and define your problem clearly.  It seems to me that the problem does not involve UML, but the need for communication between developers, sometimes from different cultures, and on separate continents.  You are most likely interested in the visual display of information as it pertains to object oriented analysis.

If I am correct in my assumptions, then I do have some resources to recommend.  As I mentioned in the blog comment that you referenced, Peopleware is essential reading for understanding the human interactions surrounding software development.  For understanding objects, and by understanding I mean grok in fullness, I have found nothing better than The Object Primer.  Finally, when it comes to the visual representation of information, there is only one person you need to study, and that person is Edward Tufte.  Tufte makes mincemeat of systems such as UML.

If you are looking for a software solution to capture design ideas, then you should be familiar with mindmapping applications such as Mindjet or FreeMind.  I also have begun using Microsoft OneNote and have found it useful.

Cheers,

++Alan

 Tuesday, 07 November 2006

Please Don't Name a File Setup.exe

After doing all the downloading from my previous post I have one big request from the software development community.  Please don't name your install file Setup.exe.  Try instead Setup<Application Name><Version Number>.exe or some varient of that.

I just downloaded the Windows SDK and the file was named setup.exe.  I download all files to the same directory, and decide what to do with them from there.  I don't want to have to rename your file in order to prevent it from overwriting another file with the same name.

While I'm on this little rant, I'm tired of iTunes always downloading with the name iTunesSetup.exe with no version number.  It seems rude to me for Apple to assume users want to overwrite the previous version they downloaded, and thus lose the ability to roll back to a previous version if they don't like the upgraded "features."

Thanks, and have a nice day.

++Alan

 Monday, 02 October 2006

Oh, so that's what it takes...

For the past six years, I've been watching the national political debate with fascination and disgust.  I find the "Cult 'o W" stickers especially fascinating.  I wonder how far some of these folks, my friends and neighbors, will go in support of authority and conformity.

This past Thursday I was truly and honestly depressed.  I am a student of history and a patriot.  I love this country and its founding principles.  I have never found evidence of a society with more freedoms and opportunities for a population as large and diverse as the United States of America.

Last Thursday, the Senate voted to dispense with protection of our freedoms guaranteed by the constitution in preference for a more monarchial concentration of power.  I was disgusted.  I wondered if there were any patriots left in Washington D.C.  I again wondered how far people would go to maintain membership in the cult.

Friday, we got the answer to my query.  People are naturally parents first, and Republicans (and Democrats) second.  The cover-up of the sick, predatorial behavior of one congressman has shown the threshold for blind conformity and rationalization.

Michele Malkin is just to the left of Anne Coulter, who in turn is just to the left of Attila the Hun.  Ms.  Malkin is in my estimation a crackpot.  Even she had this to say about the Foley scandal:

There is a time and place for attacking the Dems and the MSM. Now is not that time. Parents need assurance that their kids are safe on Capitol Hill. If Beltway GOP elites can't understand this, they are beyond hope.

I couldn't agree more.

Lest I think that humanity has triumphed, Matt Drudge is around to remind me that some people have no integrity, but only want to be liked by whomever they consider to be the "cool kids."  Here are his truly disgusting remarks on the Foley matter:

And if anything, these kids are less innocent — these 16 and 17 year-old beasts…and I've seen what they're doing on YouTube and I've seen what they're doing all over the internet — oh yeah — you just have to tune into any part of their pop culture.  You're not going to tell me these are innocent babies.  Have you read the transcripts that ABC posted going into the weekend of these instant messages, back and forth?  The kids are egging the Congressman on!  The kids are trying to get this out of him.  We haven't got the whole story on this. 

There you have it, these teenagers were asking for it.  It's their own fault.

To the rest of my countrymen who are as genuinely appalled by the cover-up of this horrible man's actions as me, let's work together to make this a country our children can be safe in.  While we're at it, let's make it a country they can be proud of too.  I would be proud to work with any other American to make that happen.

Peace,

++Alan

 Wednesday, 26 April 2006

Everybody Lost in the Cartoon War

Back in '93 I was one of the Sunday school teachers in a class called "Church Across the Street."  This was a terrific curriculum for Sixth Graders.  We would study a religion or denomination for a week or two, then we would attend a service.  It was extremely educational for the students and the teachers.  I began attending the Episcopal Church as a direct result of my involvement in this class.

When we studied Islam, we visited the local Mosque.  It was Awesome.  I didn't like that the girls had to use a separate entrance, and cover their heads.  Females also prayed in a separate room.  Aside from the gender issues, my experience was totally positive.  The reverence for God was palpable.  Multiculturalism is not just a PC term in a US mosque.  There were men of every color worshiping fervently together.  I was floored by the experience. 

We had an adolescent boy show us the customs for ritual cleansing and explain their symbolic and practical purposes.  This young man had a very strong sense of identity and belonging.  His life had value and meaning.  I don't have anything against Islam. 

What continues to irritate me is ignorance.  Fundamentalism of all kinds is ignorance.  There is no inerrant scripture. Even if there were, we each would have the choice if we wanted you use it to direct our choices.  I follow the premise of a Presbyterian minister that was quoted to me:  "I take the Bible seriously, not literally."

Nobody wins when we give in to hate, fear and ignorance, and the result of the Mohammed cartoon brouhaha is that we collectively gave in.

You can find a good post-mortem here.

++Alan

 Wednesday, 15 March 2006

Leadership

It is clear to me, that Russ Feingold and Jack Murtha are the true leaders of the Democratic Party.  All of the current so-called "leaders" should resign immediately.  I admire both these men for speaking their consciences in Washington where everyone else is busy reading poll results.

++Alan

[Update] I forgot Harry Reid.  He's got some backbone too.

 Wednesday, 08 February 2006

Is this Islam's fault?

I'm trying to sort this one out.  When the law of the land is inhumane, who's fault is it?  I believe the person that opened the valve on the poison gas at Auschwitz is a culpable as Adolph Hitler for the deaths of innocent people.  If a person igonres the humanity of another, it is that individuals fault, not their religion, or any other excuse they offer.  At least, that's what I think this morning.

++Alan
 Monday, 06 February 2006

Deal With It

I’m a bit put out today.  I am exposed daily to information that offends me.  It may be news about my government breaking the law to violate my privacy.  It could be the obscene quarterly profits announcement of a Mega-Corp.  These things can annoy and sometimes even anger me. 

I’m not immune to being offended when someone criticizes my religion.  The Episcopal Church has received plenty of misleading, inaccurate and just plain bad press in the last two years.  Why does this matter?  I don’t attack someone’s embassy when they offend me.  I don’t assume that I have the one true perspective and anyone that disagrees with my way of seeing the world should die.

If you are Muslim and offended by these cartoons, I apologize.  I don’t generally seek to insult people.  If you are Muslim, and think I should die for posting them on my personal website, well then you can kiss my White Anglo-Saxon Protestant ass.

Cheers,

++Alan

[Update]  Follow these links for more info:

http://memri.org/bin/latestnews.cgi?ID=SD108806

Rioting with well-planned spontaneity

We are all Danes now

My favorite so far, with high quality versions of the cartoons:
Mohammed Image Archive

http://www.sorrynorwaydenmark.com/