A friend of mine asked me in March 2009 “exactly what it is I do” (for a living, that is). I thought this was a great question, and a good time to try and answer it, since I had recently been laid off due to the Great Recession.
The short answer is, I build web applications, soup to nuts. At least that’s what I’ve done the most of in my 18+ year software engineering career. I really enjoy doing it, and I intend to keep on doing it for a very long time.
Some examples of these applications include:
- a system for tracking sales leads (a la salesforce.com)
- apps that enable marketers to create and target ads and surveys to consumers
- apps for US Postal Service employees to receive and track incoming service requests from call centers and other sources
- online banking applications (First Chicago National Bank)
- supply chain management applications (allowing Nortel‘s vendors to order their own supplies on line)
- apps to support knowledge-base creation (NativeMinds)
- content management applications (allowing giant auto insurance companies to create “co-branded” web sites that share content and functionality) (Terrace Consulting)
- productivity applications that provide private email, calendaring, and file-sharing to small/medium size businesses (Bluetrain Inc.)
- Digital Asset Management (DAM) applications that allow companies to consolidate, version, archive, distribute, and protect their critical digital files (WebWare/Clearstory). I developed the asynchronous media processing architecture behind WebWare ActiveMedia, a DAM system in production at Sony Pictures, Martha Stewart Omnimedia, National Geographic, etc.
- Customer Relationship Management (CRM) applications to keep track of customer profiles, manage their accounts, etc. (BBH Media)
- Ad management applications that allow call center employees and/or advertising clients to create online ads using a streamlined workflow that results in consistent, approved content (BBH Media)
- Applications that automatically extract text and keywords from video (DigitalSmiths).
- Applications that help analysts find associations in large, unstructured datasets (Saffron Technology).
- Advanced Email Marketing solutions
- Sites for building and maintaining online communities
About the only thing related to building web sites that I don’t do is graphic design. But I’ve had the good fortune to work with some very talented professionals.
I’ve been building web apps nonstop since the web was born in 1994 or so.
I’ve built web apps just about every language/framework/toolkit you can name (and some you probably can’t). My first projects were written in Perl, then NeXT (the company Steve Jobs founded while in “exile” from Apple, whose technology is now the backbone of Mac OS X and the iPhone) came out with this amazing web app framework called WebObjects. Being an Object Oriented sort of person, and having already spent some time building 2-tier apps in Objective-C/AppKit/EOF, WebObjects was a natural progression and served as my bread and butter for the next 8 years or so (with forays into things like C++ and ASP in between). I still think WebObjects was the best web app development environment ever created, but Ruby on Rails is definitely getting close. On the front end, I’ve gotten some good hands-on experience with Javascript libraries such as ExtJS and jQuery. I also worked a lot with Adobe Flex at Saffron Technology, and I’ve been quite impressed, particularly with how well Flex integrates with Javascript. Thanks to libraries like these, the usability gap between web applications and rich desktop clients is definitely closing.
The technology of web apps keeps changing, but their basic architecture hasn’t really changed that much since I wrote this white paper in 1997. Relational databases are still used in every big web app. I’ve developed software for every major RDBMS – Oracle, Sybase, SQL Server, MySQL, DB2, Postgres – and I’m pretty familiar with their strengths and weaknesses. Most big enterprise apps involve some kind of “middleware” as well: object-relational mapping frameworks like Hibernate, Doctrine, and ActiveRecord; various Object Request Brokers, Messaging frameworks, etc. And of course the user interface of these apps is critically important, and needs to be tailored to the needs of each project. I’ve found that the most productive software engineers have deep expertise in all of these areas. The approach of splintering the dev team into separate “silos” is far less effective in my experience than finding engineers who can “own” an entire application from the bottom up. That’s one reason I’ve tried not to get “pigeon-holed” into a narrow niche.
So that’s how I earn my keep. If you’d like to learn more about how I can help with your web application needs, you can reach me by email at mpelzsherman at gmail dot com.