Thursday, March 27, 2008

The Art of the Prototype

"Plan to throw one away; you will, anyhow.'' (Fred Brooks, The Mythical Man-Month, Chapter 11) This highlights a point that's often overlooked in software: it's impossible to fully understand a problem until you attempted to solve it; therefore, your first solution will always be lacking. In software we tend to assume that we can do a few case studies, put together some user stories, and then roll out a piece of software that will meet the needs of our users. This has led to some major disasters in software; for some shining examples, just look at the market of enterprise software.

These problems could be lessened if more companies would invest in a serious prototyping stage. I'm not talking about a PowerPoint presentation showing the imagined functionality of your software. I mean pulling out the rapid prototyping tools, creating something that meets the core needs of your users to solve the basic problem, and rolling it out to 20-30% of your users to watch while they use it for 6 months. When we do this, we are following Brooks' council in planning to throw away the prototype, but saving time and energy by not wasting a lot of time creating a tool that has a good probability of begin fundamentally flawed.

Thursday, March 20, 2008

Outsourcing is your friend

Enrollment rates in computer science dropped over 60% from 1999 to 2005. There are lots of theories attempting to explain why students are not choosing computer science, but one that has popped up assumes that students don’t want to enter a field which they perceive as being outsourced. That is to say, students believe that a degree in computer science will only prepare them to do coding jobs that have been shipped outside of the US in the past few years. Fortunately, this idea is easy to disprove.

First, it’s important to note that the idea that computer science graduates are only prepared to sling code is absolutely false (or, at least, should be). Universities strive to produce well-rounded students who can not only implement projects in code, but think about long-term sustainability of the systems they design and create elegant, algorithmic solutions to a problem. The jobs which require these skills are not being shipped across the ocean. The jobs that are leaving the US are typically pure implementation jobs which require less immediate oversight and are thus good candidates for remote work. The jobs which require close interaction with users, such as system design, or require higher levels of interaction with an organization’s management team are less likely to leave the US. These are the jobs for which CS graduates should be prepared. Therefore, US college graduates should not be competing with overseas workers for jobs that may leave the US.

The idea that jobs in IT are scarce is another falsehood. By most accounts, the jobs available for IT workers are only increasing, and are increasing at such a rate that the current supply of US workers can’t meet the need. Hence, companies are fighting over the ability to bring in foreign workers to fill their backlog of IT positions. Hence the problem the past two years with the shortage of H-1B work visas. For a qualified graduate student, there is no scarcity of jobs in IT.

The amount of jobs existing in the US and the type of jobs leaving should give CS graduates something to be excited about. As the lowest level of IT positions leave, and more interesting positions open up, students have more opportunity available to them than almost any other field.

Thursday, March 13, 2008

DRM Must Die

When Vista first came out, the copy protection on the system was lauded as the most advanced seen in the industry. Soon after, the copy protection was broken and it became possible to illegally run Vista on your machine. So the cumbersome verification system used by Microsoft does nothing to stop pirates and continues to annoy consumers. Such is the burden of DRM. The systems put in place to stop piracy only frustrate those consumers who want to legitimately use their content, and do little to stop those who wish to illegally distribute that same content. We see the same issues with the iTunes store and the new Blu-Ray format. Because consumers have now been burned by content that becomes unusable when you switch providers, consumers will hesitate from adopting new formats that employ DRM, which will hinder new markets such as the eReader market. Ultimately, businesses will realize the damage they are doing to their markets, but it will be a painful process.

Tuesday, March 11, 2008

Women in CS

As a woman in Computer Science, I have had a front row seat to determine, by personal experience, whether or not there exists discrimination in the field. After spending 5 years in the field (both in school and in the workplace), I have concluded that discrimination does exist, but mostly in a subtle, unconscious form, and not any outright hostility. For example, the most common discrimination I’ve experienced comes in the form of men who are uncomfortable working with women, for whatever reason. This is especially a problem at BYU, where many of the male students are married, and avoid working in a group with a woman. I have also experienced unconscious assumptions about my ability or desire to work, based on the fact that I am a woman. This happened while I was a tutor for CS courses and in my current position working for the Corporations of the Church. Fortunately, most men with whom I have worked are good people, and the discriminations I have experienced are certainly not career-altering or life-changing. I am convinced that most discrimination is completely subconscious and unintentional; therefore, the best remedy is a continuing awareness of the issue, and a commitment from men to fully include the few women that choose to enter the field of Computer Science.