An interview with Rob Howard
by Douglas Reilly
When I met him, Rob Howard was working on HTTP runtime, error pages, caching, session state and web services as part of Microsoft’s ASP.NET team. So to say that Rob knows ASP.NET is an understatement. Just as important, Rob understands how to use ASP.NET and other tools, including ADO.NET and SQL Server, to create sites that manage massive loads. The ASP site is a good example.
After several years, Rob began easing his way out of Microsoft, first by telecommuting from Dallas and then by starting a new company, Telligent Systems. Telligent is best known for its Community Server product, which encompasses a number of individual products, including the forums engine used on the ASP site, the weblogging system previously known as .Text, and the image management system that used to be called nGallery.
Telligent Systems has grown at an amazing rate and is still looking for qualified people to join its team. As if the chance to work with Rob were not enough, the company employs a number of other notables, including Scott Watermasysk and Jason Alexander (not that Jason Alexander). Scott is the father of .Text and a fellow resident of my section of New Jersey, and Jason created nGallery.
Were I to decide to move on to full-time employment, Telligent Systems would be number one on my list of places to look for a job.
The following questions were answered by Rob via email.
Doug: You worked at Microsoft for quite a while. How did the company change during your tenure?
Rob: Microsoft is an amazing place. I’m sure I speak for a lot of developers when I say that what I do has never been work, but rather something I wake up looking forward to each day. Microsoft understands and embraces those types of individuals, which makes working there that much more fun. It’s something we’re trying to mirror at Telligent.
How Microsoft changed in the years I was there is a difficult question to answer. Microsoft is constantly changing by pulling itself apart, analyzing the pieces, and reassembling itself. It’s a dynamic and fluid company. It was common to see a re-organization at least every 12 to 18 months. Change was one of the few constants.
Doug: The most interesting interviewing process I ever went through was conducted over several hours during which I was in front of a whiteboard explaining how I would design a word processor. I later learned that the interviewers were industrial/organizational psychologists with only a passing understanding of programming, and they judged applicants’ abilities not by the specifics of their answers, but by how they approached the problem. The net effect was one of the best development teams I have ever worked on.
The hiring process at Microsoft is legendary. You recently blogged about how you use some of the same techniques at Telligent Systems. Can you talk about the techniques you use?
Rob: Hiring is an intensely difficult process, and it’s one of the most important decisions an organization will make. I don’t want to discuss specific details of our hiring process, but it mirrors Microsoft’s: There are five to seven interviews for a position, all interviewers get a yes/no vote, and a single no vote means no hire.
While I’d like to say that interviewing is a scientific process, it’s not. It is subjective based on limited information. Malcom Gladwells’ book, Blink, talks about decision-making based on thin-slicing information. An interview process is a great example of having to make critical decisions on limited data. I usually know within the first two to three minutes of an interview-before the technical interview starts-whether or not I’ll hire the person.
The differentiators for me have always been experience and how people learn. Experience is obvious; how people learn is not so obvious. I’ve always found that the best hires are the people who are self-motivated and self-directed. People who write, present, run user groups, participate in communities, or write applications in their spare time are the ones with a passion for what they do.
Once aptitude is established, it’s a matter of fit: How does the person deal with a large amount of pressure in a situation that can’t be resolved? How would he or she work with customers? Would I give this person my pet project? Would I learn from him or her?
The blog post you mentioned gives my opinion about what some people believe is a bad process: asking a bunch of stupid questions during an interview. The questions aren’t the point. It’s the opportunity, in the single hour you have with an individual, to make an important decision. The interview process is not about selling the candidate on the job. That should have been done already. The process is about figuring out if the candidate is the right fit.
Jim Collins book, Good to Great, talks about the importance of getting the right people. Once you have the right people you can go about solving the problem.
Doug: When you began to merge applications into Community Server, including the database aspects of the system, how did the styles of the individual developers play into the unified database design?
Rob: The database founding for Community Server didn’t require a significant amount of reengineering. The existing forums data structure was so good that with minimal design modifications we could abstract the structures into a more generic data-storage system. Both nGallery and .Text were rewritten to take advantage of this data model. The data design evolved along the way too, but not as much as one would think given the complexities of three applications merged into a single system.
It took about three months of experimentation and another three months of effort, but the result was a stable, robust and scalable database design. For version 1.1 of Community Server, we made many changes to tune the application for performance. About 80 to 90 percent of that work was in the database, but the number of structural changes was minimal. Mainly we tuned procedures and indexes.
Doug: One of the biggest issues among SQL Server developers is whether or not to use stored procedures. You have stated your opinion on this in your blog. Can I presume that nothing has changed your opinions on the subject?
Rob: The dynamic SQL versus stored procedures debate is the Roe v. Wade of software.
My opinion has not changed: The majority of the time, stored procedures are the best choice for accessing the database. If stored procedures can’t be used and dynamic SQL must be used, parameterized SQL is preferred.
At Telligent we’ve taken over several projects to help turn aging or failing projects around. Dealing with projects that inline all of their SQL code versus encapsulating that SQL in stored procedures is always a nightmare. Access to the database is unfettered; you don’t know where or how the database is being used. And tuning the data access, SQL, requires recompiling the application. Stored procedures are akin to APIs that a developer writes, but for the database.
The argument can be made for dynamic SQL too. There are cases in which the limitations of T-SQL ensure that a dynamic SQL statement is easier than a stored procedure. Our Community Server code base has tons of examples in which we use dynamic SQL, although even the dynamic SQL gets passed to a stored procedure to be executed.
There have been great debates on this topic and some opinionated and passionate debaters. Stored procedures are not always the right answer, but they are often the best choice.
Doug: You recently wrote a column on performance tuning, and you used my favorite and perhaps the most underused SQL Server 2000 utility: SQL Profiler. How often do you fire up SQL Profiler, and are there any tips and tricks you can offer?
Rob: SQL Profiler is one of the most important tools developers can use to improve the performance of their web applications, assuming, of course, that the application uses a SQL Server database . Any time your application has to go “out of process” by calling a web services, remoting call, database call, and so on, you’re incurring a large performance penalty. By using SQL Profiler, you can understand how you’re using the database, what SQL is performing poorly, and tune it accordingly.
My favorite way of tuning the performance of an ASP.NET page is putting it under load using Application Center Test, and then watching performance in SQL Profiler. Next, I’ll open SQL Query Analyzer and tune the stored procedures or indexes and re-run the tests.
SQL Profiler enables you to measure the performance of your data access. Once you have a measurement you have a tool with which to judge improvements.
Doug: The changes to the tools included with SQL Server 2005 are dramatic. How would you rate the tools and do you have a favorite?
Rob: My favorite is the SQL Web Administration tool. Did I mention that Telligent is building that one ? Seriously, I haven’t formed an opinion yet. My initial take on the early alphas was disappointment; the tools felt a little too heavy. I really like the lightweight-focused nature of Query Analyzer and SQL Profiler, but I haven’t looked at the tool set in the last six months.
Doug: What do you think about using VB.NET or C# for stored procedures? Do you think it will be, on balance, a good thing?
Rob: Of course it’s a good thing. Anything that makes writing software easier is a good thing. I’m a little more interested in some of the new data-aware languages. These seem to have a lot of promise.
Doug: When you program in .NET, what is your favored language?
Rob: C#. When I was at Microsoft I used C# and VB.NET. It’s nice to focus on just one now. It’s not a knock against VB.NET, but C# is a better language for me, just as VB.NET is probably a better language for other people.
The VB.NET versus C# language debate is silliness. They are equivalent for all practical purposes, and at the end of the day it boils down to personal preference. At Telligent we use C# unless a client asks otherwise, for no other reason than consistency.
Doug: There have been a number of blog posts, even petitions, to bring back Microsoft support for VB6. What are your thoughts?
Rob: Here lies VB6. It helped sway many developers to the Microsoft platform. May it rest in peace. I’m sure I’ll get flamed by someone for that. It’s a JOKE!
There should be a way to escalate core problems that are uncovered with VB6 for existing applications. VB6 should not be used for new development, however. By discontinuing support, Microsoft is making a clear statement that all new development should be done with VB.NET.
Doug: You are a Microsoft Regional Director. How did you become a Regional Director and what do you think of the program (www.microsoftregionaldirectors.com/Public/rdFindNC.aspx)?
Rob: I became a Regional Director soon after leaving Microsoft. It’s a great program in concept, but Microsoft could do more with it. Not many people inside or outside of Microsoft understand or know what it is.
Microsoft has two programs to recognize influencers: Most Valued Professional (MVP) and Regional Director (RD). There are thousands of MVPs but only a few hundred RDs. MVPs are well known and the program is broad and targeted to recognizing contributions in the Microsoft community.
Regional directors have deep industry experience and understand the Microsoft platform at an advanced level. RDs have a passion for Microsoft technology and exuberance for converting others to it.
Doug: What sort of work are you doing these days?
Rob: We recently announced the news server add-on for Community Server, which enables people to read/post to a Community Server system using any RFC-compliant news reader, such as Outlook Express (http://www.communityserver.org). They can also work offline reading and replying to messages and syncing once they connect. We’re starting to play around with some new ideas for connected communities using this same technology.
Later this year we’ll ship List Express, an email listserv system for Community Server. With List Express we’ll flatten the community technologies. That is, you can read and post in news reader, read and post through a web interface, and do the same through email. We’re excited about List Express and what it means for our customers. It has been a long-time goal for many of us at Telligent.
We also do custom development. We’re working on a large ASP.NET 2.0 project for the art community. It’s going to be the largest worldwide portal, bringing together all manner of art brokers, dealers, galleries, and so on into a single location (www.artinfo.com). We have several other large projects that we can’t talk about quite yet.
Doug: Can you think of a cool tip or trick for the developers who will be working with the latest SQL Server 2005 Beta?
Rob: Easy: the ability of SQL Server 2005 to send notifications to applications when the results of a query, stored procedure or view change. For ASP.NET developers, this feature, coupled with caching, equals database cache invalidation. To be notified when data cached by ASP.NET is no longer valid will fundamentally change the way software is written.
Doug: What music do you listen to these days?
Rob: Coldplay, Counting Crows, Dave Matthews Band, John Mayer, David Gray, The Smiths, Frank Sinatra, Avril Lavigne, Jane’s Addiction, Kylie Minogue and Moby.
Do you know someone who deserves to be a Database Geek of the Week? Or perhaps that someone is you? Send me an email at firstname.lastname@example.org and include “Database Geek of the Week suggestion” in the subject line.