Select Quotes from Peopleware, Part 2

Allowing the standard of quality to be set by the buyer, rather than the builder, is what we call the flight from excellence.  A market-derived quality standard seems to make good sense only as long as you ignore the effect on the builder's attitude and effectiveness.

In the long run, market-based quality costs more.  The lesson here is,

Quality, far beyond that required by the end user, is a means to higher productivity.

If you doubt that notion, imagine the following gedanken experiment: Ask one hundred people on the street what organization or culture or nation is famous for high quality.  We predict that more than half the people today would answer, "Japan."  Now ask a different hundred people what organization or culture or nation is famous for high productivity.  Again, the majority can be expected to mention, "Japan."  The nation that is an acknowledged quality leader is also known for its high productivity.

Wait a minute.  How is it possible that higher quality coexists with higher productivity?  That flies in the face of the common wisdom that adding quality to a product means you pay more to build it.  For a clue, read the words of Tajima and Matsubara, two of the most respected commentators on the Japanese phenomenon:

The trade-off between price and quality does not exist in Japan.  Rather, the idea that high quality brings on cost reduction is widely accepted.

Peopleware, pg. 21, The Flight from Excellence

How I Got Started in Software Development

I've decided to take Mike Eaton's challenge and answer some questions on how I got started in software development.

How old were you when you started programming?

I was 18.

How did you get started in programming?

When I was looking into possible majors prior to starting college, it came down to two choices: Psychology or Computer Science. I thought psychology was more interesting at the time, but computer science was the more practical choice. (Come on, we all have a relative or friend who graduated with a psychology degree, but ended up working in a restaurant or something.) The first time I saw source code was in the second semester of my freshman year of college. I had no idea what it meant to program a computer up until that point.

What was your first language?

Java.

What was the first real program you wrote?

I'm not entirely sure what you mean by "real" program, but....I believe it was a Java console application where the user could type in a number of pennies and the program would print out how many dollars, quarters, dimes, nickels, and pennies it broke down into.

What languages have you used since you started programming?

Java, C, C++, C#, Assembly, SQL, Prolog, Visual Basic, Common Lisp, Tcl, Bash script, MS-DOS script, JavaScript, Ruby

What was your first professional programming gig?

My first professional programming gig was developing extensions for a CAD/CAM software package called Unigraphics NX in C, C++, and C# for a die company.

If you knew then what you know now, would you have started programming?

Definitely. I really can't imagine doing anything else for a living. I get to be creative and make things out of thin air on a daily basis. I get to work with incredibly smart people on challenging problems that often require intense intellectual effort. And all from the comfort of an air-conditioned office!

If there is one thing you learned along the way that you would tell new developers, what would it be?

Developing software in the real world is almost nothing like developing software in the academic world. For example, you won't have clear, unambiguous requirements like you had in college. Rather than just doing things, you'll spend an enormous amount of effort just trying to figure out what you're supposed to do. In general, your people skills end up being more important than your technical skills.

What's the most fun you've ever had programming?

In my sophomore year of college, I took a class taught by Dr. Scott Grissom, in which we were split up into small teams and collaborated heavily on complex (at the time) programming assignments. Prior to this class, I was really questioning my choice of Computer Science as a major and really wasn't enjoying programming. The more complex programming challenges that I encountered in this class and the great interaction finally made something click in my head. I got way into the assignments, working night after night on my programs, and I ended up acing all the assignments (and ultimately the class). Programming came quite naturally to me and I started to really enjoy the challenge. That class convinced me that I had found my calling.

Select Quotes from Peopleware, Part 1

The main reason we tend to focus on the technical rather than the human side of the work is not because it's more crucial, but because it's easier to do.  Getting the new disk drive installed is positively trivial compared to figuring out why Horace is in a blue funk or why Susan is dissatisfied with the company after only a few months.  Human interactions are complicated and never very crisp and clean in their effects, but they matter more than any other aspect of the work.

If you find yourself concentrating on the technology rather than the sociology, you're like the vaudeville character who loses his keys on a dark street and looks for them on the adjacent street because, as he explains, "The light is better there."

Peopleware, pg. 5, The High-Tech Illusion

Where's the N-ovation?

When was the last time someone took an open source project that originated in the .NET space and ported it to another language?  I might be clueless, but I can't think of a single time it's happened.

Is Microsoft losing the Alpha Geeks? The more relevant question is: Were they ever here?

If you think the world needs better software managers, then...

If I subscribe to the notion "Be the change you want to see in the world", and the change I most want to see in the (software) world is better managers, then what conclusion does that lead me to?

