My ‘Accidental DBA’ story

I started out as a shareware developer in the late 90’s, initially working on a CSS editing product on VB4 among other tools for Web Developers (or Webmasters as they were then known!). Eventually I decided that I should join the corporate world, to learn about how big organisations operate and work with people smarter and more experienced than me. So I applied for and got a job with an IT consultancy.

During my time there I was mentored by a team of DBAs working with Oracle 8i. They were working on a sighting database as part of a government initiative for the protection of endangered wildlife. It was my first exposure to an “industrial-grade” DBMS, and the enthusiasm those guys had for their craft left an impression that would set the tone for the next decade of my career.

After a couple of years of consulting work, I changed to a more permanent team role within a retail finance company and moved away from Oracle to the Microsoft toolstack. Moving to SQL Server 2000 was something of a revelation: I remember thinking to myself, “Wow, databases can be friendly?”. I was particularly taken with DTS and how readily large amounts of data could be shuffled around from server-to-server. Enterprise Manager and its point-and-click query and table designers unleashed all sorts of possibilities for me. In time, however, I would learn that these GUI tools could also be dangerous if not applied with proper forethought and due care.

I have to admit that the whole RDBMS paradigm didn’t come that easily to me. Initially I saw it simply as a way to persist my application object data; something I later learned was quite common among AppDevs (Grant Frichey summed up this quandary well in his article on DBA/Developer communication). But in time I came to appreciate the subtleties of working with relational databases and got to grips with deployment techniques, like how to preserve the integrity of a schema during table object changes.

As our team started to face the pressures of shorter release cycles, and as tensions between Devs and DBAs became evermore frayed, my manager and I saw a need for a role that would keep the wheels of our application lifecycle turning. So for 3 years I did nothing but prepare and execute releases to our enterprise contact centre systems, working with both teams to find ways to make our deployments go a little smoother and a little faster each time. I discovered the wonders of Continuous Integration with TeamCity, integrating our build process with a Compare API, which helped us with our deployments as well as keep our environments in-sync. My manager helped me put a DevOps team together and over time we got deployments down to a fine art, making the best of our ever-narrowing release windows.

I enjoyed this work so much I recently quit my job to develop and market a tool for database professionals. So in a way my career has come full circle with a return to independent software development. The difference to when I started out 15 years ago is that the vernacular has now changed from “shareware developer” to “Micro-ISV”. Times may have changed and certainly the tools for software development and deployment have come a long way, but in a lot of ways database development tools are still stuck in the dark ages. Having worked on both sides of the Dev and DBA divide, I have been fortunate to gain an interesting perspective on the challenges faced with software delivery and operations.

So the gauntlet that I’ve now thrown down for myself is to make the best of that opportunity: to help teams work more harmoniously and simply get more releases out the door.

Ready and Rolling!

ReadyRoll Logo

I am very excited to announce that ReadyRoll — the flagship product of my new startup of the same name — has today graduated to Version 1.0!

Working on this product has been one of the most satisfying experiences of my career. Of course this is just the initial release; there’s a barrel of items in the backlog that I’ll be focusing on next, particularly in the areas of usability and performance.

When I first started working on ReadyRoll, one of my goals was to help bridge the growing divide between Developers (responsible for building databases to meet the needs of the business) and Database Administrators (the custodians of an organisation’s data, aka the people who get the 3AM wakeup calls).

As a former DevOps guy, I have had the opportunity to work with both Developers and DBAs, and it’s my hope that I can provide them with a tool that helps solve a problem they share: bearing in mind the subtleties of working with schemas, how can an organisation achieve a repeatable and reliable database deployment process?

So without any further ado, it’s time to get rolling!

Today I quit my job to focus on my startup

I recently attended Business of Software in Boston, and at the conclusion of the event Paul Kenny asked everyone to make a tangible commitment to act on something they had learnt during the conference.

My commitment was to free up my time so I could ready v1.0 of my new product for launch.

Realising this was going to be near impossible while still in fulltime employment, I decided that I would hand in my resignation upon returning to Sydney. And now, after an incredible 7 year run working with some of the most talented and generous people I’ve ever met, my time with FlexiGroup Ltd will today come to an end.

During those 7 years, I’ve worked as a Developer, shifted into a Release Engineering role and finally onto leadership of the DevOps Team.

