CafePress.com was launched in 1999 to provide businesses and individuals with a way to sell customized printed merchandise over the Web. The service was originally built in Java, but in 2001 company CEO and founder Fred Durham made the decision to migrate to .NET.
"We were running into serious compatibility problems with the previous solution," said Durham in a 2001 Microsoft Customer Profile. "After an upgrade from the vendor, the issues still existed so we decided we could not wait any longer for the vendor to fix things and needed to find a new framework to develop around. Previously we had been using a combination of Java tools, runtimes, beans, and libraries. It became clear to us that a single framework would be far more productive. We wanted to get out of the cycle of maintenance and constant patching, and into new application development again."
The company implemented ASP.NET on Windows 2000 Server and SQL Server 7.0 to handle its monthly traffic of roughly 50 million hits and immediately noticed a difference, especially with development time.
"Project cycle times have been reduced to approximately one quarter of the previous development cycle times. That means more features and services for our users. With the .NET Framework, we can much more easily develop custom code for larger clients. It also means we offer more services and features at large. Again, this is because development times are compressed and the lines of code needed have dropped significantly, " said Durham in the customer profile.
It's been three years since the migration, so 15Seconds has decided to check in with CafePress.com CEO Fred Durham via e-mail for an update on the company's growth, the new challenges it faces, and .NET's ability to keep up with it all.
15Seconds:
Since you first moved to .NET in 2001 how much has your business grown in terms of clients, product offerings, and visitors?
Fred Durham:
We're more than four times larger in all regards. Our business has been consistently doubling each year, and we anticipate that will continue, if not accelerate.
15:
How has this growth impacted your technical resources? How have you adapted? What have you had to add or change to accommodate this growth? What have you not had to change at all? What IT challenges are you currently facing?
FD:
Change has naturally been necessary. We are at the inflection point where a single team cannot manage everything any more, so the big challenge is managing multiple teams all collaborating on a single product and effort. .Net itself presents very few issues, we've added a few servers since 2001 and upgraded the old servers (though I think they are still being used!). The primary challenges are human related -- organizing teams and effective communications.
15:
I see you are currently hiring. How many technical jobs have been added since your move to .NET? Have you had to restructure your IT department in any way? How and why? In what area(s) has .NET let you focus your hiring efforts?
FD:
When we moved to .Net we started over with one developer (me, actually), and slowly added back. Until about 2 months ago we had only 4-5 actual developers. We've now doubled the team and are continuing to expand, we still have 4-5 openings right now. We stretched the efficient single-team as far as we could, and are now creating a few smaller teams and building the management to support this style of parallel development. That's a pretty big leap, and I'm sure there are all sorts of theories and opinions on teams and dynamics. .NET has not really altered the hiring focus much except that it's the most popular platform so there's a ton of talent. I've also found that a lot of people that used to be adverse to Microsoft developer tools are embracing .NET because it's actually really good and rich and supports some pretty cutting edge development work. I give credit to Anders Heijlsberg, personally. The whole framework has a definitely old-school Borland and Delphi feel about it.
15:
Are Web services utilized anywhere in CafePress.com? If so, where? If not, have you evaluated using/offering Web services? Why or why not?
FD:
No. They seem neat, we just haven't actually had a use yet. As a Web site, we have a single deployment location. We're evolving so rapidly, we hate to publish APIs for anything to the world, because we would almost certainly want to break it a few times a year.
15:
CafePress.com was one of the "early adopters" of .NET. .NET 2.0 and Visual Studio 2005 are on their way, and there's a lot of discussion about Microsoft's next operating system code-named Longhorn. Have you been following these upcoming technologies, and at this time, do you see any perceived benefit they may offer CafePress.com?
FD:
I am very excited about 2.0. I would probably start switching over now if it had a beta of the quality of the initial 1.0 beta years ago. We do not use visual studio here, which to me looks like they did not have time to fix in the first release and felt like an old-school Microsoft product, sort of like the older IIS with the metabase - they love to make tools that are completely inflexible and unscalable. All early signs point to a new IIS and Visual Studio that start to match .NET, and become true tools in the true meaning of the word "tool". Anytime someone says "only 20% of the code" - I'm there! Updating the code behind model, page inheritance, new data model, and much improved deployment is all fantastic.
15:
If you don't use visual studio, what do you use and why?
FD:
We use notepad primarily. There are many reasons not to use Visual Studio, including:
- it's cumbersome and slow - draining productivity
- it forces you to work its way, which at least in this rev is not ideal. It's sort of the difference between bare-metal HTML and FrontPage. A decent developer can write beautiful HTML or .Net code much faster than the editor can, and it's so much cleaner than the editor's. VS is probably great for the first year programmers, but I (and a lot of people I meet) much prefer a lighter editor and a different way of working and Microsoft has set up in VS.
- the way code behinds are structured, Microsoft has maintained a bit of their famous "gee, where's my code"
- the way code behinds are structured you have to invoke really bulky controls where a simple <%=MyVar%> would more than suffice. I understand the idea behind separating code and UI, but let's get practical for just a second. At least in our shop, our developers and UI folks sit with each other, talk, even eat lunch together. I think they can share files without causing wars. They are all quite mature enough for separation "above this line is code" and "below the line is HTML". They can even go and fix pieces of each other's work periodically!
- the forced manner of assemblies and directory structures felt like either a) DLL hell or b) a security bulletin waiting to happen. These are things you don't care about for a departmental intranet, but for a site with millions of unique visitors a month, you want more control over deployment.
We miss the forced strong typing and intellisense. Borland's editors were and still are much much better. I'm hopeful the influence will spread to Visual Studio in the next release.
15:
I see there is a lot of pro open-source merchandise. I take it there have been no complaints about your all-Microsoft implementation? :)
FD:
There have been a few, but not many. Our service is to support freedom of expression, to democratize commerce and let anyone sell stuff. We have expression from all sides of the aisle. We would consider open source software if it worked better for us, right now it just doesn't - we leverage the pre-made code in the framework. We've switched platforms 3 times in 5 years though, so if something stronger came out before long-worn, or long-horn, or what ever it's called sees daylight, then we have no religion. I think open source solutions make a lot of sense for some applications, just not ours at this time.