I think I could paraphrase Giles Bowkett fairly and come up with this:

If you think the world needs better software managers, then be that manager.

Hmm...

West Michigan Day of .NET 2008 Recap

Twitter

I saw many "twitter people" in the flesh for the first time, which was a very strange experience.  From memory, these include: mjeaton, joshholmes, jamesbender, danhounshell, stevenharman, timwingfield, sillyevar, pandamonial, and patrickfoley.  It was cool to watch many of the attendees live-twittering the event.

I Need to Speak

One of the great revelations that occurred to me and kept playing on my mind during the event was that I really should have been speaking/presenting.

This is in no way intended to take away anything from the presentations that I witnessed, but I came away feeling very confident that I could give a presentation at least as good as the ones I saw.  While I watched the presentations, I took notes on what bothered me about them, and what I would have done differently.  I thought a lot about what I would like to see in a presentation that I didn't see.

That's not the only reason I'm convinced that I need to speak next year.  It also occurred to me that most of my twitter friends who attended were also speaking at the event.  In fact, I didn't see much of them because they were either hanging out together in the "Speakers' Room" or giving presentations.

I came away convinced that people who get the most out of these things don't go for the technical content.  They go to talk to people and be seen.  The sessions are very much secondary, or perhaps even irrelevant.

So I'm planning to speak next year.  I'm not sure what the topic will be, but I already have a few decent candidates in mind.

Feedback for the Organizers

Ironically, my first bit of feedback would be to give us more time to give you feedback! :-)  They made a point to say how important our feedback was, and then gave us all of two minutes to fill out the feedback forms!  Also, don't expect people to write their names on their feedback forms.  People are less likely to honestly criticize you if they can't do it anonymously.

My second bit of feedback concerns the Wi-Fi.  I'm not sure if there is anything the organizers could have done about this or not, but the Wi-Fi...well...sucked.  When I fired up my laptop for the first time at the event and opened up Firefox, I was greeted with a big, ugly registration screen from Davenport University telling me that only students and faculty were allowed to access the Internet.  Are you freakin' serious?!  After several panic-filled minutes, I finally figured out how to get around it, but it was not at all obvious.  I realize there's probably nothing the organizers could have done about that, but at least distribute clear directions on how to get around it.  Also, when I did finally get connected, it was very slow.  People nowadays love to twitter from these events, and if they can't get online, then they can't twitter.  That's a serious bummer.

My third bit of feedback would be to make the labeling of the session rooms less confusing.  I actually wound up in the wrong room for the first session and missed a presentation I really wanted to see because the number outside the door did not match the number that the organizers intended for it.

My fourth and last bit of feedback would be to (if at all possible) put the "Speakers' Room" further away from the session rooms.  At one point, I was attending a session in a room that must have been right next to the speakers' room.  We were absorbing a tremendous amount of noise, to the point that we could barely hear the presentation.

But, keep in mind these are just a few criticisms of what was overall an awesome event!  The organizers did a fantastic job overall.

Summary

Overall, it was a great event, and I'm really glad I decided to go.  The venue, Davenport University, was very nice and modern.  There was a huge amount of variety in the sessions, covering wildly different areas of the Microsoft universe.  I got to see a lot of cool people in person and be entertained at no cost.  I'm looking forward to next year.

 

P.S.  For anyone who met me for the first time on Saturday, I apologize for my lack of conversational skills.  I'm not adept at the art of small talk, and I'm aware of that.  I'm actually fairly interesting once you get to know me, but I guarantee I won't wow you with my charisma at our first meeting.

We've Turned XML Into A Crappy Programming Language

[The .NET and Java communities] have had this trend in which we started jamming everything into XML configuration.
...
We’ve turned XML into a programming language, and a crappy one at that.
...
With the ASP.NET MVC project, we’ve taken the approach of Code First, Config Second.

- Phil Haack, Senior Program Manager for ASP.NET MVC

 

I know this isn't a new idea, but I'm just glad to see that a Microsoft employee who is guiding the direction of a very important product "gets" the emerging trend of DSLs and is actively countering the community's past sins regarding XML.

foreach

It was interesting to me that one of the comments on Phil's post mentioned MSBuild as an example of XML gone wild.  I have never used MSBuild, but I have used NAnt, which is very similar in that you basically find yourself programming in XML at some point.  When you find yourself reading  documentation on how to properly construct <if> and <foreach> XML elements, you start to get this strange feeling.  "Wait a minute.  This doesn't feel right.  Can someone please remind me why the hell I'm doing this in XML?"