However during the last few months, my thoughts and energies have progressively drifted towards my startup. Developing ‘ReadyRoll‘ has occupied nearly all of my time outside work for the better part of the last year but I’ve found it incredibly enjoyable. Corporate work usually involves balancing a number of different workloads, so being able to lavish the design of a singular piece of software is something of a luxury.

ReadyRoll will be the my first product since ‘StyleMaker’, a CSS authoring tool that I created way back in 1997 as a teen. It was something I made for a school assignment, but it ended up being more than that when I decided to distribute it as shareware. I can still remember the rush of my first few sales and seeing my software on the front page of sites like TUCOWS and Download.com.

Though I did manage to achieve “ramen profitability“, it didn’t work out in the end but I learnt a lot about things like how much hard graft and perseverance actually goes into creating things of real value. And how listening to customers and being open and honest in your dealings is key to long-term prosperity in business (thanks to Jason Cohen for reminding me of this). Failure to deliver on these things can be a great teacher.

So in a way this move is a continuation of my “geek origin” story. In the years since my early efforts, I’ve been blessed to have had the opportunity to hone my skills under the guidance of some fabulous mentors. And now I get to do the indie software developer thing all over again.

With trepidation and excitement in equal amounts, today I begin to take those first few tentative steps from “Wannapreneur” towards “Fledgling Startup Founder”. Who knows what happens next.

UPDATE 04/02/2012: ReadyRoll has launched!

Introducing ReadyRoll

ReadyRoll Logo

Today I am very excited to tell you about a new tool I’ve been working on. It’s called ReadyRoll, and it’s a new type of Visual Studio 2010 project designed with SQL Server database refactoring and developer productivity in mind.

It’s built on the idea that the best way improve a system and evolve its design is to refine it in lots of little increments over time, rather attempting a “big bang” type of change.

The database development tool market has a number of stellar products in it, and so I’m definitely standing on the shoulders of giants here. But I do believe that that developers and database professionals lack a tool that allows them to create a sustainable process in how they develop databases. What is needed is a tool that encourages experimentation, and fosters a virtuous cycle in improving the design of existing schemas.

It’s early days, but what I really want is for ReadyRoll to do for databases what ReSharper has done for code.

There will be a preview release available shortly with a 1.0 release to follow sometime in October. Please drop me an email on dan at danere dot com if you’d like to take part, I’d love to hear your feedback and of course will provide you with a complimentary license on launch for lending me some of your valuable time.

Of course the best way to get to know it is to see it in action! Read more about ReadyRoll, download it now, or watch this short screencast (duration 3:16):


If you can’t see this video, view the MP4 version

But… what if someone steals/copies my product idea?

I know I’ve been asked it a few times recently but it’s one question that many proprietary software developers face.

What happens if your thoughtfully researched, painstakingly-crafted product idea gets copied?

And when that plucky young upstart comes up with a verbatim feature-for-feature copy of your software,  will all those months (or even years) of hard work, all those prototype iterations and tireless experiments with various implementations be for nought?

Before answering “yes” or “no” to this question, there are a couple of factors to consider:

  • Your focus and dedication to the problem space, not just the product
    From an outsiders point-of-view, it may seem that you’ve just been clever enough to happen upon an untapped market and create a product that capitalises on it, but really where it all comes from is a dedication to solving a real-world problem. Having this focus means you can never really lose:  if your goal to begin with was to solve a problem, and someone else was inspired by you and did a better job at it, wouldn’t your end-goal have been realised? This of course would presume that your hypothetical competitor possessed the following.
  • Your understanding of the problem space
    You’ve lived this problem for years and made the mistakes, challenged your own assumptions, and adapted your approach accordingly. You’ve earned your stripes and have the battle scars to show for it. Your competitors are just playing catch-up and the only insight into the problem space they are getting is in how your product is currently implemented. Or indeed if your product is still just an idea, they’re only getting a “snapshot” of its present (highly volatile) state.

Even though I am still months from launch of my first product in a long long time, I believe we all understand this (at least sub-consciously) because we’ve been customers for many years and know that it’s the vendors that tirelessly focus on solving our problems that keep us coming back.

A couple of weeks ago Parker Thompson of Pivotal Labs tweeted this:

“If an NDA is all that stands between your company and failure you’re already screwed.”

As my product nears launch, I’m going to keep reminding myself of this as it will keep me focused on that end-goal of solving a problem, rather than clinging to the naive hope that somehow I can protect my idea from being “stolen”.

