Benjamin Hysell – Software, Projects, and People Rotating Header Image

Blogroll

Alan Cooper

Next up on my digital reading list:

http://cooper.com/journal/

Alan Cooper is one of my software heroes.  Actually now that I think about it I don’t have any other software heroes, so by default he is my software hero.

::insert you are the wind beneath my wings::

He had me at hello…ok I need to stop, my wife may actually read this one-day and I’d rather not freak her out.

I found Alan Cooper while strolling through Channel 9, a website hosted by Microsoft as part of the Microsoft Developer Network.  Channel 9 hosts all sorts of videos, most of them from inside Microsoft focusing on new innovative technologies produced by the Redmond giant.  However, one video caught my eye:

http://channel9.msdn.com/posts/Charles/Alan-Cooper-Questions-after-his-keynote/

I’ve shared this video with most of my co-workers, and by shared I mean I sat them down, wired their eyes open, and insisted they watch it until they memorized it.  That was one wacky causal Friday…

Cooper hit home one fundamental truth for me in that video…to paraphrase: users do not know what they want so it is our job to tell them.

In a world where we developers are dependent on our customers this is a very bold statement.  This view of the world has empowered me to stand up and shout at the top of my lungs, “Your desire to have pictures of puppies and unicorns on the user interface is a horrible idea, and I won’t stand for it anymore!!!”

Now, normally when I’m having this conversation with my clients I have already ripped off my shirt Hulk style and I’m standing on the conference room table.  I then proceed to take down the projector that is hanging from the ceiling, you know…to make a point.

Actually, Alan Cooper doesn’t advocate we bring an uninformed opinion to the situation; rather, we need to work with our clients to identify who is going to be using our software on a daily basis.  If we design our software for the people who are going to use it, they will likely enjoy our software and want to use it.  This sounds like a fundamental, day one CS 100 idea, however it is rarely taught that we should design products for the people who are going to use them, and not just ourselves.

This type of design is known as Interaction Design.

I have strived to incorporate many of Alan’s key ideas, such as:

  • Interview people who will be using the product, find out their goals, motivations, desires and abilities
  • Develop personas given the data gathered from the interviews.  These personas will help shape the product and prevent the all too common argument about ‘the user’.  There is no more ‘user’, the persona has a name, a family, and hobbies outside of work.
  • Fully defining our users in the form of personas prevents developers/managers/clients from taking a person using the system and having them perform all possible system actions.  Since personas are well defined we can say, ‘the new feature you want to add for our main persona isn’t a good idea because our persona doesn’t have the skills to use this new feature.’
  • Take the personas and define what ‘done’ looks like.  This involves designing scenarios where the personas are using the system and defining the workflow the personas would use to accomplish their goals.  These workflows can then be taken at the end of the project and executed by real users to ensure the product does what it was defined to do.

I will more fully explore using Alan’s personas in a later post.

Give me a minute to hawk Alan’s books,  The Inmates Are Running the Asylum: Why High Tech Products Drive Us Crazy and How to Restore the Sanity.  Inmates is the book you read and then give to your boss so they understand what you are trying to accomplish.  Alan’s other book About Face 3: The Essentials of Interaction Design tells one how to actually go about and implement his ideas in a project.  I highly suggest both books be added to your bookshelf along with his company’s blog to your RSS reader.

Coding Horror!

Next up on my digital reading list:

http://www.codinghorror.com

I believe I found Jeff Atwood’s blog through Joel’s Reddit feed.  Jeff’s articles kept popping up and I found my self always clicking through to read his articles.  After much deliberation I finally decided to add his RSS feed to my Google Reader.  Jeff has a very easygoing tone and relaxed style to presenting his ideas that I believe create a relaxed atmosphere around his articles.

Jeff is not without his detractors, me being one of his detractors, I should know.

I am finding he will drastically oversimplify a complex idea and then proceed to base his conclusions on the oversimplification, for me, leading to what I believe is the wrong conclusion.

A few articles I believe Jeff was off the mark:

XML: The Angle Bracket Tax

Understanding Model-View-Controller

As with all bloggers, check their facts and don’t take every entry as gospel.

A few of my favorite posts include:

Hardware is Cheap, Programmers are Expensive

My father would have cringed reading that article…he learned his programming chops on the original IBM PC.  My grandmother and grandfather both worked for IBM and were likely the reason we became an IBM household.  What is the easiest way to obtain a brand new, first ever PC?  Forget waiting in lines; know someone who works for the company.

::Actually, I have no idea how the launch of the IBM PC went, if they were hard to obtain or not.  I do remember being told we obtained one the year they were released.  My grandparents are not opposed to waiting in lines though.  I was called up in college by my grandmother asking me if I wanted a Sony PS2.  She and my grandfather waited in line overnight to get one and asked if I wanted it the next day.  They are more hardcore than me…the longest thing I have waited in line for is the Top Thrill Dragster at Cedar Point::

