How to convert your idea into a scalable product
If you are not embarrassed by the first version of your product, you’ve launched too late ~Reid Garrett Hoffman, Entrepreneur.
Ideas always strike us very randomly, you might get them at 3 am in your dreams while sleeping, or maybe on your daily commute, you are stuck in loo without your phone or you are during a hot shower while you are lost in some other dimension of the world. We ideate every single day, every hour, but every single idea has its own personality; Sometimes ideas are weird enough that you question your own sanity, or they are too unfeasible to act, but at times some ideas sound so interesting and attractive to us, we start thinking about it, We start living and we imagine it to be the next big change, we start dreaming about our very own Uber, Facebook, Airbnb or giving a TED talk on ‘How to raise a million-dollar company’. If you relate to this believe me you are completely normal :).
The post COVID times will be the era of a new generation of start-ups, a time when entrepreneurship arouses the masses, While our minds are seeded with ideas, Many of us fail to convert this seed into a scalable product which might help a section of society or might have grown into the next billion-dollar company. With an experience of 3 years of product development, working closely with many startups as well as large scale established companies and launching many scalable products right from scratch, I tried compiling all of my experiences and the path I built for the end to end development of a product. I am writing this article so that if someone has a wonderful idea and thinking about how to release it, they don’t end up being scared by the overwhelming content available on the internet and end up reading some of the stuff which might not be helpful to them even.
I have divided the whole product life-cycle into 4-phases all interconnected and extremely important for an end to end product launch. I have tried to include tech and tools as much as I can while making sure it’s not too much to get confused.
Brain Storming and Design Phase: — One of the most underrated aspects of the product development cycle while I feel its the building block of the product, people always try to skip it and jump directly on the development but that’s why failure is imminent for them. BrainStorming helps us laying our foundation really strong and getting the clarity of our product, helps in features we are planning to introduce, figuring out the use-cases of our product, identifying the target audience, and giving our product a proper shape. One should try making a map with all of the product features and break them down them into small components so that the project has a modular structure and can focus on one aspect at a time. The next step is to convert your feature map into something solid which is visible to the user, figure out what suits your idea the most, a web application, a mobile application, or a desktop app, or maybe all of them. Add visuals, graphics, colors to your wireframes with a suitable theme according to Idea and try to maintain the same theme for all your platforms. Try to be as peculiar and descriptive as you can while designing so that while developing your application, you can take care of minor details. Try following various guidelines in your designs to make sure it’s widely accepted and provides good UI/UX to the user. You can use the following tools which are widely used, to make sure you don’t lag anywhere.
- Draw.io: — widely used for making flowcharts, features maps, workflow, etc, and really helpful in the brainstorming sessions.
- Figma and AdobeXD: — These tools are widely used to design your applications. Figma being the online tool is free to use and provide a userfriendly interface while AdobeXD being offline and from the Adobe is really professional and can k`nock out all your design needs easily,
- Material-UI, Semantic-UI, google design guidelines: — If you ever stuck with the design guidelines, styling guidelines, etc these tools can help you getting some ready-made code and components to make you design your product really well.
Develop and Debug: — The phase which gives your product action and starts backing up your idea. Before directly developing your product and diving deep into frameworks, the best practices is to decide your tech stack first. The tech stack is decided based on various factors such as the type of application you are making, You should ask yourself if the project involves a large number of audiences, or is it just a prototype, which programming language you are comfortable working with and uncompromisable aspects that set ground rules for your project. While developing try to follow as much modularity as you can, try breaking everything into small components, and reuse as much code as you can. Follow good coding practices, oop concepts, relatable variable names, functional programming, etc. Keep documenting the code periodically so that when other developers collaborate, they can understand it easily and the whole term works efficiently. Its also advised pushing your code to various version control systems periodically to prevent accidental code deletions and making collaboration easy and seamless. It’s guaranteed that you will get stuck in many head-scratching errors and annoyed enough to bite someone’s head off, and believe me this is very normal. I’ll tell you the gospel of developers, Google uncle has a solution to everything. Try searching your errors, its almost guaranteed someone has faced that before and there is a solution lying out there too. You can use various debuggers in IDE as well to make sure you can debug your code effectively. This is one of the crucial phases because your product starts interacting and you can see your ideas transforming, Following tools and frameworks can help you complete this phase.
- Visual Studio Code, atom: — These are the IDE’s which can help you in writing code efficiently, well indented and lots of extensions are provided to ease your development.
- Github, Gitlab, BitBucket: — They are widely used as version control systems and helps users collaborate easily and effectively. They can also keep a copy of the codebases as backups on these platforms in case of any security flaws.
- SQL and NoSQL Databases: — They are widely used as databases in almost all the applications. The usage of SQL over NoSQL databases or vice versa depends on the use case completely. Both of these databases are scalable and can help you in getting you scale at the production stage. POSTGRESQL and MySQL are widely used SQL databases and MongoDB is widely used as the NoSql database. Firebase is also widely used in developing prototypes and leveraging Realtime Database compatibility.
- NodeJS, flask, Django: — These all are considered as backend frameworks and helps in developing REST APIs and acts as the bridge between your front end applications and server-side implementations. If you are comfortable with javascript Its recommended to start with NodeJS and if comfortable working with python its recommended to start with Flask or Django.
- ReactJS, Angular: — These are considered as front-end web frameworks and helpful in creating the client-side of the product. These frameworks are widely used with HTML/CSS to make the complete client-side of the websites. While HTML/CSS are responsible for handling the design aspect, React and Angular are used for implementations and logic handling.
Unit Testing, Alpha, and Beta Releases: — Its often said, there is no better tester than the developer itself. One of the best practices considered in the product life cycle and the most crucial one is the end to end testing of the whole product. We all know the first impression is the last impression and if the application crashes at the time of launch, your product gets judged by its cover. To make the process faster certain tests can be programmed, where you expect certain outputs based on your inputs and check accordingly. This process is called unit testing and widely used in almost all organizations. It’s equally important to test the product physically and make sure all edge cases are covered and all the issues should be tracked and should be shared with developers to make sure they fix them timely. Its a good developer practice that they check for all the edge cases while developing that feature itself to make sure they develop efficiently. Before going for a production release, most of the organizations first release alpha versions and Beta versions. This helps them to get feedback and bugs from a specific set of audiences to fix all sorts of bugs and do load testing on a significant size of the group. Following tools can help you write tests and do effective testing
- Selenium: — It’s a python library widely used to test web frameworks by automatically testing the whole flow of the application. It can run tests really fast and all the tests are portrayed as if run by an actual user.
- Junit: — JUnit is an open-source unit testing framework for a test-driven development environment. It supports the core concept of “first testing than coding”. This framework is specifically designed for Java programming language.
- HtmlUnit: — HtmlUnit is an open-source unit testing framework that supports JavaScript and it provides GUI features like forms, links, tables, etc. It offers an open-source Java library that contains a GUI-less browser for Java programs. HtmlUnit leverages the JavaScript engine named as Mozilla Rhino and supports protocols like HTTP, HTTPS. It also supports cookie, submit methods like GET, POST, and proxy server.
Production and Maintenance: — Finish strong, Its the only respectable way to finish. Believe me, launching your own idea is one of the greatest feelings but to make sure you hit the market with the bang, it’s really important to make production-grade apps. Most of the frameworks require separate production build from the development build. It’s really beneficial to implement a CI/CD pipeline for your application to make sure your process of pushing updates is safe, secured, and easy to use. If your application uses server-side databases, it’s always advisable to run periodic backups to prevent accidental loss of data. There are many hosting services available and you can choose the best among them according to various factors such as pricing, the region of servers, Services they are offering, target audience, scalability and features that benefit you.We often use many environments, frameworks and services, simultaneously for any product and its a hassle to set up all environments on your local machine, server, other developers machine, etc, to get rid of this, you can use docker which divide split everything into containers and just installing a container with a script automatically configures your environment on any machine.
Once the product is live in the market, maintenance of the codebase and product is a necessary step for effective user interaction and experience. Always implement a mechanism to get user feedback, what new features the customer is expecting, an option to report bugs so that you can regularly improve your product. Regular documentation, code-cleanup, code-reviews are required so that your product can scale timely and you get the best out of it. You can use the following tools to hit production standards easily.
- TravisCI/CD, GitHub actions, Jenkins: — These services are used to implement CI/CD pipeline for your application. They automate most of your processes like deploying production build to the Version control system, running tests on the build, and if successfully passed deploying on the production server. Most of these services offer a
- AWS, DigitalOcean, Heroku, GCP: — These are some of the widely used cloud services. They are trusted and decently priced. Most of them offer various pricing according to your needs and can very easily be scaled. They also offer free tier to experiment with their services and getting used to working with them. They can solve all your needs of cloud servers, databases, domains, etc.
- Trello, Jira: -These tools can be used to manage the whole development cycle of your product very systematically and efficiently. They work with the concept of boards and cards for all sub-topics like current issues, to-do tasks, tasks completed, etc. Jira follows the agile product development concept and can be really helpful in scaling and tracking things.
Congratulations, you have successfully scaled your idea into an effective product that can be used by millions. In my experience, I have faced hurdles at every application I launched, with every company I worked with but the only way I figured out how to overcome them, is to fight those challenges and learn. There can be failures at the start, maybe your product crashes during launch or users might not like the experience but you aren’t the first person to experience rejection , failures are part of the journey and only determination and hard work can guide you to the path of success. All the best, may all frameworks be in your favor :)