Software development firm interview: Zetetic

This is the second in a series of three interviews - first up was Teknision - with software development firms. In this interview, I speak to Stephen Lombardo of Zetetic.

Zetetic logo

When and how was Zetetic started?

Zetetic was founded in mid 2005 by me, Stephen Lombardo. I previously led a Security and Identity Management team for a NJ-based consulting company, but decided to seek more latitude to focus on software product development.

Are the services and technologies you provided at the start the same as you offer now?

Zetetic has an interesting technology history. Our original goal was to develop security and identity management software products for large companies. However, we found it nearly impossible to penetrate “the enterprise”. To an extent we were a small shop pitching products that tried to compete with the likes of Oracle and IBM. At that level sales guys can kill deals with a single well-placed call to a CIO. After a lot of pain and struggling we decided to change course back to services and focus on profitability.

In those early days we were doing really short-term projects and support, but we quickly established a solid customer base and began pursuing larger projects. Our consulting customers now span industries from finance to global manufacturing.

image

Once we re-established ourselves we began to expand back into products. This time we made a conscious effort to avoid developing enterprise products, with their arduous sales cycles, very specific custom requirements, and entrenched competition. Instead, we focus on small business and consumer software like Tempo Time Tracking, Strip Data Vault, and PingMe reminder services. Our products are lean, designed with very specific goals, and we can protect them from bloat and random feature request.

We currently spend about about 60% of our collective time on consulting work, and 40% on product development. Along the way we have maintained proficiency with our original language and technical platforms, but have aggressively expanded out into Ruby, Rails and iPhone development. It’s a completely different model that what we originally planned but it’s really rewarding because we’re always working on something new and interesting.

Do consulting clients typically engage Zetetic for single-channel projects or do you often work on systems that span the desktop, browser and mobile, perhaps even beyond?

We will often start working with a client on a single-channel project as an initial engagement. In many cases it grows from there. For instance, we started a project a few years ago with a customer that wanted to tie a few web applications together under a common umbrella site. The system has now grown to integrate fifteen front-end interfaces, including a desktop client, with another 25 back-end data feeds.

We built-out a web administration module, automated data consolidation and provisioning, centralized authentication and mobile platform integration (Blackberry Enterprise Server) for another customer. We often work on integration projects so our familiarity with multiple platforms helps us deliver effectively. Even so, many companies are still sitting on the sidelines of the whole mobile revolution. That seems to be changing though - we’ve seen more interest in mobile development over the past 6 months than the entire year prior.

image

Outside of consulting, we work extensively on multi-platform products. For instance, our time tracking system was one of the first to provide an optimized mobile web interface, Twitter integration, remote email processing, desktop widget and a web interface. We’ve also done some great work in developing secure embedded databases that can be used on the desktop and mobile devices alike.

What have you found to be most effective in marketing Zetetic?

Virtually all of our consulting business marketing is based on repeat business and referrals. Many people we speak to find it unusual that we don’t actively prospect, solicit, or answer blind RFPs, etc.

Honestly,  we like it this way: when we get a referral or start a new project for a past customer, there’s already a relationship in place.  The client already knows that they can trust us, and it cuts out the entire “dance” that we’d otherwise have to do to prove ourselves. There are other benefits too.

People only ask us to prepare a proposal when they are seriously considering a project. Plus, we rarely find ourselves as column fodder behind another incumbent company—we call it column fodder when you have no hope of winning a deal and your estimate is just filling in a cell on a spreadsheet for comparison purposes.

This level of trust also means that we can work more closely with our customers to develop requirements. They take our estimates and advice seriously. In the end it works out better for everyone involved.

On the product side things are a little bit different. Since our products are geared toward a larger audience we must cast a wider net. We still rely on referrals and recommendations between users of our software, but we also use our blog, guest writing at software development sites, and publication of open source software to help promote ourselves.

What software development websites have your staff written articles for?