My father wrote all of the software he ever needed to run his practice in BASIC on that PC.  He even bought a compiler for BASIC from IBM.  His main application was so large he had to remove all of his comments so it could compile and run.  My father knew about resource constraints while programming and worked very hard around each problem he encountered.  It was this hard work of finding out how to squeeze every last drop of performance out of a computer that made him adverse to just throwing hardware at a problem to fix it.

::The main application my father wrote for his practice and other ancillary applications he used for diagnostic purposes were impressive for their day and time.  Some even to this day exceed what is currently available in the field of veterinary medicine.  Sadly, my father passed in late 2006 and we never had a chance to sit down and rewrite his code together like we planned so many times to do.::

Avoiding The Uncanny Valley of User Interface

Jeff explores why one needs to be cognizant of not only whom one is writing an application for, but also where the application is going to live and run.  Don’t try to make a web app that looks just like a desktop application.  If you do, people will expect desktop like performance…an expectation even the best web programmers will find hard to fulfill.

Your Favorite NP-Complete Cheat

This article raised the ire of many of Jeff’s commenters, but having not thought about NP-Complete problems in a very long time this article was a great refresher back into the subject.  I am a huge fan of not ‘re-inventing the wheel’, and any tool that I can get my hands on that allows me to say, ‘”Listen, this problem you want me to solve is impossible because it is very much like these other problems that 100s of people have also said are impossible,” is my kind of tool.  Turn on your best Yoda voice here, lazy not I am, practical I very much to be.

Lately Jeff has been distracted with a new venture he and Joel started:

http://stackoverflow.com/

For my money, this is the site for programming questions on the Internet.  Think of the site as a combination wiki/forum where questions are asked and answered.  The most popular answers get pushed to the top for easy reference.  I’ve been using StackOverflow to answer my day-to-day questions that pop up at work, with amazing results.

Follow me on StackOverflow from my profile

Check out the official blog for StackOverflow

Lastly, listen to their podcast.

Joel on Software

My next entry for my digital reading list:

http://www.joelonsoftware.com/

Joel’s been writing a blog since December 1999, I only know this because I went back through his archives and read every single one of his posts.  Madness?  Not quite, but close.  I forget exactly how I stumbled upon Joel, but once I read a few of his articles, I was hooked.  Go back and start at the beginning of his posts, or rather, read the best of the best; they are listed in a column on the right hand side of his site.  A few posts I continually go back to:

The Guerrilla Guide to Hiring.  I have based my whole interviewing technique off of Joel’s guide, (with a few tweaks… I’ll talk about my interview technique in a later post).  This is a must read if you are doing the interviewing, and is even a better read if you are sitting on the other side of the table.  Its almost like cheating, you know what they are asking you and why.  Don’t take me for one of those to game the system, however I always like to be prepared.

Honestly, if you were gaming the system an interviewer worth anything should be able to pick up on the fact you knew a little too well what they wanted to hear.  And if they didn’t notice the fact you were gaming the system I’m not sure you would want to work for that company.

Talk at Yale Series, parts 1 – 3.  I always like to know a little bit about who I am following/reading…take a peak into their past, see if their values match up with mine.  I use the same strategy when I invest in Mutual Funds.

::I like to think I’m a bright guy with decent values…and given unlimited time and energy to do my day job and trade stocks I think I could manage my own mutual fund.  Thus, I want to find someone who thinks like me, and they have the time to concentrate on the stock market.  So far this strategy has worked…well except for this whole recession thing going on right now.::

Know thy blogger and learn from their past.

Can Your Programming Language do This? This is a hard-core article about computer science, but Joel breaks down the concept of functional programming and why you need to know/understand what it means.  Once you grasp the concepts you now know enough to create your own Google.

I plan on citing Joel in a few of my upcoming posts, so take some time, go back, and catch up on his past works.

Go a head, I’ll wait.

Dilbert – He Isn’t Just for Engineers Anymore

For my first post of my digital reading list, I present you Dilbert.

I know what you are thinking…

Oddly drawn characters, situations you never find yourself in:

::unless you are an engineer, in which case try and feel for those who do not participate in our profession::

http://dilbert.com/strips/comic/1994-08-27/

And really, who could enjoy:

http://dilbert.com/strips/comic/2008-12-28/

Unless you are an engineer.  Sure, you could stretch your mind, put yourself in our shoes, but who has the time?  And who wants to work that hard while reading the Sunday comics?

Dilbert doesn’t even work for all engineers.  Its true, its true.  He is not everyone engineer’s cup of tea.  Sure, we can all commiserate about how painful Calc 102 was, but we can’t all agree on Dilbert.

I’m not going to lie, not every comic is a home run, even for a self-professed fan:

http://dilbert.com/strips/comic/2008-11-16/

That comic is currently number one on the all time best comics list.

What I want to draw you attention to is not the comics, but  Scott Adam’s blog.  Try out a few of his past posts, or rather check out my current favorites:

The subjects Scott chooses to delve into fascinate me.  Every day is a new surprise as Scott jumps from finance, to exploring the human condition, to the just plain funny.  Reading Scott’s blog will not provide you the next whiz-bang idea to present to your boss, but rather, Scott’s blog provides great insight on how to communicate ones own thoughts to the masses.

