3 Questions to define a software product

Imagine you are in charge of creating a clear specification for a new software product. On one side you have your customer - a a high energy, super smart non-techie who flies off in tangents in every discussion yet has the most amazing business idea that needs a web and mobile app. On your other side you have software developers who want a precise software definition that goes over the nitty gritty of what the software needs to do.

What do you do?

Let me go over how we do this with our 3 question approach. This is part 1 in my series on defining software.

Back to the your problem:

How to define a software product?

Every software product we see on the market started from an idea. The idea came from the need. The need presented itself when there is a lacking of carrying out tasks.

This is where the software product management - SPM shines. Understanding the “needs” is the primary goal for any product manager. We use software solutions every day without understanding the true value of it. Mostly because we have it already. There was a time we didn’t have the most basic solution known to mankind, Emails. We can’t imagine that time when it took up to months to send a message, or “mail”, to another person living in a distance.

Then someone asked the question “why?”, the first step to designing a great solution is born with a word. Questioning the limits and vulnerability of the existing solutions. Once it was determined that the existing mail communication is ineffective, the new idea is born.

Then they asked the question “what?”, which is the second most important step to designing any solution. Now knowing the issues with the existing solution, questioning what can be done to improve it will give them more ways to think to replace the existing solution, or system, of communication.

Once they figured out what needed to be done, they asked the question “how?” they can replace the system. The final question to designing any solution, looking for the answers on how to replace the system gave them the access to the tools those were need to create the new solution.

The “why” the “what” and the “how”, the three fundamental questions to defining any products, or solutions. Understanding this paradigm can help any product managers gain confidence for defining products. Product managers’ lives becomes very easy when they understand the answers for these questions. To define a product that you are building, you must go through these questions in step-by-step process.

Understanding the “Why?

First, the “why” will help you to understand the actual need of the software you are trying to build, for your customers.

The key to understand a product that you are defining, designing and developing, is to understand the need for that product. Without a clear statement of the need if you jump in to the “how” based on some rough ideas on the “why”, it will often result in a product with that don’t address the stakeholders’ requests (no matter how good they look and function well). Most of the time product managers can assume what the customers/stakeholders are talking about when they mention their need but to master it you must start with diving in to details at the beginning of your conversation with them. Ask them why do they need this software/solution, why don’t their current system/process isn’t working, how do they want to their current system/process to function, etc. once you gather the initial needs of your customer, document them to understand their lacking. Investigate the system that they are currently using. Research the answers that you might think is valuable to them and easier for you to design.

The ”why” often usually helps to describe the vision of the product.

OK, the comic strip on the right is just a joke but a really good one, the why should always be aimed at the end user not company that’s profiting from the software!

Awesome “Why?” joke thanks to rstevens

Awesome “Why?” joke thanks to rstevens

what.png

Planning for the “What?

The next step is to find out “what” can you do to provide a solution (or a product as a solution) for customers to overcome their difficulties. A very good practice is to investigate the process on the Internet and see how many have solved this need. It always helps to learn from your competitors. One bad practice is to jump to the development phase. In this way you may not know for sure, that the solution you have provided to your customers will serve them longer, or they can get any value out of using it, with the tools and technology you used to build the product for the customers. You must be able to plan more than one solution for a single need and try to understand the flaws in them. You can also use the help of UX and other interaction professionals to develop mockups or wireframes to show how concept of the product you need to build.

The “what’ part of the process helps you to capture the requirements, feature specification and milestones.

Deciding the “How

Now that you know why and what you are doing, you can now jump to code. The third step gets easier when you have finalized what you will be building and why. Now comes the challenge on “how” to build what you have defined. With all the materials, such as business requirements, feature requirements, UX, models, your life becomes more easier to decide on the technology you will be using and design milestones in building the product you defined. This part is where you can race to code to build the product that your customers desire. Developers and architects should be given the freedom to make decisions regarding the implementation process.

In another way of saying, the “how” helps “what” is required to be built.

Concluding

To put a product on the (hypothetical) shelf, product managers have to be very precise in what they define as their product, both for the customers and the engineers. Using the “why”, “what” and “how” approach will help you to achieve that more efficiently and precisely.

How to make software in Bangladesh?

As a custom software development company operating out of Dhaka, Bangladesh for the past 16 years, a question we get asked all the time is “how do we make our software from Bangladesh?”. A variation to this “Wow, I had no idea that Bangladesh is so far ahead in software development". Bangladesh has indeed made huge strides in software development in the past few years.