Startup Progress for December 2010

A month ago,  I blogged about the frustrating procrastination cycle I seemed to have got myself into. While I’ve come a little way since then, I’m still not 100% happy with my progress. That being said, I guess I’m a bit of an old-school thinker: I still measure progress in lines of code (which has been precious few so far).

Progress for December 2010:

  1. Established an identity for the product (i.e. a logo)
    Received a contribution from a brilliant designer on crowdspring.com. Am absolutely smitten with the result and I can’t wait to share it!
  2. Established a Development environment on my home network/iMac.
    VMFusion3.1, VS2010, MS-SQL2008 R2, SSMS, RedGate Compare, ApexSQL APIs et al
  3. Decided on the technology/tool stack to target.
    VS200x and MS-SQL200x. Very subject to change, though.
  4. Re-evaluated the whole approach for the tool.
    My original design involved creating an “append-only” database migration scheme, where the tool would script all the additive changes automatically, and the user would be responsible for manually scripting the destructive ones. After getting a bit further into the nitty-gritty (an article on SimpleTalk really helped evolve my thinking: “When database source control goes bad“) I realised this was going to result in unmanageable complexity, so that idea has been tossed. The new design involves a fusion of a typical database compare method  that owners of VS2010 premium and RedGate/ApexSQL Compare would be familiar with, combined with a more linear database migration technique.
  5. Yet more research!
    Have been exploring different ways of looking at/extracting/rolling-out/rolling-back database changes. I’ve become fascinated by the way that SQL Server transaction logs work; I really think there’s some great opportunities to be exploited in a developer’s sandboxed world! ApexSQL have an excellent log-reading API that has been fun to play around with.

Additionally, I believe I may have found my whole reason for doing this, inspired by  a blog post by Tim O’Reilly which advocates “working on stuff that matters”.

My end goal is to introduce the idea of play into database development. To enable the same kind of process that allows developers to quickly experiment with new code logic to squeeze that extra bit of performance out of a code library or to iteratively create a UX that delights its end-users. It’s incredible that we have all these wonderful tools for engineering front-ends/middle-layers etc but why not the back-end? It seems incredible to me, given that (in my experience) databases are usually the longest-living artefact of a system.

Also, I want to allow my customers to break-down change barriers within their organisations: databases are often treaded around very carefully and are rarely refactored in any meaningful way after the version 1.0. I think this needs to change!

My new hero: Peldi from balsamiq

Back in October, I had the privilege of attending the Business of Software 2010 conference in Boston (some photos I took here).

It was an incredible experience which has been very well documented all over the Interwebs (my favourite account being from a super smart and lovely person I met at the conference by the name Lisa Wells).

That’s a hard act to follow, but I did want to make mention of a particular talk from a one
Peldi Guilizzoni, who hails from Bologna in Italy. Let me tell you Peldi is one heck of a guy. Armed with nothing but a MacBook Pro and a slightly unnatural penchant for vinegar he managed to set the UX world alight with his little (but gradually expanding) company’s wireframing tool. He launched balsamiq back in mid-2008, was profitable within 3 weeks and has now turned over in excess of $2M $4M (thanks Peldi :)). All in 27 months!

Impressive though this is, what I love about what he’s done is that he’s made his business about more than just selling a useful software tool. When you’re buying his software what you’re actually buying into is his simple philosophy: that life is too short for bad software. Peldi began his startup journey by focussing on solving this specific problem, but I have no doubt the idea for balsamiq had been brewing in his mind for a while during his latter years at Macromedia/Adobe.

What really surprised me about his talk at BoS2010 was how much personality Peldi brought to the table. In an industry that is unfortunately quite often marked with elitism and pedantry, Peldi’s light-hearted and candid approach was a breath of fresh air. He’s also a bit mad but a little of that can be a very useful thing! I found something about his story so relatable that I couldn’t help but draw parallels to my own life throughout his talk.

Since returning home to Sydney, the fires of inspiration have been rekindled and following Peldi’s example I will be documenting the progress of my own startup journey here. Wish me luck. By the trembling in my knees, I’m going to need it!

P.S. Videos from the conference have not surfaced yet but I strongly recommend checking out his performance (that’s what I’m calling them now) at the Less Conference 2010:
http://b.lesseverything.com/2010/11/17/peldi-guilizzoni-of-balsamiq-at-lessconf2010