I created this site and its blog for two purposes, to document the thoughts and experiences of a new indie application developer and to share the lessons I have learned designing and developing software over the past 20 years. At first glance, these two so not seem to intersect.
Being an Indie Developer
It is my intention to design and develop a set of Macintosh and iPhone based applications that are truly useful to people, well designed, seamlessly integrated, look brilliant and most importantly do what they are supposed to do best. I have no idea what these applications will be just yet, coming up with them is part of this journey.
I also expect to do it all wrong, intentionally. For me, the best way to learn something is through trial and abject failure. I know I can write software, but can I also do the graphics, the marketing, the support, the documentation, the financials, the web site, the distribution and all the other activities involved in creating and selling brilliant software products on your own? I do not know the answer, so I am going to try to do it all, fail at some things, learn something, write about it and then either do it right or do the right thing and pay a professional to do it right for me. And write about that too.
Being a Software Designer
I have spent the last 20 years programming, designing, architecting, documenting, managing and supporting both commercial and corporate grade software, for small, medium and large firms around the world. And in that time I have learned a few things that I believe will be of use to other software designers in the verse. I learned a lot from some very good mentors, and just as much from some very bad managers. Much of what I have learned is well documented in many seminal books in computing, just ignored or badly implemented in the real world. I intend to write about that here too.
The Intersection of the Two
To be a good indie software developer, one needs to be a great software designer. Some of the lessons learned as a Software Designer will be applicable, such as lessons on great architecture, lessons on modularity and clean code, lessons on user experience, and lessons on support and maintaining large complex code bases. Other lessons less so, such as lessons on managing people, lessons on negotiating with clients, and lessons on large, complex project management.
But to be a brilliant indie software developer, one needs to be more than just a great software designer. One needs to be a business person, a creative person, an administrative person, a support person, an accountant, lawyer, entrepreneur and coffee maker. I intend to become a brilliant indie software designer. And a better coffee maker.