When we started back in 2004 (feels like ancient times!) there were probably a dozen companies that were actually developing software. We registered as the 248th member at BASIS the official association for software companies in Bangladesh, but of the other 247 most were either dormant shell companies, ISPs, hardware and network equipment companies. The picture is completely different now, with literally hundreds of vibrant active software companies working from IoT to innovative apps, startups with the potential to become the next big thing and many world class custom software consultancies.

In recent report done by USAID - Comprehensive private sector assessment the domain spread of the software companies are described with the graphics below:

bd software domains.png

This shows how mature and broad the software development industry has become in Bangladesh. So the answer to the question in the title of this article is easy. If you are planning to make your software in Bangladesh you have many choices and you are very likely to find the company that has experience in your business and technology domain. We go over some of your options below:

Use a custom software development company

According to BASIS is there are more than 300+ well established companies who make custom software for their customers. The size varies from a student run small 1-5 person company to major enterprises with hundreds of developers. Accordingly you’ll also find a huge variation in pricing too. Whom you select would be a decision based on your budget and complexity of your software requirement.

Read our article on how to choose a good software vendor if you are new to this game.

Use a freelancer based in Bangladesh

There is a large number of freelancers working from home in Bangladesh. Many are excellent software developers who have worked on large international projects. Thus some of the freelancers have huge exposure and have skills comparable to any you can find in an established software company. Site such as upwork can easily get you connected with such freelancers. You can also find potential freelancers in LinkedIn or various developer forums. If your project does not require a team or if the specifications are well developed and you know exactly what you want, freelancers are a great option.


The only run is the long run - building a great software company

If you want to build a great software company, you should only build it with the long term in mind. This may sound counter-intuitive, after all the software world feels very short term with it’s ever changing technology and trends; and this sometimes leads the people who start and run a software company lose the long term view that most other industries have. Yet this is a fundamental mistake, at its heart the creation of software is a craft and sometimes even an art. And like all creative industry, it takes time, patience and resilience to perfect the creative process and culture.

When you have the long term in mind your mindset changes. Every business decisions you take changes. And all these little changes accumulate to a culture, a psyche and a people who value their work and their creation. This is the time honored strategy for all organizations that trades in the creative output. You don’t need it in a factory or say in a product manufacturing plant but you need it in a software company. Solely because a software company is never a product manufacturing plant. You may have heard it differently, you may even have started to believe it as such but it never is. Many have tried to force the “engineering” into a software company and failed. Many will no doubt keep trying, but I believe until we have built perfect AI bots that write software with built in human empathy, they too will fail.

The moment you bring in the long term you bring in decisions like: “it is better to take in a project that will not burn out my people” or “let’s invest a little more on the team’s ability to gel”. All of these lead to happiness - the magic that brings out the best in humans. And you need that best, for them to find the best solution to a next to impossible problem, or the most subtle way to let the user of their software know that they left an entry blank. With happiness you find passion in your software projects, you find people pro-actively participating to make the product better, challenging themselves to strive even higher.

As we start a new year, our 16th as a company, these are the words we keep reminding ourselves. The long term has always been our goal, even when we started with just three people working in a small room. And 16 years later we are happy that we had always stayed with that as our guiding star. It has not been easy, and we don’t expect it to be easy, but the journey has been amazing and that makes all the difference.

Here’s to a great new year. May this year be your greatest. And may we meet years from now and smile that we had taken the road less traveled.

Long Term (1).png

Mobile games development in Bangladesh

At Kaz we’ve been developing mobile applications for ages. When we did our first few apps way back in 2008 (scary!) we learnt our first lessons about how different the mobile space was. We blogged about our experiences.

Over the years we’ve honed our skills and learnt the art of making cool mobile apps that hits the spot. Mobile apps just have to be enough to get your job done without fuss and no more. And while it’s being not fussy, it needs to be uber stylish! Easy we say these days, and love any new mobile app that comes our way. With more than 30 apps under our belt we can certainly say we’ve been around the block!

Today’s blog will be a bit unusual. I’ll just put up some random thoughts and mini-wisdom that we’ve picked up over the years working as the mobile games developer based in Bangladesh.


Mobile games are a different beast

