Tag: microisv

  • A really nice interview with Brent and Sheila Simmons

    This excellent interview on DrunkenBlog with Brent and Sheila Simmons, a.k.a Ranchero Software, the makers of NetNewsWire, MarsEdit and other great software for the Mac, is a really nice insight into the life of a successful independent software vendor.

    A definite recommended read.

  • Dangerous Terms: A User’s Guide to EULAs

    microISV.com has pointed out indirectly that Annalee Newitz has written a very interesting white paper as a “A User’s Guide to EULAs”, with Donna Wentworth commenting on some excerpts. If you have ever scanned through a End User License Agreement (who actually ever reads them properly) and just clicked “Accept” to get past that load of legalese without a second thought, you might like to reconsider this approach in the future. There’s some really scary stuff in some of the examples, in some cases you can’t even share your opinions about a product publicly once you’ve accepted the license. In the case of a Beta program you can be quite happy about this, it’s understandable that the company doesn’t want their unreleased software talked about, but this is fully released software we’re talking about.

    Number 6 on the list of nasty clauses is the ubiquitous “We are not responsible if this product messes up your computer.”, and this is basically the only clause that I’ve thought about including in my EULA. Here’s what my EULA was going to be before reading these two posts:

    Terms Of Sale And License
    *IMPORTANT* Please read the below carefully *IMPORTANT*

    IMiJ Ltd grants one person per user license purchased the use of this software on one or more personal computers.

    Every effort has been made to make this a quality and feature rich application for you to enjoy. However, you install and use this software at your own risk and indemnify IMiJ Ltd against any claims should installation or usage of this software result in loss or damage of any kind. If you do not accept the terms of this license please do not install or use this software.

    This software is covered by a 90 day no questions asked money back guarantee. If you wish to surrender your license, please contact IMiJ Ltd at customer-service@imij.co.uk with details of your order number and serial number and we will refund your money and disable the serial number as soon as possible.

    What do you think, is this a fair license? I tried to make it as simple as possible, clear and to the point, but after reading the linked articles, I might end up saying something like this:

    Terms Of Sale And License
    *IMPORTANT* Please read the below carefully *IMPORTANT*

    IMiJ Ltd grants one person per user license purchased the use of this software on one or more personal computers.

    Every effort has been made to make this a quality and feature rich application for you to enjoy, if it does something that you didn’t expect or don’t want, please don’t take me to court! Be excellent to one and other!

    This software is covered by a 90 day no questions asked money back guarantee. If you wish to surrender your license, please contact IMiJ Ltd at customer-service@imij.co.uk with details of your order number and serial number and we will refund your money and disable the serial number as soon as possible.

    What do you think, an improvement?

  • I had a chat with the vendor.

    In a previous post I mentioned that I was wondering whether I should contact the vendor of the web app that I’m writing my Desktop app to work with, I was worried about whether they would like the idea or not, whether they would think I was just taking advantage of their hard work.

    Yesterday I finally plucked up the courage to send an email to the vendor. They replied within about half an hour, when I saw the reply so quick I couldn’t help thinking it might be a pretty terse response. I shouldn’t have been so worried about their reaction. Although I won’t tell you what they said as I feel that is confidential, I think I can say that they were very encouraging about the idea, and offered to help me with any problems I might have!

    I can’t tell you how much of a weight off my mind it is to know that the vendor is more than happy with me writing an app to work with theirs. I really should have known better, the guys at Fog Creek are great, always very helpful, and very pragmatic. Just what you’d expect from the company run by Joel Spolsky.

    Yes, you read it right, I’ve let slip what I’m actually doing, don’t faint! 🙂 I’ve decided that I’ve really got no reason to keep secret what I’m developing, and as my good friend Gordon pointed out in his comment to my “The Big Think – Part 3” post, I may even get some feedback from the user community. And as I’ve said before, feedback is King.

  • Lost Focus, Now Regained

    I’ve been suffering from a spell of lost focus recently, just haven’t managed to get going on developing my app, and have been having some (continuing) problems in deciding on the app’s initial feature set.

    This is probably one of the most common reasons in delaying and possibly even killing a new product, because if you don’t know what the product is trying to achieve, and for whom, you lose focus and start developing features that may be irrelevant and really have no product as you have not properly identified the market.

    With Christmas and a faulty video card on my development box introducing some time away from development for the best part of the last month, I’ve had some time to re-think my product’s focus, who I am making the product for and what features they are going to want. However, what I’ve really come to believe over this little hiatus is that I’m wasting way too much time thinking about extended features, when in reality until people start using my software and giving me feedback I don’t really know what the customer wants, I can only think I know, even if I am a customer myself. I’ve said all this before, but this time I’m being ruthless in applying these principles.

    So, I’m chucking a lot of my ideas for the future out the window, and am going to concentrate on the few features that I want now, and think others also want now (deduced from posts to forums etc). At the moment I’m the only customer I can talk to, so I’m going to satisfy my needs first, and wait for feedback before spending time on any further features.

    As part of this re-focus I’ve designed a much better user interface, having some time away from the project and in particular using a few apps that I really enjoy using has made me realise that I was going down the wrong route, I was complicating the interface when I could really do a lot better with only a handful of controls. I was going to be using tabs to separate different views of the data (remember, this is primarily a reporting/data view tool), but this was a bit clunky and meant the user would need to use at least two clicks to change their view of the data, with a lot of eye movement in hunting down items to select in a newly visible tab. There are better ways to do this, there might be a slight increase in clutter in a particular control but subtle use of colour and visual separators can help the user quickly find the area they are looking for.

    Anyway, tonight I’ll be back on the development box and ripping the app apart, I think I have a fair bit of work to do now, but less than I would have if I hadn’t re-focused my view of the apps future, I’ve got my confidence back and am seriously excited about getting down and dirty with the code again.

  • Realese Early, Release Often

    As Lachlan has also concluded, releasing earlier with a reduced feature set and improving from there with customer feedback is a very good idea.

    I might not have any experience in the commercial software business yet, but in corporate and bespoke software I see this happening all the time. Release something that gives a good base to work from, based on initial customer requirements, let the customer see and work with what they have asked for. You’ll then get lots of feedback that will improve the application for the customer, which is the most important source of feature specification you can get, feedback. A tricky part in writing bespoke software is stopping the customer asking (or rather insisting on) the bells and whistles that are unlikely to be used, and that take a lot longer to develop for. The obvious answer is to quote high for these things, which inevitably leads to them being dropped from the initial requirements and pushed into a second delivery phase. What usually happens is that once the customer gets their hands on the application, even in User Acceptance Test, they see that they can work just as well without these extras, and can identify far more important improvements to take their place in a second delivery.

    Again, the feedback loop is the key here, the shorter it is, the better, which just so happens to be a key principle of eXtreme Programming (XP) and most of the Agile methodologies.

    I believe this is the only way to go if you want to make a sustainable software business, I might yet be proven wrong, but as long as you have a product that on initial release has just enough features to make a good portion of the potential market take interest, the feedback you get from them will be hugely important and will steer your subsequent development for quite some time.

    Deciding what is a good initial feature set is however very important, it needs to be enough that you satisfy some need of your potential customers, but not so much that it takes a decade to write the software. This is obviously tricky to get right. In my product my feature set is quite skimpy in a particular area that I think I will get lots of requests for, I know I will, but I also know that it will take a lot of time to get it right (and may require some expenditure for a third party component). In the mean time, the similar feature that I think is going to be more important will be there, almost in full, and that feature is the core that will be built on and expanded in later releases. There are important features that I intend to introduce along the way that will further improve the application, some I expect to introduce before the one that may require a third party component, they all build up to give the user flexibility in this area, and ultimately many users may not even want this key feature because they can integrate other tools into their workflow that they already own and know, and can do a lot better than my app can initially. When I get the feedback, I’ll be able to decide what’s next on the list, what’s the most efficient new or improved feature that will make my existing customers happier and will maybe win new customers.

    You need to think organic, grow your software slowly as your customer base grows; this is one of the primary principles and advantages of being a micro-ISV. Nurture your software, feed it, water it, and keep an eye on the leaves and fruits to determine what is needed to keep it fruit bearing for a long healthy future.

  • The Big Think – Part 4

    What the heck, this project is fun, I’m learning a tonne of stuff every time I get coding, every time I read some more about marketing. I’m learning loads from all the blogs and web articles that I’m reading in the area of small independent ISVs and shareware marketting. Maybe I should quit worrying and just get on with it.

    The best thing about it is that it’s not really costing me a lot, there’s the initial outlay for RealBasic, which wasn’t much, then there’s the time I spend on coding and research, but that’s negated by my enjoying every minute. The biggest cost is probably the time I spend locked away in my office away from the wife, which isn’t good. But, to be honest, I’m completely addicted to computers, have been since a kid, my wife understands this and accepts it, I think. This doesn’t mean I’m allowed to go over-board though, I do occasionally get a kick up the rear for not spending enough time with my wife, although curiously it’s usually phrased as “spending too much time on the computer”, I think she’s jealous, and probably rightly so. I do spend way too much time on my computers, I recognise that. I go through phases of moderating my time, but after a while things do slip and I have to be reminded that I’ve got a life outside of computers. Is there such a thing as “Computers Anonymous”, hope not, and if there is I’m not going to join anyway, I’m enjoying coding on my project way too much!

    I’ll talk about how I’m combatting the imbalances in my life in a later post (and yes, I’m aided by computers!).

    Anyway, it’s Friday night, DVD, couple of nice beers and snuggle up with the Mrs on the couch night.

  • The Big Think – Part 3

    As mentioned earlier, I do see a wider market for my app, if I build and market it correctly I believe I can grow it to encompass other similar web apps (and there are many) that rival my current core vendor’s product. I’ve yet to decide whether this is a good idea. Should I concentrate on making it a niche product that meets a very distinct need? Opening up the app to be compatible with a number of vendor’s competing web apps may just pollute the brand weakening it. If I open up the brand in this way I’m sure to get a few extra sales, but probably at the cost of sales in the initial market. It’s an age-old quandary. If I keep the brand intact, and very focused, there’s nothing to stop me creating other versions of the app for other markets, and branding them differently I suppose. There’s a lot of talk in The 22 Immutable Laws of Branding and Marketing about just such things, their advice definitely seems to be to keep each product very focused and not to line extend. This brings me back to the naming problem; do I keep it very focused on the core vendor’s product name as it currently is? I guess from what I’ve just said the answer is yes. Maybe there isn’t the market for the other platforms anyway, maybe I should just concentrate on the one I know and believe there is a demand I can satisfy.

    The only competition there potentially is for my product is the vendor itself if it adds features that negate my advantage, and some much more expensive and un-focused apps that take a lot more setting up and tweaking to get productive with. But am I deluding myself? Is there really a market here? Why has no-one else got an application that does what I’m planning to do? It’s not anything really complicated, so is it just a case that no-one can be bothered with such a small market, or do they see that there really isn’t a market at all?

    Maybe I’m worrying for nothing, maybe I’m really just procrastinating. The fact is that when I do get a chance to do some real coding on this project, I really do enjoy it. I love programming in RealBasic, it’s really fun, a real blast, and a real breath of fresh air compared to my current full-time occupation. Really 🙂

  • The Big Think – Part 2

    One downside of my app is that it obviously needs to connect to the database directly. This could be an issue for some companies that might not want to open up the necessary ports on their server so that a little app from an unknown company can connect to one or more of their key databases that potentially have some very mission critical data in them. Although my app in its initial form is going to be read-only, how would a company know that there isn’t some malicious code in there that deletes all entries from a table? They don’t, they have to trust me and that could be a hard sell. And I’m not ruling out creating a version of the app that can update the target database if enough customers ask for it, and if the core vendor gives me the nod.

    Which leads me onto another potential problem, although I hope I’ve read the core vendor correctly and it will not be an issue. What if the vendor of the web app takes offence at me trying to make some money out of providing some complimentary tools for their product? I don’t really think this is an issue as the company’s track record is good, they have other products that have gained some complimentary tools and I think I have even seen them recommend them in their forums. I believe having complimentary tools like I intend to sell generally help the core product as it creates a community around it that attracts more attention. It’s still something to think about, and I fully intend to have a little chat with the vendor in due course to sound them out, and hopefully get their blessing.

  • The Big Think – Part 1

    So, this last month I’ve been having some serious second thoughts about the viability of the software I’m very slowly creating.

    I’ve spent a lot of time re-assessing whether there really will be a market for my product and whether there is going to be any potential growth from it into complimentary products and services. Even the name I’ve given it is looking a little shaky at the moment as it doesn’t scale to other uses, but the application could be used with multiple types of servers with a little work.

    This is important stuff, and I’m still not quite sure whether it is a goer or not, so I’m going to ramble here, maybe something will come to light.

    Part of the problem is that this product is an add-on for a product that is gaining features all the time, and there is quite a chance that some of my key features will be added to the main product. If this happens, then why on Earth would someone buy my product?

    Ok, my product is a desktop application, this is probably a selling point for a good percentage of my potential market and is very unlikely (at the moment) to be added as an option to the core product which is at the moment browser based. However, the initial features that would actually add value to the current product could be added to it, and most likely are being added in the next major version. The whole reason for me creating this app is that users of the core product keep asking for certain features, as such the vendor would be amiss to not include them in a very near term update wouldn’t they?

    I guess a big positive of my app being desktop based is that the features I can add are potentially going to be far more user friendly in execution than with a web app. I can update subsets of the displayed data as and when I need to, and manipulate it without connecting to the server far more efficiently and without any browser standards compliance issues. Simple things like re-ordering data in a list is so much easier on a desktop app than a web app, there’s no need to connect to the database, no network traffic, and no fragile JavaScript or such like to be broken by the browser.

    As a consequence of being a desktop application, it’s entirely possible that I could make the app able to function in a disconnected state, this could be a bonus for some people, but I’m not sure whether it’ll be a huge benefit for the majority of potential customers. The work involved in adding this kind of functionality pretty much requires that I hold off until it becomes a regular feature request from paying customers. But first, I have to actually get some customers!

  • Time Gentlemen Please!

    Since starting this project, I’ve found that I need to have 48 hour days, 24 just aren’t enough! If something doesn’t happen soon, I’m going to be delivering my project in about twice the time I first estimated.

    When I started on my new project, I started by having a look around to make sure there really was a market, and to double check that my assumption that the niche I was looking at was not already being filled by anyone else. I wanted to be first to market in the niche, primarily because I believe it is a very small niche, and I don’t expect it to be able to sustain more than 1 or 2 players. My idea for my new software was prompted by noticing over time a number of calls for this functionality in a particular piece of software, functionality that would be fairly hard for the vendors to do with their current server based model, but that I believed was totally feasible with a desktop application. The application would be simple at first, no bells and whistles, just enough to get this repeated query satisfied.

    After a couple of weeks of surfing the web, and formulating some rough ideas on exactly what the scope of the project would be, I started creating entries in my FogBUGZ bug tracking installation for each of the features I thought would be required, this was end of June (2004). First pass, I only added 2 entries, this covered the basic feeling of the app, enough that I would remember what it was I was hoping to achieve with the product. The next time I had a chance to actually start doing anything on the project (more than a month later, after some more ruminating), I updated the two existing cases with further details and created another 3 to cover some other required functionality. The following day after having started development I added another 5 features to the list, drastically expanding on and tightening up the requirements on one of the first two features. That was about 2 months ago (early August), since then I’ve updated many of the features with more details, and added another 8. None of these features are to the level you’d expect for XP development, but they give enough detail that when I return to them to start development, I know exactly what is required.

    When I added those features about 2 months ago, that was when I first started taking this project seriously, at that time I put all the features into a number of “releases”, each release due at the beginning of each subsequent month. I worked out that as long as things ticked along nicely, I could get about 8 hours of serious development and testing done each week, e.g. 1 day per week. This is assuming that I’m only working in my spare time, and only on 2 or 3 evenings per week, if lucky I may snatch a couple of hours at the weekend, but only if the wife is away doing something else, we have an agreement that I try not to use my computers at the weekend, so that we see something of each other occasionally 🙂

    With estimates logged against all the features, splitting features so that each release consumed 4 to 5 days max with highest priority core features coming first, this set my release schedule as follows:

    Release Date Notes
    0.1 12/08/2004 Initial building skeleton app.
    0.2 01/09/2004 Pre-release.
    0.3 01/10/2004 Pre-release.
    0.4 01/11/2004 Pre-release.
    0.9 01/12/2004 Public Beta.
    1.0 01/01/2005 Full Release.
    1.1 01/03/2005 Bug Fixes and small user requests.
    1.2 01/05/2005 Planned large features.
    1.3 TBD More super features!

    This was well ahead of what I actually expected my release schedule to be, I had planned to have the Beta out in February at the very earliest, but really thought that March would be more likely. But now, I’m not sure I’ll be able to even make March. In the first two months of development, I’ve successfully completed 0.1 and 0.2 on time, they’re happily stored away in version control. However, 0.3 has hardly got off the ground, and I’m half a month behind expected delivery date already. I’ve had few problems with my ISP to sort out during that time, and a friend of mine convinced me to have a better look at RSS and blogging, which hasn’t helped (yes, I’m blaming you Gordon!), but the biggest problem I had was in using new technology.

    Although I’m fairly used to VB, as noted before, I’m actually using REALBasic. This is great stuff, I’m thoroughly enjoying developing with this technology, but it’s very different to my day job. As always, when you start with a new technology, there are a lot of quirks that need to be picked up, that’s why current wisdom says that to be truly successful in a new venture, you need to be using tried and tested tools and techniques, otherwise you’ve already added a variable that you can’t accurately predict. But I don’t have that luxury, I want to create a desktop app, and you can’t do that easily (and cheaply) with Informix 4GL.

    So, luckily, I already knew my initial estimated plan was going to be wrong, and recently I’ve changed it by slipping all the open features by a month:

    Release Date Notes
    0.1 12/08/2004 Initial building skeleton app.
    0.2 01/09/2004 Pre-release.
    0.3 01/11/2004 Pre-release.
    0.4 01/12/2004 Pre-release.
    0.9 01/01/2005 Public Beta.
    1.0 01/02/2005 Full Release.
    1.1 01/04/2005 Bug Fixes and small user requests.
    1.2 01/06/2005 Planned large features.
    1.3 TBD More super features!

    So, this puts my first Beta as being released on 01/01/2005, which I already know isn’t going to happen because I won’t even be in the country that day, if lucky I’ll be nursing a hang-over down south (England, I live in Scotland), having spent New Years with my family. But more importantly, I don’t’ actually believe I’ll be releasing the Beta until March at the earliest, I’d be happy with that. However, to even meet that, including setting up the new web site and all the other stuff that I need to have in place, I’m going to have to make some serious changes to the way I manage my time. I’m just not achieving that magical 8 hours per week quality development time.

    Last year I read David Allen’s Getting Things Done, which is superb, when I first read it and implemented most of the recommendations my home and (especially) business life became far more organised. I think I need to read it again to make sure I’m still doing things right. I also need to ensure that I’ve re-read some of Steve Pavlina’s great articles too. But really, I need to start removing all the extraneous attention sucking items from my life, things like TV and sufin’ the ‘net.

    TV’s not such a problem, although I have a TV tuner card in my PC, I’ve just not turned that PC on, I’m using my Mac mostly anyway, and have virtual PC for testing my builds for Windows. Testing in Virtual PC can be a little slow, so occasionally I will have to start up my main Windows PC for a few tests, just to gauge whether things are running OK on a typical business PC (it’s not a perfect test, but better than Virtual PC), but I’m sure I’ll resist the TV during those specific tests.

    The real killer is the internet, there’s just so much going on, and no time to read it all! I’m not sure how I’m going to resist, maybe I can restrict myself to only using the internet once I’ve done any paperwork I need to do (I have to do a fair bit each month for my consulting business), and completed at least two hours of development. Maybe just say any time after 10pm is free for play, which if I were sensible would mean about half an hour as currently I’m having to get up at 6am to fight the traffic to work (across the Forth Road bridge). The problem with that, is that usually I only seem to be firing on all cylinders at about 9:30 – 10pm, although I suppose that is partly due to some time wasting on the internet. I’ll give it a go anyway, no internet at home until 10pm; email, paperwork, development and then surfing.

    I’m not sure whether this is going to be doable, there may be other elements affecting my productivity. What do you think, what do you do to ensure you have efficient development time? What leeches your time the most?

    I think I’ll start a log, a bit like the timesheets I have to fill in on any contract, but for everything in life.