Why hire me?
If you're looking for someone to perform one of the roles I describe below, then look no further.
Database DeveloperIt's rare that your average software developers learn database design and coding best practices. With modern hardware, it is often acceptable to have the non-optimized systems that they produce serving up small databases. But as the database size grows or the number of users increases, responsiveness suffers. I've had many years experience designing responsive database systems: creating ERD diagrams, writing trigger and stored procedure code, and troubleshooting performance problems and indexing schemes. This has been mostly in the context of building a larger system - not strictly limited to a DBA role, as the positions below will attest. This has allowed me to approach database design using a broad array of solutions: evaluating the effectiveness of caching data in different tiers, moving from relational to multidimensional model for warehouse-type/OLAP applications, etc.
I've designed and built web based systems since the beginning of the web, and I think it's important for an architect to have this type of hands-on implementation experience. It's crucial to actually understand what's it's like to work with a technology or platform before recommending it for use. Having this experience helps me avoid common mistakes like picking technologies that will be difficult to debug or maintain, with too steep a learning curve etc.
As technical lead, I've had the following responsibilities:
I consider the architect role to be subtlely different from a technical lead in that you're more focused on the design or inception phase of a project. It's more removed from the details of project management and more concerned with addressing big-picture issues.
Considerations that go into my architecture decisions are both business-focused and technical:
One of my favorite architecture roles is one I call the client advocate. I've often been chosen to play this role for clients who have a need to hire one or more consulting firms to undertake a large technology initiative, or are trying to develop and outsourcing strategy. I can help a client in preparing their RFP or statement of work, identify candidates to fulfill the tasks, evaluate vendor proposals from a technological perspective and also serve as a point person when multiple companies must deliver a coordinated solution. After an outsourcing strategy has been identified, I can also perform a technical audit or code review of the incoming deliverables. I like this role because I believe separating the architect role from the implementation on a large job avoids a conflict of interest and can be hugely beneficial to the client.
Another benefit to the client for this type of engagement is that they to be short-term (and therefore inexpensive). I think of it as an low-cost insurance policy that their technology needs will be met.