Now in the wide world of mobile apps, games are the most fun to make. But as the title says, they are a different beast altogether. There’s a bunch of things that you just have to get right to make a superb game.

Graphics and play

You’ve got to get the flow just perfect with graphics that oozes with fun and gaming moves that are fun and swift.

mobile-game-development-bangladesh.jpeg

Performance

If you have those sorted out then you get into the wonderful world of performance tuning. Making the game fast in a wide variety of devices (if you are covering Android then some historic junks in that mix too!) is a real challenge.

Store presence

And once all of that is done and dusted you have the challenge of making it stand out in the super crowded marketplace. We are a full service mobile apps developer, so we help our customers with everything related to getting the game on store which includes all those cool videos and screenshots that need to get people to download. Probably the hardest part in the story if you ask me!

Now enter in this story the new phenomenon of

hyper casual games

The italic, bold and large casing for this class of mobile games is intentional. They are a Universe on their own. The magic word in this space “fast“. How fast can you churn out a concept and get it live to try out download? See in this world there is no known formula, even the best ideas can die in a matter of minutes. The only thing that a software partner for mobile apps can help is to make the games as fast as possible. We help our customers with these projects by brainstorming out the bare basic game that has the main element of fun in the game play. We get this built in a matter of weeks (usually days) and get them out to the play store for testing out user adoption. The holy grail is user download and retention on day 1 and 5 (hopefully).

New rules for a new ball game.

Anyway, gotta go. Told you today’s blog would be weird one. But if you are looking for a uber cool, super fast software development company for mobile apps give us a ping. We think we can help you. Use the form below to get a free quote for the mobile app you want to make. You’ll be surprised!


Software entrepreneur's starting up checklist

We’ve been helping software entrepreneurs for the past 15 years to build their apps and bring the products to market. Helping startups is in our genes, as we started out with helping fledgling silicon valley startup get back on its feet. And over the past one and a half decade we have helped more than 20 startups get their products released.

We know it’s never a easy journey, it’s hard for the cash strapped entrepreneurs to make decisions about what to build and what to leave out, when and how to release their products, how to get their first customers and how to improve the product from those customers’ feedback. We have helped them navigate these murky waters, and in the process we have learnt a lot. Over the years we’ve blogged a lot of our experience that we want to share with with would be entrepreneurs and today I’ll try to distill our thoughts to almost a checklist of things that every software startup owner should be aware of before starting out on their bumpy ride.

0) Know the basics of software development

tools for startups.png

It’s the zeroth item in the list because it’s expected. Don’t get into a business unless you know the basics of that business - simple. This doesn’t mean you have to know Python programming or need to know how to SQL join. It’s great if you do (and many of our startup owners do because they were software developers themselves) but your role when you are wearing the entrepreneur hat does not need you to do them and actually it’s better not to know them with that hat (but you might be wearing the developer hat on other times - remember many startups are just a person show!). As an entrepreneur you need to know the basics of how things are done, what fits what and some basic tools. 5 Tools all non-technical software founders should use is a great starting point, but a little more googling will you great tutorials. Khan Academy is a great resource, here’s one that I give out to non-techie owners to start with: What is programming?



outsource software.png

1) Find the right developer

Now that you know that you want to build the app you need the people to build it for you. The first step is to decide if you want to outsource this or if you want to hire your own developers to do it (or of course if you want to write it yourself). Deciding to outsource your development or not is a guide we wrote sometime ago to distill our ideas around this. It’s usually straight forward to decide but if you decide to get an external company to build the app for you a much harder question is to find that vendor. How to select a software vendor? gives you some of our thoughts around this, and Testing an outsourcing partner is our cheat sheet for checking on your vendor.

2) Setup the right contracts

Once you found your vendor you’ll need to setup the contracts that protect your software and your product deliveries. Software development is a fluid process, where you need space for both you and your vendor to change and adapt as you progress through the development. Too tight a contract will make this process difficult and bring up frictions that are hard to remove leading to a bad software or no software at all. Too flexible a contract and you are at risk of getting a bad deal or a really bad product. Our article 5 things every software contract needs shares our ideas of coming up with contract that works.

3) Run the right process

When the software is being built there needs to be a set process for interacting with the developers. You’ll need to monitor but not start breathing down their necks. You’ll need to prioritize, guide and help the team navigate with your business priorities in mind since the goal of the software is clearly to bring in business but you’ll need to be careful not to derail things in the way. Not an easy task, but 5 things a software entrepreneur must remember gives out some of the advice we give to our startup owners.


