Introduction to technologies for lean startup
Are you starting your technology centric startup with little or no investment?Are you not tech-savvy? Are you confused with technology stacks around; not sure where to begin with? If, answer to any of these questions is a “yes”, then below is the guide of lean startup principles to imbibe. A lean start up is mostly in experimentation stage and the product of such startup is generally called a ‘Minimum Viable Product (MVP)’, which serves the purpose of build-measure-learn loop.
Since a lean startup needs to build and learn quickly, the development cycle would be small and the changes would be too frequent. Keeping this in mind you should be able to scale your MVP easily for new customer segments and features. Having said that, I am going to explain how we at Badiyajobs are able to manage and scale our technology products following lean startup methodologies.
Due to the increase in mobile penetration and fall of mobile data cost over last couple of years, the scope and utility of mobile apps have increased a lot. Android, with almost 97% of the Indian smartphone market, provides huge opportunity for emerging startups to align their mobile strategies to get the maximum out of it. Keeping things simple and minimal (removing what’s not required) can really give you a head start for creating a scalable android app and here is how:
Befriend Android Tools
Gradle and Android Studio (AS) can save you a lot of time if used rightly, but unfortunately, reverse also holds true 😅. Here are some tips that will come to your rescue:
- Product Flavours and Build Types: Keep your production & testing builds separate and paid & free builds separate. This is really helpful in maintenance when your app grows in terms of features. Read more about it here.
- Version Control : Undoubtedly, Git is the most widely used tool for maintaining and tracking code changes over time. Don’t worry if you can’t remember all those commands; android studio provides really nice interface for all your needs. Follow this tutorial to get started.
App size and Libraries
Instead of getting overwhelmed by plethora of libraries, use essential 3rd party libraries (refer list below) and try coding most of the UI features yourself to reduce those extra bytes. Few requirements and corresponding libraries have been overviewed here.
- Network calls : Both Volley and Retrofit work amazingly well for sync as well as async requests. Volley comes with elaborate caching and retry mechanism with the downside of writing tons of codes. I prefer using Retrofit for small sized app, as it’s simple to use with POJO-making-plugin in AS (Gsonformat).
- Image Loading/Caching : Most of the apps, nowadays, have to deal with image content fetched across network. Glide, Picasso and Fresco are the names that you will come across. Fresco, being very elaborate and large in size, should only be used for pure images-based app. For general purpose one should always use Picasso due to its low size and customisation.
- Crashes Reports and analysis : Fabric.io comes with easy 4 step integration right through android studio and gives you detailed information about each crash . Integration with Answers makes it even more powerful for keeping a bird’s eye view of user’s activities.
- Referrals and attribution: There is not a iota of doubt that Branch.io is the single most accepted ‘standard’ for referrals program due to its highly efficient deep links and attribution tracking. Its Webhooks comes quite handy for sending information to your server about app events.
- Analytics : This is really important for measuring and validating your assumptions and learnings to align product to market. Unlike Google Analytics and other players, Clevertap is extremely simple, light and quick for tracking user behaviour and footprints with features like cohort analysis, funnel and uninstall tracking. It also removes the need for using 3rd party libraries with its customised push campaign to target specific user segment.
Again, using ProGuard and cutting down on assets can really help you reduce the app size, even with these libraries.
Website and APIs
Most of the time, your app and website has to communicate back and forth with the server to fetch and store data using Application Programming Interfaces (APIs). I recommend you to choose any Modal-View-Controller (MVC) framework (they all work the same, don’t think too much), depending on your past experience in languages, to work in structured way. Here are some of my favourite languages and frameworks.
- PHP with Laravel: Laravel is one of the most advanced and elegant framework I have used till date. Because of my prior experience with PHP, I started with it initially and over the past 2.5 years it has provided me with a good understanding of the fundamentals of modern web development. Follow Laracast free series to get started with Laravel.
- Python with Flask: Flask is a super fast and convenient microframework based on python. This stack has become extremely important for AI based applications like image processing, NLP etc. Python comes with the goodness of thousands of existing modules (through pip) and packages, which make things really easy.
Database design and schema play more important role in determining the performance of web services than the frameworks. For the most part, people know the structure of data they are serving so they use SQL with pre defined table structures. NoSQL is used when the data comes in large chunks and is unstructured. Bottomline for web or APIs performance is to reduce number of queries executed on database by caching not-so-frequently-changing-data and reducing the number of requests from client to server.
For small to medium sized application, it will be really good to start with some shared hosting providers like Godaddy, Hostgator etc. But depending on the application’s features, you might have to install/modify packages on the existing server. I recommend you to opt for AWS free-tier, in that case, as it will provide you the sudo access to your machine through SSH.
I’d love to hear your thoughts on how you have used this article, feel free to comment or tweet (https://twitter.com/niteshghn). Be sure to click ❤ below to recommend this article if you found it helpful. It means a lot to me.