Scott has a natural, easy-going style that allows him to take his complex ideas and effectively present them to me.  I rarely find myself noodling around the same types of idea’s Scott has, i.e. what defines a friend, but I always walk away from reading one of his post feeling richer for the experience.

My ability to follow his sometimes rather arcane trains of thought is a credit to his writing style, a style I hope to learn from and incorporate into my own writing.

My Digital Reading List

At Viewpoint we do a yearly performance review to assess how the past year went, and to look forward to the next.  Around February we get together and bring in one’s direct supervisor, the director of engineering services, and a partner to discuss this last year’s performance, and set out goals for next year.  Being a direct supervisor, I’ve been on both sides of the table, performing reviews for my guys and being there for my own review.  I actually really enjoy the review process…a subject I plan to dive into in a later post.

I joined Viewpoint right out of college, and throughout those first couple years of my employment I flirted with the idea of going back to college and getting an advanced degree.  I remember in my second review I actually had two partners in the room discussing my future when I brought up the idea of going back to school.  The questions started immediately:

“What do you want to study?”

I was prepared for this, you don’t just go walking into a room ready to throw out you want to go back to school and not have a ready made answer, “I’m thinking of getting a masters in Computer Science/Electrical Engineering/Computer Engineering or possibly get a MBA.”  An MBA?  Yes, I threw out there I was interested in getting an MBA…now ask me what I was going to do with a MBA, go a head, I know you want to.

“What do you want to do with an MBA?”

Um…Um…Damn.  I’ve got nothing.

I had spent a good bit of time researching advanced degrees and realized that the courses needed for an advanced Computer Science, Electrical Engineering, or Computer Engineering degree did not really interest me.  In my day-to-day activities at Viewpoint I didn’t see where they would really fit in either.  For me and my career path, they seemed to be just certifications that I may never really use unless I went back out on the open job market.

An MBA on the other hand, now that had appeal.  With a MBA I could…I could…you know, I really couldn’t figure out at the time what I would do with an MBA.  I had gotten it into my head that the ability to manage the business end of the software business would serve me well, and the only place I would be exposed to that kind of training would be while obtaining an MBA.

However, the real reason I wanted an advanced degree…I needed to continue to learn and hone my skills.  Prior to joining Viewpoint I spent four years in college, now that I was out it was my belief that in order to continue to learn I needed to be back in school.

Plus I was scared of the box.

During the summer of my junior year I had a co-op at Keithly Instruments and saw first hand what happened as you aged in this business and you chose not to keep your skill set continually evolving and up to date.

You end up in a box.

They actually put you in a box in the back of the office; there is a ceremony and everything.  They place you in a huge cardboard box, cut out a few holes for air and to run network cable, and there you sit until the next downsizing.  The nice part about being in a box during a downsizing is that packing up your things is very easy-they are already in the box with you.  No fuss, no muss.

I saw a few engineers at my time in Keithly who lived in ‘the box.’  They decided at some point in their careers they had learned all they needed to learn and they almost actively refused to learn anything new.  They had mastered a set of skills and were going to run those skills right into the ground.

Actually living in the box isn’t such a bad place to be.  People from all over come to you and ask for advice, you are, after all, most likely the ‘subject-matter master’ with all sorts of knowledge about whatever it is you chose to learn.  It is often the case you have hundreds of hours with your knowledge, its been battle tested time and time again.  It withstands criticisms.  No one questions you anymore.  You are The One.

However, over time fewer and fewer people will come and seek out your advice.  After all, technology changes and more than likely what you know has been improved upon with a new tool, language, and/or system.  Hell the worst-case scenario is what you mastered back in the day is now being taught to freshman in college in a 100-level course.  Once those kids reach the job market your job is less and less secure.  Entry-level salary is likely 10x less than what you are making.  Oh and by the way, they are too new to have found a box to move into.  They’ll do your job and three others with the energy they have.

Pack up your things, no wait don’t bother, they are already packed with you in your box.

I vowed to never, ever find ‘a box’.

At the time of this review I believed more schooling was the only answer.  Get an advanced degree and stay on top of the industry.  I shared my thoughts and the story of what I saw at Keithly with the partners that day.

::Trivia Question: What company bought the company where the partners used to work before they formed Viewpoint?  Hint: It rhymes with Teithly Tnstruments::

That day I was told by one of the partners:

“Formulate a plan on what you would like to accomplish if you went back to school.  But, reading and staying on top of the industry may serve you better.  We are like sharks, if we don’t continue to read as they swim we will die just like they do.  College isn’t cutting edge, there is a wealth of knowledge out there right now, for free too.”

That day I started reading anything and everything I could get my hands on.  Initially, my reading list was not all that impressive; I read Slashdot, but not much else.  Over time I believe I have developed a fairly impressive daily reading list that I will be sharing here in the next couple of posts.  If I’ve missed someone please feel free to add them to the comments section I’ll check them out and hopefully add them to my list.