5 Tools all non-technical software founders should use

Many software companies are run by founders who are non-technical themselves. As long as they have a technical team that is strong and reliable things work out just fine. However, there are some tools that the non-technical founders can use to make the software development process even smoother. These are tools that the techies themselves use but many founders shy away from them thinking of them as something that is "too techie". A little time investment on learning the basics of these tools could bring in huge improvement to how the software is made and delivered. These tools can save time and money by communicating early feed-backs and decisions in the software development process.

In our experience as a software development consultancy that has helped dozens of startups all over the world build out their products there are some tools that are absolutely vital for all the stakeholders to use - techies or non-techies. We insist that our customers use them, we even run training sessions for non-technical stakeholders to learn the tools. 

Today I'll run through my list of top 5 tools that every software project stakeholder should learn and use.

1. Issue Tracker

This is the easiest one to use. All software team use an issue tracker (or at least that is the least we can hope for). There are numerous very good trackers out there, what you choose depends on your taste and need. There is, for example, reliable workhorses like Jira or Fogbugz or super simple trello or if your team is all for mods - trac; the list is really endless here and it doesn't matter what the exact tracker is as long as it serves the team's need. Whichever tool they are using it's relatively simple to learn for a non-technical user and then start using it to stay in touch with what the development team is working on. The tracker is perfect for putting in early feedback on features, keeping track of what feature gets done when and to communicate with the developers within the context of particular tasks.

It is hard to list all the benefits of bringing in all the stakeholders to the issue tracker. It simplifies pretty much all conversations, takes away all the nasty surprises of product demos and brings in feedback at the right time of the development process.

2. Wire-framing tool

Wire-framing or mockup tools let you draw pictures of software screens in a quick and dirty way. They are essential to get a quick version of the software that can be used to communicate features, test if they meet the requirement and also check if users can use them. Usually the design team within a software group uses it to get the Ux done and rest of the group just uses the output for their work. But if a stakeholder can use the tool then she can quickly draw up her own screens or make modifications to the exiting ones without waiting for a designer to do it. This speeds up the whole communications channel and makes it really easy for complex ideas to be fleshed out.

I remember one project that we picked up midway where the founder would painstakingly write up huge documents to describe features that he and his team wanted to be built. These documents would take several meetings to be explained properly and even then misunderstood by a few in the team. Inevitably this created a lot of friction. We introduced a simple wire-framing tool to the founder's team and almost magically the whole process transformed to something that was simple and fun. 

My favorite tool is, of course, balsamiq which is just perfect for non-technical people. But there are many others out there although some can be quite daunting :)

 3. Build and deployment tool

A build system lets anyone create a build of the software from the latest code and deploy it on a "staging" where it can tried out. This has to be setup by the technical team and every self respecting software team should have one setup for even the smallest of software projects.

Once it's setup, it's relatively easy for a non-technical user to learn how to "get a build" done. Usually a few button clicks in the right places does the trick. But this gives immense power to the stakeholder as it lets her get a view of the software at any time without a lengthy process involving the technical team. Essential for quick feedbacks or a sneak peek or even a pre-launch demo to prospective customers.

Many tools out there for this. Jenkins and Cruise Control are popular ones and very simple to use once setup, but there are others that are equally good. 

4. Performance monitoring tools

There are many tools that can test the performance of a software. These are essential for quality assurance team to test the software but are equally useful to a non-technical founder to gauge the quality of the software that is being delivered. These tools can give the stakeholders a list of issues that they can then prioritize and push for fixes from the development team.

The tool(s) to use depends on the nature of the application being built. Usually a few google searches land you to the right pages, but here are some that have proved the test of time. An old but faithful tool for testing the quality and performance of any web application is ySlow it gives you a nice list of things that needs fixings to make the site faster and also points out glaring mistakes which may not be so glaring at all to a non-techie. Other examples in this genre are Google PageSpeed, WebPageTest, Page Analyzer and the full of bells and whistle GTMetrix.

Great tool to keep your dev team on their toes :)

5. Code quality tester tools

Now I'm in contentious territory! These tools analyzes the actual code and rates it for quality. It identifies obvious mistakes, not so obvious bad practices even performance flaws in the algorithm. A non-technical founder may find it impossible to judge the quality of the code himself but he can utilize these tools get an idea about the code. In many ways these tools can act like auditors for him.

