I am trying to know from Startups as to which s/w dev. methodologies/techniques are helping them release good software which in turn ensures the success of their products.I definitely understand that startups will not have fixed processs . But there definitely will be a "method to madness" !!
This question is important to me as I am conducting some field research on this so that I can analyze the feedbacks from here as well as other sources and take it back for further discussion to a Startups meetup trying to promote the knowledge about efficient software development methodologies to Startups to help promote more efficient practices to benefit those startups.
Your help will be greatly appreciated.
First and foremost, what is the biggest challenge for the s/w teams in a startup - it is chaos.
Startups have flat and liberal organizational structures, so you have ideas coming from everyone. This could be good and bad. Good - because it shows the collective enthusiasm and energy of the team. Bad - it creates noise and a lot of CHAOS.
I would certainly advocate an agile methodology but make sure it's product-led. Depending on what you are building, bringing in some product management discipline early will really help to keep focus on what is important to the market/customers you are targeting.
Teams of developers often have the tendency to build the things that are cool, intellectually stimulating, or familiar. It really helps to have someone accountable to building the right featureset from the very start.
a lot depends on the industry being served. Deepinder's comments below are pretty spot on. But there are industries like Healthcare, embedded systems, transportation, and anything that has life-safety issues involved where more rigorous approaches are required not only to insure product quality but to withstand regulatory scrutiny.
Agile, Scrum etc all require an effective "Voice of The Customer" to be able to deliver a quality product. And in most startups, there is no "Voice of The Customer". Instead that is proxied by the founders' vision of what they seek to build. which is a common cause of failure of Agile methods
Agile/scrum methods also need to be adapted to use Test Driven Development for embedded systems. Embedded Systems (and most IoT is embedded hence the slow development curve of IoT) can benefit from Agile/Scrum methodologies early on, but all too often the developers forget that once it is productized, the ability to do updates becomes very limited.
For example, in "Industrial IoT" at "real scale" a factory or production facility might run 3-5 years in continuous operation, during which time you cannot make any real software updates. That means it also cannot fail in a way that necessitates a "Release To Web" style update
CMMI is a common methodology used in such environments.
Amazon Web Services are key.
Explore agile methodologies (Scrum in particular), they are the current standard in software development.
Scrum and the UP are the best
Many have recommended agile. In my experience a blend of various agile practices can have a huge impact
1. Imbibing lean principles - Startups are limited by resources. This helps them focus the limited resources on building what is important for success and avoid waste
2. Inculcating Devops practices - Cut down on time a feature takes to reach users. Continuous Integration & Delivery compliment Lean very well. Also help you pivot quickly
3. Borrow engineering practices from XP & TDD. Only pickup whatever is relevant at the stage you are
4. Bring in some discipline/cadence by borrowing relevant practices (standups, singups) from Scrum
If and when you have a startup idea, the odds that you’re completely sure of what will work and what won’t are laughably slim. So that way Waterfall approach aren’t serve well in most cases cause it is not flexible at all. So what does?
If the project is complicated (which is pretty much any project harder than a business card) startups should look for as much flexibility as possible with agile development.
But what to choose: Scrum or Kanban?
Our experiences have taught us that startups shouldn’t even choose in most cases. We don’t know any team that uses pure, unadulterated Scrum that doesn’t stray from a single rule in the book. On the other hand, when the scope of product grows while using Kanban, they might find it necessary to borrow more and more Scrum rules to better organize the work and improve the processes continuously.
What’s most important when it comes to deciding is to understand the framework and overarching guiding elements of both and then take and choose the best from both worlds. Start with Kanban to make it simple, and take whatever you need from Scrum when necessary.
Work it out. Trust the process. Be agile!
If you want to know more about differencies of methodologies this article is worth reading.
I'm just finishing development of the first MVP iteration of a mobile app. I hired a remote development team and am finding my process to be very effective.
Before hiring the team, I had everyone that would potentially be working on the project sign an electronic NDA. Once they signed, I gave them the list of requirements broken up into milestones. After we agreed on the order and payment amount for each milestone, they began development. I was getting status updates at the end of each day and was available to answer questions during the day. But I was very informal with my interactions.
The code was kept in a private online repository and when features were completed they would upload the code to the repository. I would then download the code to my machine and test it on my phone. Once a milestone was completed, I would send them money via Paypal.
We communicated over Skype.
Hope this helps.