Lately we’ve been working with one of the most popular iPhone development sites, Mobile Orchard. We’ve guest published articles about encrypted databases for iPhone applications and techniques for lite-to-paid application data migrations.

Also, since we publish a lot of open source software that is used “in the wild”, we’ve been working hard to establish our own site as a software development resource. To that end, we’ve published many detailed articles on a wide range of topics like AJAX integration with Oracle APEX, daemon services in Ruby, date extensions in Objective-C, Chain patterns in .NET, and directory service integration.

What tools do you use to manage projects, track bugs and handle feature requests?

One interesting thing about Zetetic is that we’re a very distributed team. We have people based all over NJ, NY, and PA, hours away from each other. We don’t have as much “face time,” so we have to work together even more effectively. We use a number of different products to help us stay organized and in touch.

Communication - When we sign on in the morning everyone logs into Campfire. We generally keep the group chat open all day, and people contribute if they have questions, need to discuss a feature, etc. If we are all busy the room may go dead for hours a time. It’s like a continuous team meeting. When we need to break off into specific topics we’ll usually use instant messaging, the telephone, or Skype.

Project Management - We usually interface with our customers and manage projects in Basecamp.

Time Tracking - When we started out we tried virtually every web based time tracker on the market, but couldn’t find anything that was flexible enough for us. Shortly after we decided to “scratch our own itch” and developed Tempo as a standalone time tracking product that’s available to small businesses and freelancers. Everyone on the team logs their time into Tempo and we use the reporting system to handle projections, internal reviews/analysis, and invoicing.

Bug Tracking - Unfuddle is our choice for defect tracking. It provides a great multi-project dashboard that helps us keep tabs on every project and milestone at once.

Support - Believe it or not, we still use a common Gmail account. We just haven’t found anything else that will let us manage email support for multiple projects in an flexible manner. If anyone can make a recommendation please let us know!

image

Co-working - It’s not a tool so to speak, but it is important to our business. Because we are a distributed team, remote employees sometimes take advantage of co-working spaces like Williamsburg in Brooklyn and Indy Hall in Philadelphia. Co-working offers more than just work space, it provides an opportunity to socialize and network with other like-minded techies and designers. We’ve found that it keeps us in the game and far more productive.

As Zetetic is, most of the time, a distributed team, do you ever all get together in one physical place? Is this important?

Yes - I don’t want to give you the impression that we never see each other. On the contrary, we still find a lot of value in working together physically, we just don’t do it every day. Instead, we usually meet together once per week “in real life” for planning and broader discussions. We try to get the most out of these in-person meetings, using the time to work through difficult technical concepts, plan customer projects, brainstorm new ideas for products, or catch up over lunch.

We also work together when we meet at customer sites or travel to conferences (the most recent was FutureRuby in Toronto). A few weeks ago everyone got together on Saturday for a summer BBQ. In short, we still value the physical aspect, but we’ve developed the ability to work together as a team without always being in the same location.

How would you describe the development process at Zetetic: agile, iterative, waterfall or your own custom brew?

Our development process is a custom brew, though it borrows really heavily from agile principles. The areas where we differ are most often pragmatic, as we tend to choose what works best for a given project. We avoid waterfall development at all costs because we’ve seen so many projects fail that way.

We usually start a project by creating a very high level specification for what we need to build. When dealing with a user interface we tend to use paper prototypes since they are quick and easy to put together. Infrastructure may warrant more formal diagramming. We find that technical protocols and designs often benefit from a short RFC style specification. In any case, we try to develop it quickly and only to use as a baseline for development.

image

Once we have outlined the objective we take the problem and break it down into manageable and discrete pieces. Each component or function gets its own cycle of development and testing. We align our source control, using git, closely with our process using feature branches and the like. If there is any complexity involved we may iterate several times on the same component. Along the way we develop tests, use the system, and continue to refine the functionality and interfaces. We are constantly refactoring and love nothing better than eliminating redundant code.