Again this requires technical team to set things up properly. But once done the actual analysis is a simple process. It is definitely worth the time investment. At the bare minimum a non-technical founder should insist on having such tools installed on the development environment and ask the team to use them.

Once again, many providers, but only a few that are outstanding. The tool to use also depends on the technology platform e.g. in the Microsoft world Resharper or FxCop are very good tools. Java world has many (as usual) e.g. findbugs, PMD, etc. Whatever the platform there's a code analysis tool that is just a google search away!

 

// This article is a reprint from our CTO's LinkedIn pulse 

Have you considered virtual reality for your app? You should.

VR or virtual reality may not be as fancy or "game-like" or just too far away as you think. There are many use cases where VR can be used with great success in an everyday software!

What is it?

Virtual reality enables companies to simulate environments within their software. With these applications, users can experience a real environment without physically visiting the place or they can move around within an imaginary environment. So, for example, a person from across town, in another state, or even across the globe, can experience the environment, without leaving her couch! A Star Wars fan might find herself on a Star Destroyer or a Republic Cruise ship making decisions with the help of the Force – and a VR software.

 

Why should I consider it? 

The use of VR can be in many facets of a software application. Many of our customers shy away from VR saying that it's just too fancy or not a good fit for their business. But if you think about it a bit more you'll find many benefits using virtual reality where you'd think none existed. Here are some example areas where we have convinced our existing or new customers to re-think their applications and to leverage this upcoming technology: 

  • Cost Savings: Rather than build training room or use much needed space, companies can build virtual class rooms that simulate their new employees’ work environment.  
  • Real-Life Interactive Training: Human Resources use virtual reality software to build training modules that mimic specific scenarios, and employees can interact with these modules from a convenient location. Such training often keeps learners engaged and helps to build confidence.
  • Experience a User’s Pains: "Remoting" in to a user’s work environtment for specialized help. VR software enables helpdesk attendants to simulate the user’s environment and get a clearer understanding of the way in which the current issues are impacting productivity.
  • Help Customers Try before Buying: Businesses can use virtual reality software to give customers a 360-degree view of products. This helps customers select the most suitable product and reduces sales returns.

So, think again, adding a VR layer might solve many of the challenges in your application or bring in a completely new way of how your software adds value to your customers. If you want our help, we'd love to share our ideas! Give us a ping at info@kaz.com.bd

 

Saving the startup from burning up

The Problem

The biggest worry for any software startup owner is

Will I burn up my funds before I can get my products launched?

And this should, indeed, be her biggest worry. Great ideas are good, but if you cannot launch and get users, great ideas die out badly. It is absolutely essential to get something out quickly, get user feedback and pivot to the next step. If you can't then there is a very good chance that your startup will just "burn up".

A great article is around expected burn rates (in US) and what you should aim for is Burn rates: How much? by Fred Wilson. Here is a rule of thumb about burn rates from there:

...multiply the number of people on the team by $10k to get the monthly burn. That is not the number you pay an employee. That is the "fully burdended" cost of a person including rent and other related costs. 

And this was 2011. The figures are much higher these days for sure.

A Solution

A great solution to this burn up before launch problem is to use a development partner who can lower the costs of production. By having developers in low cost countries such as Bangladesh, Cambodia, Nepal, etc. it is possible to lower the costs without compromising on quality.

We are old hands in this start up and burn up drama. When we started in 2004 our first project was to help a silicon valley start up save themselves by finishing and launching a product they have been trying to build before they ran out of money. We made their remaining funds run a long way and got the product out within 6 months within budget. With that as our initiation, it is no wonder that we have helped more than 20 startups get their products out on their angel funding. Once the 1.0 product is out a start up can breath easy and see how user adoption and feedback is. Based on that they can decide to seek more funding or in the happy cases start making money!

For us, as a software company that thrives on ideas and innovation, working with the startups is the biggest fun. This gives us the chance to work on new technology, challenge ourselves with difficult technical hurdles and deadlines. 

We are so confident on getting the first versions out with angel funded startups that we are offering startups looking for dev partners in the CeBIT 2016  a "Launch under 10K Euro" offer. 

startup burn rate

 

 

 

Interested? 

Meet us at CeBIT2016 or contact us to explore.