There has been a lot of talk about agile development. In recent years agile development has been surpassed by lean development, which inherited many great practices from agile development but added elements of speed and cost-efficiency to the overall process. The focus has shifted a bit towards innovation rather than the quality of the software, and the Lean development method has seen rapid adoption by many young companies that now require record-low investment funds to bring a product to market.
In my own software engineering practice, I found that the widespread lean development was too theoretical and general because it was meant to work at mass scale. I had to make my own adjustments. Also, by investing my own time and money, I want to get the best possible return on the resources I put into the project. I think many people can identify with this motivation.
I’ve had to adapt the way I build software and businesses to be more than lean. What I came up with is pretty crazy for any traditional software development project, but it works wonders for me and I want to share it with others because I know it works. So before I sound like a commercial, let me outline my approach that allowed me to iterate and innovate at lightning speed. Some of my practices have had to get borderline reckless, but some are probably common sense.
I stopped programming in Java and started developing in languages like PHP or Ruby on Rails. This is just common sense as these languages allow more flexibility to develop faster and are easier and cheaper to host.
I began to be extremely realistic about the projects I took on. Being only one man (sometimes with limited partners) I have very limited resources and there are many projects that I simply shouldn’t tackle with the resources available to me.
I also started to only focus on business ideas that didn’t involve any technology risk. For me, that meant stopping Semantic Web projects and not starting cloud-based technology innovation or search. These types of businesses just require a lot of computing power and expensive man-hours, and simply take unnecessary technology risks. The market risk that already comes with any business is risk enough for me and there are many business opportunities out there that do not involve technology risk and work with simple and proven technology.
I’ve also dropped any scalability concerns. It might be reckless, but let’s face it: most of the software I build will never see more than 1,000 users in its lifetime, and there’s no need to worry about size. On the other hand, when a product I’ve launched scales, two things can happen: 1) the software may actually be able to handle the scaling because servers and databases are generally built for it, and 2) If it doesn’t handle scaling well, I can just rewrite some of the code based on the lessons I’ve learned about why it didn’t scale initially.
Now, if I don’t sound weird, I don’t focus on security other than validating input parameters. Let’s be honest – I don’t have any mission-critical data. And if I get hacked it actually helps me because I understand a vulnerability I have that needs to be fixed if the hacked feature becomes popular and used in the real world.
I also do not hide unfinished products. Once I buy a domain name, I put it live online so it can age in the search engines. And whenever I have test data, I put it live for search engines to collect for SEO purposes. Some people like to keep their projects private, and often it makes sense for a number of reasons. In my case, I focus on SEO because I find it convenient and helps early adopters find me easily.
You may already be noticing a trend. My mission is to accumulate enough tech debt to become a tech debt millionaire to put resources into iterating innovation. This is the insanely lean development I’ve embraced and it’s worked for me, and I hope some of the techniques work for others.