This overall approach scales well from smaller projects and support all the way up to really complex implementations. Subdividing development tasks also provides flexibility for scheduling tasks, which helps our team stay small and effective.

What are some important business lessons you’ve learned since starting Zetetic?

Everyone here at the company comes from a computer science or technical support background, so it’s been a real crash course on the business side. Here are some of the important lessons that we’ve learned:

Know the Float
When we’re doing consulting or product work, customers will often pay on a different schedule than we pay our employees and vendors.

Take a simple consulting project as an example. Say we kick-off a 2 person project on January 1st, invoiced monthly, with customer’s payment terms at NET-30, and semi-monthly payroll. Assuming we invoice right at the end of the month, we won’t be paid by the customer until March. That means we will cut 8 paychecks to support the project before we see a single dime. We call that the float.

It can become even more costly when considering other factors like late payments, subcontractors, overlapping schedules, and costs of software / hardware investments. It’s really cash flow 101, but it’s so important to know how much a project will cost before the income starts. We are constantly reviewing our accounts receivable, project schedules, and resource requirements to maintain a good understanding of cash flow.

Safe Subcontracting
As a small business it can be really difficult to handle the ebb and flow of projects. If you hire too aggressively you risk taking on more fixed cost than you can sustain if things get slow. On the flip side, if you’re short on resources you may end up passing on projects, or worse, delivery quality may suffer.

One solution we’ve used is to build up a network of other small businesses, independents, and moonlighters that we work with on an as-needed basis. Subcontracting is often looked down upon, but most risks can be avoided by working with trusted teammates and vetting work delivered. Then it’s a win-win for everyone involved.

Focus on what you’re good at
Early in our company’s history we would try to take on the graphic design responsibilities along with the engineering. At Zetetic we are all developers at heart though, and our lack of design skills showed. Over time we learned to stick to the software development, where we really excel, and we bring the design work to partners that are really good at what they do, and the overall product is so much better.

Build a brand
This is an opportunity we lost out on in our early days because we were split between multiple business lines. We didn’t even have a logo or business cards. We did great work so we grew anyway, but it was always difficult to approach new customers, or effectively communicate about our services and products. Everything was disjointed.

Last year we embarked on a serious endeavour to consolidate our branding, including a new logo, site redesigns, and consolidation of business activity under the Zetetic brand. So far it has really paid off in our pre-sales capabilities and brand recognition for our products. If we had to do it over again we would have built our brand from day one.

Good ideas have lasting power
Back in 1997, before Zetetic was a “real” company, we released a password manager for PalmOS, called Strip. It quickly grew to be one of the highest-rated and widely-recognized security applications for the old Palm Pilot (and later the Treo crowd). The product got solid write-ups in ZDNet and CNN, and it really took off.

As the Palm platform began to disintegrate we stopped development and support. To our surprise, when the iPhone was released more than a decade after Strip’s birth, we were overwhelmed by requests from old Palm users who wanted a suitable replacement for their new phones. Eleven years later we decided to resurrect Strip and completely redesigned it to work on the iPhone, where it’s now one of the best-rated Apps of its kind.

Along the way we developed an Open Source database encryption platform called SQLCipher that is now being used by many developers for security, medical, and business software. The bottom line is that it’s best to build your business around good, simple, and sustainable ideas that will remain viable for a very long time.

Support
It’s one of the hardest things to get right, but also one of the most important. Even if you are an awesome consultant, deliver under budget on a project, or create the best products, your customers will still have questions and problems.

Each support email and phone call is an invaluable opportunity to interact with your customers, one-on-one. Even irate or frustrated users can become big fans when their concerns are addressed personally and with respect. We take support very seriously at Zetetic and it has helped us garner repeat business on the consulting side. With our products, most of the people who write us provide valuable feedback, and often end up giving us positive reviews and providing quotes after we answer their questions.

Comments

No comments available.

Add comments

Commenting is not available in this weblog entry.