What are some practices in Software Engineering which are useful in other fields of product development as well?
-
As Jeff Hammerbacher once remarked the smartest of our age are working on how to get people to click on ads. I feel a few dozen people rolling out a service as awesome as Instagram leaves a lot for people in other industries to learn from. No doubt it is cheaper and easier to develop software products but there is no arguing it is a lot agile and smarter than product design in any other field.
-
Answer:
Some of the following principles started in the software industry, others have existed for much longer. Release early, release often. People spend a lot of time worrying about "what ifs": What if my application gets 10m users overnight and the servers crash? What if I ask her out and she says no? What if the press doesn't get excited about my demo? Unlike releasing a product, worrying and speculating are not effective ways to gather feedback. This is one of the major principles of the Lean Startup Approach. Besides, 99% of the time you will find that your worries were unnecessary (because it takes you years to get to 10m users, the girl says 'yes', and the press turns out to be less valuable to you than word-of-mouth referrals). Automate everything. Software engineers try to automate anything that has to be done repeatedly. Automation shortens the product development cycle while also reducing the risk of human errors and omissions. On a different note, products that automate tasks which people have to do manually are often very successful. A/B test everything. One finding from UI/UX design is that people's behaviors are far from predictable (try http://www.slideshare.net/webanalystsinfo/guess-the-outcome-of-15-ab-tests in full-screen mode just for fun). When you have several hypotheses, the only way to determine the best one is to test all of them side-by-side. Relying solely on intuition often leads people astray. Start with a Beta version. If you brand something as a Beta, customers are more forgiving of flaws and more generous with feedback. Be data-driven. Data should not be the only thing you consider when you make product decisions, but it should be a major factor. If you're not sure about something, gather data to help you decide. Simplicity trumps complexity. Many of the recent Silicon Valley success stories are products that did the same thing as the competition, but much more seamlessly and elegantly (iPod vs other mp3 players, Dropbox vs other cloud storage providers, etc.) When it comes to software, code that is simple and elegant stands up to time much better than code that is complex or 'clever'. Decouple as much as possible. When writing software, interdependencies kill you because keeping different pieces in sync creates a lot of work, and because bugs quickly creep in when you forget to update a dependency. As a result, good engineers design software so that various pieces communicate with each other through well-defined interfaces. That makes it much easier to improve the internals of something without worrying about breaking everything else. This is a good principle outside of software as well: turn components into black boxes as much as possible, so that you can iterate on each component separately. Be motivated by solving problems, not by making money. Ironically, writing software for the purpose of making money will usually make less money that writing software that solves problems that you or your friends have. This applies to other fields as well: if you focus on gimmicks or tricks or money, you won't be as successful as if you focus on making something that solves a problem or makes people's lives a little more pleasant. Don't be afraid to dream big. Software engineers and startups often pursue huge, audacious ideas (especially in Silicon Valley). Sometimes these ideas pan out and sometimes they don't, but thinking big when your competitors think small can be a great product strategy.
Leo Polovets at Quora Visit the source
Other answers
Kanban, Lean application on software development, has becoming a buzz in Agile communities and I think its core concept can be used outside software. After all, its root is not from software but Toyota Production System. In short, Kanban focuses on - Visualize the workflow eg "big" card board on the wall with columns representing stages in the workflow - Limited Work-In-Progress to reduce waste of delays and context switching. Focusing on one thing at a time can actually make the flow goes smoother. - Manage the flow - the goal is to make it smoothest, not necessary fastest - Make policy explicit - print your team agreement and put it on the wall - Collaborative Improve the process as a team For more details, check out Kanban book by David Anderson
Kulawat Pom Wongsaroj
Related Q & A:
- What is an injected defect in Software Engineering?Best solution by Software Quality Assurance & Testing
- Are there any professional software engineering certifications?Best solution by en.wikipedia.org
- Software Engineering Vs Computer Science?Best solution by Yahoo! Answers
- What are some good colleges for programming/software engineering?Best solution by colleges.usnews.rankingsandreviews.com
- What are the job opportunities for ME software engineering fresher?Best solution by Quora
Just Added Q & A:
- How many active mobile subscribers are there in China?Best solution by Quora
- How to find the right vacation?Best solution by bookit.com
- How To Make Your Own Primer?Best solution by thekrazycouponlady.com
- How do you get the domain & range?Best solution by ChaCha
- How do you open pop up blockers?Best solution by Yahoo! Answers
For every problem there is a solution! Proved by Solucija.
-
Got an issue and looking for advice?
-
Ask Solucija to search every corner of the Web for help.
-
Get workable solutions and helpful tips in a moment.
Just ask Solucija about an issue you face and immediately get a list of ready solutions, answers and tips from other Internet users. We always provide the most suitable and complete answer to your question at the top, along with a few good alternatives below.