44 Tehama St.
San Francisco, CA 94105


MVP Launch

Developers and designers are engaged in building out an MVP while we simultaneously move to launch with early customers.

Read on

1. Setting OKRs

Now that you’ve put the pieces in place, you’re going to need to define proper leadership and methods of bringing about your goals as a company.

What are OKRs

OKR stands for Objectives and Key Results. OKRs are a goal-setting methodology that makes personal and team goals transparent for the whole organization while providing individual guidance. OKRs were first taken up by Intel and made famous by Google. Many high-growth companies use OKRs.

Why it’s important to set OKRs

  • Motivation of employees and management
  • Autonomy in decision-making
  • Understanding one’s place in the hierarchy and how each individual’s contributions hold up

OKRs create transparent goal systems for the whole company. Each key result needs to be measurable, which also means it can be scored at the end of a period - usually quarter. This creates an individual signpost/compass and helps with prioritization. Everybody knows their motivation and targets for the quarter and can find them in the company ledger.

Having OKRs set and agreed upon by everyone lends a great deal of autonomy, but also responsibility, to each individual. Anything that helps to achieve OKRs is on the right track (within company standards, codes of conduct, etc.). Anything that does not is usually deprioritized. This can be decided based on each individual’s level without the need of executive decisions from the top of the company.

What makes good OKRs

  • Maximum of 5 objectives, ideally 3
  • Max 5 key results per objective
  • KR must be measurable
  • Up to 60% of OKRs should be defined from your direct reports
  • They have to be aligned with the company strategy

How to communicate OKRs to the company

If you are just now starting with OKRs, first pick a small group of people (less than 10) to test them out on. Make the test public to the rest of the company so they know what’s coming. Typically, if you try to set OKRs for everybody and your organization has not done this before, you are likely to fail and not see the benefits. Gradual rollout in this situation is better. The benefits and methodology of OKRs should be communicated to everyone in a company-wide presentation.

2. Company Foundation

As a founder, company incorporation has two main targets. The first is your protection, and the second is defining ownership and roles.


Companies’ forms and their legal regulation can vary in different countries and jurisdictions, but all of them offer several versions with limited liability for the owners. Some examples are Ltd. or LLC companies, but also joint-stock companies. Limited liability means that if a startup fails or has financial problems, you will lose only your contributions to the company; no one should be able to touch your private property and wealth (though this doesn’t apply to every country’s laws). In general, there are very few situations when companies with unlimited liability offer benefits to the owners.

This point is important especially because it can be temptingly easy for founders to conclude contracts (suppliers, clients, financing etc.) in their name before the company is legally incorporated, with the intention to change them under the company in the future. This can be extremely risky and dangerous since the founder becomes personally responsible for the contract and has full liability.

Regarding the difference between Ltd. companies and stock companies: in general stock companies enable easier transactions with equity, voting etc., but on the other hand, they’re more demanding in terms of administration and legal compliance. Due to this, they are more appropriate for more mature and valuable companies, while a Ltd. is sufficient enough for the early stages.

Defining ownership

Defining ownership and conditions can be more complicated than it seems. The evolution of a startup can be very fast and dynamic. Co-founders and others you start the company with will very likely change after six months or a year. Also, the involvement and contributions of people might be of a different nature, and people may have different expectations. Due to these differences, it is necessary to clarify everything as soon as possible, preferably in the form of a contract. This is called a shareholders’ or co-founders’ agreement. This contract should include not only equity shares, but also vesting rules. That means it’s legally binding, that, for example, if one of the co-founders decides to leave the startup in its first year, he will lose his whole share, or part of his share will be passed to the others. It should also cover other situations, such as new co-founders entering the company or how you might get equity motivation, e.g., key employees, and how much. Other provisions are, for example, restrictions on sales of the share for some period and without prior approval of the other shareholders.

3. Internal development team or External agency

Technological agencies are a versatile tool to have in your toolbox. They can do a range of things, starting with creating a prototype in a matter of hours to taking care of all your technological needs so you can focus on what you’re best at. As with almost everything in the startup world, making a good decision depends on a sober analysis of your current situation and the resources that are available to you.

Dream team?

Today, having a highly professional and skilled development team is a fortune in itself. It gives your company many advantages and maybe just the competitive edge it needs. It saves you lots of money. You can take measures to ensure the product is quality and the whole development is more agile with fewer communication barriers. Unfortunately, though, those advantages come only if you already have a team that’s highly skilled, highly professional, and highly experienced. The establishment of a development team is actually the hardest part. Nowadays, finding great developers is harder than getting enough sleep, and you need great developers if you want to succeed in the startup world.

You need a lead developer

If you’re not the “tech guy”, you need someone who will be the tech guy for you. This person must have wide-ranging knowledge across multiple platforms (web frontend, backend, iOS, android, data science… whatever platform you’re planning to develop on) and be able to make the big engineering decisions. He should also be a good manager and even better teacher. In engineering, one technological decision can be the difference between finishing the product 6 months earlier and not finishing at all; that’s why it’s so important to have a great lead developer.

Do you already have your lead developer? Great! With years of practice in this crazy field, he has probably made lots of connections and should be able to recruit or at least recommend you senior developers. No recruiting agency can even get close to the results of a lead developer’s personal connections, plus, in the early stages of your startup, he can also take the role of a senior developer on one of the platforms.

You need a senior developer for each platform

First of all, let me debunk a common misconception. Two junior developers do not make up for one senior developer, not even three, not even five. A senior developer is much more than just a fast coder. Not having one will probably result in your startup throwing in the towel before finishing its MVP, and if you’re actually lucky enough to finish an MVP, it’ll be buggy, non-scalable, and prime for rewriting.

This may sound a bit scary, but don’t worry. Different outcomes can arise and there is a solution for all of them. You either:

Have a lead developer and senior developers for each platform and trust them.

Great, you’re in the sweet spot, and if you followed the tips outlined here, they are probably responsible professionals and ready to take care of what’s necessary. In this case, think of agencies as a complementary tool to your A-team. In a perfect world, this A-team should now be working on everything, but sometimes smaller things that need doing will pop up or something unexpected that needs immediate attention happens. So what do you do? Wait until your main product is finished? That could take months. Assign one of your engineers a different task for the next three days? That would only make him unfocused. Make somebody stay overtime? Tired and unhappy employees=bad quality.

Hire an agency

You can’t really afford wasting the precious time and expertise of your A-team. Consider these scenarios:

  • You need your landing page redesigned before meeting an investor later this week.
  • Your senior Android developer quit a month before release.
  • You’ve got a genius idea for a smaller app that would support your main product.

A great response to all of these scenarios would be to hire an agency. You don’t have to do everything yourself. Making sure critical parts of your app are delivered by people you trust the most is a great idea, but those people can’t do everything all the time, and it would be a pity to waste an opportunity because you didn’t have enough people at the time.

You have some of the people mentioned above, but are missing some.

That’s a tough one. You have qualified people you want to work with, but not enough of them. Trying to find key people might take months without the right connections, and nobody has that much free time on their hands. What you need to do is to focus on the platforms you can do right now and grow your team steadily. Consider this example:

You’re making a killer mobile app and you have your lead developer specialized in backend, one senior developer specialized in iOS (and a few junior developers to help them out), however, there is also this weird platform called Android, which is used by a significant portion of your userbase, but it’s been a month now, and you can’t find a suitable candidate to lead Android development. Should you?

a) Wait months until you find one

b) Bail on 30% of your potential customers

c) GIve up and get a job at McDonald’s

d) Hire an agency

Don’t get me wrong, the first thing you should do is start looking for great Android developers. Just don’t bet everything on finding one in the next month—not even mentioning the fact that you want to try out your developers before giving them the important task of laying the foundation stones of your app. Hire an agency to start working on the Android app, let your new Android developers collaborate with the agency when you find them and then just take after the agency when your new Android team has proven capable.

I can’t stress enough how much money and time this can save you.

You have neither the lead developer nor senior developers

This is okay as well. Focus on what you’re good at and outsource the technological part to somebody more experienced. Do some deep research into what agency would best suit your needs, and when you find the one you’re truly comfortable with, trust them to do their job.

This is literally what agencies are for and what they love doing most.

4. Recruit from a Developer's Perspective

Want to make your ads interesting enough to catch the attention of developers? I am a developer, and I do not respond to 19 out of 20 ads from recruiters. Programmers are a tough sell since the tech market determined the high value of this work. If the programmer is overwhelmed with bids, you need to find smarter ways to get their attention. I’ll tell you what would work for me.

Some initial things to look for

You can recognize a skilled developer by the large portfolio of apps or projects they’ve done, not only in previous jobs, but also in their own time. This is what distinguishes a skilled developer from a “normal” one. A skilled developer will have (among other things) the interest and enthusiasm to develop their own projects even when coming home from work late in the evening. Most of the time, these “hobby” projects are of a different type than the developer does in his work, so that proves he has a good overview of the large field of technology.

You don’t have to code to speak their language, but it helps

The best job posts are written by senior employees who understand what the job requires. Someone who won’t mistake Java with JavaScript should highlight why the work is interesting or what sweet new technologies the future team member will get to use. Working with uninteresting technologies can be detrimental for you. Unless you’re an unflexible corporation, you should follow new trends and implement the newest technologies. Otherwise, forget about getting a good programmer at an affordable salary. (At U+ we actually use a lean startup method to help such corporations get cool digital products out the door faster).

Show compelling work

One of the best motivations is when your product can help people, and the developer team identifies with it and feels it’s something they can put their heart into. But this may mean that a foodie developer might prefer to code a startup for sharing coffee cup lids instead of an information system for improving executive efficiency. But c’est la vie. We, developers, are fickle creatures with unique proclivities.

Occasionally, I see ads where big companies try to speak the language of the young and look cool. Then, after a young person gets seduced by said company (usually through the promise of much money), they force him to wear a tie, sit in a cubicle, and create tickets in SAP. The employee will eventually get burned out. But then he has that mortgage to pay each month, so he stays with it. Create a better motivation than just money or personal benefit. Show developers that you offer inspiring, rewarding work where they’ll improve the lives of others. You should communicate how big of an impact this job can have on society. It is good to try to show any benefits you can. Even though you might not be saving lives, you can help and influence big groups of people through your work.

Look in the right places

You can't usually find good programmers through public employment services or web ads. Capable developers are probably already employed and won’t bother to find a new job if they are already comfortable in their current position. If their employer pampers them, you are probably out of luck. But if you can find some underrated talent in a large corporation, you may have a future colleague on your hands.

Explore developer’s social communities

Courses, lectures, conferences, special Facebook groups, or referrals from colleagues and friends. Generally, it’s good recruitment if you are doing technology lectures to network with the developer community (this approach has proven to be very good). It is also a good idea to give rewards for recommending new colleagues. People like to work with their friends, so they will try to convince them to work for the company.


If you have a master's degree, you can be a thesis advisor or an external supervisor or directly negotiate with the university management for cooperation. However, you should choose the students carefully and making sure you get those who really like the work they are involved in and aren’t just in it for the degree. I understand that a recruiter cannot consult on a diploma thesis, but some of the programmers could. It can also be interesting to teach at the university a few hours a week. Approach capable students with job offers. Most of these students will feel honored for the opportunity and will be content working for a lower wage than an older professional. However, make sure you don’t exploit them like some "student companies" do because these students will eventually realize their own value.


Everyone is on LinkedIn, however, if you find a talented person, it’s not a good idea to call them immediately and try to push them to make a decision or arrange a meeting with you. Capable people are contacted almost daily, possibly by over ten recruiters, five of whom write personal messages, and three of whom try to call them directly because they think what they have an offer you can’t refuse. Calling is too much, because you're disturbing people from their current activities. Also, developers tend to be rather shy.

Personalized text is transparently fake. Sometimes, an even bigger blunder can occur, if for example, you leave the wrong name in the greeting. One recruiter contacted my colleague with a great offer “just for him”, except she called him Peter, even though his name is actually Daniel. He answered her politely that he is not really interested and called her Matt. And that was that.

Another good idea is to pay for advertisements on specialized online magazines (like root.cz). These places are visited by developers because they read articles and contribute to a discussion boards on these servers. You can place your ad in a groups on Facebook, which focus on a particular language/framework/topic. But first check, if the group allows job ads to be posted there.

A slightly different option from the previous ones is if you’re knowledgeable, contribute to discussions on forums/reddit/stackoverflow and include a link to your jobs page in your profile description or post footer. If you contribute often with high quality content, people will look at your profile and visit your website.

Personal attention

You should do some legwork and check out profiles outside of LinkedIn. It takes a lot of time, but the results may be worth it. I was once approached by a recruiter who read an article about my trip to India on my blog and invited me to her favorite Indian restaurant (since I mentioned in the article a few times I’m a fan of Indian cuisine). Even though I wasn’t looking for a new job at that time, I met her, and we spent three hours talking about everything possible over lunch. This was a great demonstration of personal attention, and I really enjoyed it. Another company took me to a rock concert. Get creative.

What to engage

Money isn’t everything, but it’s important. Don’t save money on good employees, because it is they who can attract other capable colleagues. I know a lot of companies that invest a lot of money in beautiful offices, spend a lot on benefits, but whose employees are paid much worse than their equally experienced colleagues. Of course it is logical: their salaries are lower because of the benefits, but it’s not exactly the right approach. Offices should be good, developers should have peace and space for work, summers in the office should be experienced without sweaty armpits, but it doesn’t make sense to focus only on benefits. Many people will admit they’d rather have more money on their account than a “free” multisport card (after all, it’s not actually free).

Be upfront about your company’s drawbacks are and what you need help with. You should not hide anything because it will always come out later and the probation period is long enough to reveal it anyway (with freelance there is no probation period, but also no commitment). Honesty is really important, and a connection is created when, for example, a new employee can help you when you need to do good devstack and no one else can.

Show colleagues that your new employee can learn from. Competent people would rather join a company with other competent people and interesting colleagues. It’s even perhaps best if this person contacts the candidate personally and offers him/her to meet in a cafe and talk about their future cooperation. I know a lot of people who had meetings like that.

Keep it informal.

Feel free to invite the candidate for a coffee or beer, be friendly, speak casually, and be genuine. I personally think it’s good to try it at a neutral place. Offices are perhaps too formal, and personally I prefer to get to know people on more casual terms before visiting the workspace.


“Sick days”, “young dynamic collective”, “opportunity to participate in decisions”, and “competitive salary”, are things offered by every IT company or startup. And if not, they will still write it in their job offer. These buzzwords should be givens for your company, so it doesn’t make sense to mention them as an extra advantage. You have to think up something more unique about why your company is a special opportunity.

Mention interesting benefits that are not offered by every company, such as:

  • Flexibility and freedom in work and the possibility to work remotely.
  • Work-life balance. Show people that you will not keep them at work against their will. Don’t force them to work on weekends. If the deadline is really close, don’t be afraid to offer them a bigger salary if they work in their free time. In my opinion this works really great.
  • Sports and fitness. Do you offer yoga, climbing, or running? Mention these and invite a candidate to a session before hiring.
  • Games. Programmers have to procrastinate too, so it’s good to have some entertainment for them. This will also make people more excited about coming to the office.
  • Food. The old Romans knew well (as our current politicians do) that bread and circuses are a great way to gain popularity. It's not that different with programmers. Do you offer free fruit and breakfast in the office? In addition, you can encourage programmers to be at work earlier with periodic breakfast spreads.
  • Personal development. Participation in language courses, conferences, company cooking courses or anything else is a welcome benefit, definitely worth mentioning.
  • Team-building events. Do you organize trips, wine tastings, climbing, canoeing, or team buildings where you eat organic goat cheese on a scenic farm? Personally, I can’t resist such things.
  • Free hardware. If you’re cool enough to offer Macs or PCs to employees according to their preference, you should probably mention it.
  • Phone plan. Many companies still do not provide phone plans to their employees, which is a shame because a company is able to negotiate significantly better conditions than an individual, and it’s another perk that could keep employees in the company (at least in a place like the Czech Republic, where no one wants to look for better conditions in the overpriced market of Czech mobile operators).
  • Coffee equals code. It’s maybe a bit literal of a statement, but I believe it’s true. So, if you have a La Marzocco coffee machine and beans from Doubleshot, you should certainly be proud of it. Tea is terrific as well. You could get a tea subscription for your office or find a tea guru. A great example is one company that has a tea room right in their office and uses it as a place for recruitment at conferences.

5. Launch Metrics

In the previous stage, you prepared a marketing strategy according to the STDC framework. In this stage, you’ll focus on the SEE, THINK, and DO parts. CARE you can leave for later. Now we’re dealing mainly with the acquisition. The goal is to make your marketing costs lower than your profit. If you do, that's half the battle.


You must first determine Customer lifetime value (CLV). And how to calculate it correctly? You just have to guess because you do not have enough data yet. There are many complex patterns but use common sense. Calculate it simply by multiplying the expected number of months and revenue from each user. This number must be less than the Acquisition Cost.

Acquisition cost

Acquisition cost isn’t easy to calculate because the user can reach you through many channels. For a more accurate calculation, complex attribution models are used, but this is a waste of time at this stage. At the end of the week, simply look at how much you've invested in all your campaigns and how much you've earned your customers. If your marketing expense is higher than your earnings, don’t panic. This may be because users are interested in the product, but you have barriers in the acquisition process they cannot overcome. It is important to focus on optimizing the conversion rate in this case.


Set up Google Analytics properly and especially conversion points. You do not have to measure everything from the beginning, but the conversion, yes. Especially the conversion between visit and sign up and between sign up and purchase. A funnel will be created and you will quickly see where your are losing customers.

It's about quickly testing the various channels and measuring. If you invest in PPC for a long time and don’t get paid customers, it’s a sign that no one wants your product. You messed up validation phase, or have problems with UX. Then it is better to stop the channel and evaluate the problem.

6. Sales Strategy and Business Goals

There are many different ways to achieve product/market fit. There are certain popular approaches, but one shouldn’t be chosen at random. While it’s okay to set ambitious goals, the strategies you devise should actually be executable. Any sales strategy should be centered around communicating your value to your customers. This sounds easy, but is surprisingly one of the things at which many startups fail.

Consider your sales team

  • What function does sales serve for your organization?
  • How does the sales department work with other departments?
  • What role does the sales team have in helping your startup hit its business goals?
  • What resources do sales require to get the job done?
  • What recommendations does sales leadership have?

Designing and executing your sales strategy

Something to consider when devising a sales strategy: there’s an old business statistic that says, “80% of your business comes from 20% of your customers.” It is potentially five times cheaper to retain a current customer than acquire a new one. With that in mind, here are some steps to use when designing a versatile sales plan.

  • Ask yourself about goals for the future and anticipate milestones along the way.
  • Make a list of all potential markets.
  • Take this list and define criteria against which to “filter” it. This includes variables such as size and growth potential of customers, transaction volumes vs. size, brand value, how much effort and time it might take to acquire clients, and their technology integration capability.
  • Score the list against the criteria. Put unattractive markets to one side and rank attractive ones in order of overall appeal.
  • Come up with a short list of prioritized markets.
  • Define sales channels, process, and evaluation criteria for acquiring customers from each market.

According to Shoprocket’s CEO, Anthony Gale, “Actually taking some time to identify all the markets available but focus on the most appropriate ones is really valuable”. Otherwise, he says “In a startup environment it’s very easy to disappear off in random directions, without the physical and financial resources to execute on them all and understand where real value lies.” Entrepreneur and investor Mark Suster reminds us that “the best teams are hyper-focused” and often defined by what they choose not to do: “The scarcest resource in your company is management bandwidth. Spend it wisely,” he says.

Cash flow

Overall, 90% of startups fail, and many of them go down because their lack of focus prevents them from building a customer base, they have unrefined business models, or they struggle to create cash reserves. Of the 82% of that fail, it’s because of cash flow issues. Cash flow is the net amount of cash and cash-equivalents moving in and out of a business.

Cash-flow issues include:

  • Not having enough cash on hand to pay bills
  • Disorganized accounting systems
  • The inability to achieve profitability

A good sales strategy is a safeguard against cash-flow issues.

Creating business goals

The goals you should focus most on are the ones that are going to get your sales team healthy, for example, if your startup is bleeding money, make sure your expense tracking and policy is up to par. Identify your sales team’s KPIs. Maybe you should hire new sales reps? Measure your sales team’s health by following these steps, then you’ll be able to figure out a way to reach the next level of success.

Creating business goals is a data-driven way to measure your sales strategy’s impact. If you’re hitting your goals, you’ve identified a way to bring all the different departments of your team together to achieve a shared vision. If you’re not hitting your business goals, you may need to rethink your strategy.

When making goals, include all internal stakeholders, from the CEO down to your customer service reps.

Goals should reflect your company’s identity. Really understanding what your startup is all about (see previous articles in defining your vision) is key to formulating appropriate goals. You should feel that it’s possible to hit your goals, but at the same time they shouldn’t be too easy.

Ask yourself questions like:

  • What are my startup’s core values?
  • Why does my startup exist?
  • What problems is my startup looking to solve?
  • Why am I the only solution to this problem?

Business goals should be a combination of broad and specific. Figure out what problem your startup is solving, then make a “best case” scenario to see if you’re actually solving it.

Feel free to be a little ambitious; your goals should explain your reason for getting into business: your value proposition.

Your team and your customers need reminders as to why you’re the only unique solution to the problem you’re solving.

The SMART system

The SMART system helps you create a realistic picture of how your startup’s different departments will interact to achieve your business goals.

  • Specific: Goals that are specific
  • Measurable: Goals that you’re going to be able to measure
  • Achievable: Goals that you’re team is going to be able to achieve
  • Realistic: Using a best, medium, worst case scenario and seeing how you land
  • Time-based: Give your goals an end date. Then create new ones.

A startup is like an ecosystem, and marketing, product, finance, and other divisions will need to work together to effectively hit business goals around profit, growth, and service, etc.

Once you have an understanding of your sales process, you’ve probably identified opportunities for improvement: what hasn’t been working, what needs to be changed. Ask yourself tough questions like: has management been effective? This process needs to include ALL stakeholders, including departments outside of sales. Figure out ways to get your team to work together better.

Don’t be too attached to a certain sales plan. If it doesn’t work, try something else. If your team isn’t hitting your outbound lead numbers, measure the different channels they’ve used to acquire leads and figure out a way to mix it up.

7. Designing the System Architecture

Before you develop the project, you have to think about what which tools and technologies you’re going to use. It always helps to write it down and think twice. Reworking something which is already done in this stage can be very pricey.


The monolithic and service-oriented approaches are the two most common design patterns that developers usually choose.


This means the software is developed as a single application, with a single codebase.


The software is split into multiple components/services/applications. Each one can be written using different technologies which communicate with each other using APIs.

Which one should I choose?

Both have pros and cons. With service-oriented design, you will end up with code that is :

  • Easy to manage the codebase
  • Easier to scale

    • You don’t have to scale the whole system, you can scale only the services that are problematic
  • Easier to deploy

    • The services are independent
  • Services can be reused in different applications

On the other hand the monolithic option is:

  • Cheaper at the early stages of a project or for the MVP phase
  • A faster application because it does not include communication overhead between the separated services

It can’t be definitively stated that one option is better than the other, but if you’re looking for an architectural approach to you startup, which you want to grow and maintain, we would suggest using service-oriented architecture because monolithic brings these disadvantages:

  • Long-term maintenance is usually hard because of the complexity of the monolithic component
  • It is difficult to replace some functional parts with new ones, because it’s hardcoded within the project
  • It’s harder to scale such a project for higher demands

BUT, you always have to be very careful how you choose to split the application, as it can be easily “overengineered,” adding useless complexity. There’s no easy rule to go on, but at least follow these steps:

  • Having too many services can be counterproductive, so keep the number of services low
  • Don’t forget the communication overhead between services
  • Keep the services completely isolated from each other. It’s usually bad design if you need to share codebase between the services.

3rd party services

Yes. Use them! Using managed 3rd party services can save a lot of time and even money and it lowers the amount of resources you need for development and maintenance. In any case, always be careful and do the following:

  • Carefully estimate your usage and traffic because it’s usually related to the pricing
  • Check the SLA they offer

    • (Including security policies so you can be compliant with GDPR etc.)
  • Check the credibility of the services because your business will depend on them and replacing such service means more investment

8. Agile Process

Everyone wants to be Agile, and it’s more than just a buzzword. Here we extract its most important aspects to help you set up processes to develop quickly and with good quality.

Quick with quality

At the heart of the Agile process is flexibility. Rather than having a more traditional, rigidly structured development process, where every step is completely dependent on previous steps being completed, Agile looks at the whole picture and tackles different parts of it. Having an adaptable, self-sufficient team is important for this to occur.

Some important factors

  1. Test each other’s code.
  2. Make sure to avoid a single point of failure by having at least two developers know the code and configurations.
  3. Automate your processes. Writing Build Verification Tests (BVT) and moving towards Unit Testing(UT) saves a lot of time and prevents human error. It is recommended that you start doing this before your code base becomes too large.
  4. It is very important to build a sandbox testing environment where you can work with untested code changes and deploy here daily.
  5. Have daily meetings. This is important for keeping the team focused and achieving milestones. Do scrums--daily meetings that are short and precise to keep everyone focused and on track. Keep a backlog of the all the requirements and feedback.
  6. The team should be able to function without much founder supervision. Allow people to learn, fail, make mistakes, and, most importantly, iterate to get the best version of the product. As long as they know the overall goal, this trial and error should eventually yield the desired results.

Business validation tips

The software development team should be integrated with the product, customer engagement, and sales team. Ultimately, business development and software development are united. Rather than micromanaging, as a founder you should make sure to define the purpose and principles of the startup, so everyone knows what they’re striving for. However, you need to make sure to pay attention to the right elements. When you’re in the early stages, allowing the customer to pick features he or she might want could subtly steer you in the wrong direction until you’re fully off-course.

Try the following:

  • Problem validation: Does the problem exist for a wide audience?
  • Feedback analysis: Be selective and prioritize customer feedback by filtering out the noise (bad or inappropriate suggestions).

You have to approach your startup with some distance. Don’t get hung up on pet features that you personally love. After all: it’s about your customers.

9. Choosing Technologies

Choosing a technology is like choosing a car. You have to consider how fast you want to go, how far, how many people you want to take with you, and how much luggage you’ll take with you. Also, how big your budget is.

Choosing the infrastructure

There are two options to go with: cloud or dedicated server.

Dedicated server

This is a physical server that you purchase or rent, and run in a server house or in your own environment. This solution is usually used by large companies where you can have specific requirements on data security and data geolocation.


Instead of purchasing dedicated servers, you can purchase a cloud server where you don’t pay for the hardware itself, but pay for a virtual environment and usually just get billed for the actual usage of the servers.

Which one should you choose?

  • Assuming you are not a large corporation, we suggest using cloud servers for these reasons:

    • Quick access to additional resources if needed
  • Adding more memory and computing power is usually just a matter of a few clicks
  • Auto-scaling
  • High security standards provided by the cloud providers
  • Lower maintenance costs
  • Cloud providers usually provide a larger set of managed services like databases, messaging, auth, queues, etc.

    • Saves implementation costs
    • Lower maintenance requirements

But always check the SLA of the provider especially related to the:

  • Availability

    • Usually 99.99% per month
    • It means that the server can be down ~4mins a month
  • Pricing. It’s usually based on

    • CPU usage
    • Data transfer
  • Geographical location of the data

Recommended providers:

  • Amazon AWS

Choosing the programming language

Basically any language can be used. At a high level, they all do the same things, but the real question is about the community around the language and what that community can provide. Building an MVP usually requires rapid development, which can be supported by your chosen language in the following ways:

Available resources

  • Some languages are more popular than others and the cost of developers can be different
  • Different countries= different resources

Available open source libraries and frameworks

Active community

  • Support

Active development of the language itself

  • Performance and security updates Based on these points, the most common backend languages are:
  • PHP
  • Python
  • Java
  • Node.js
  • .net
  • Ruby

Choose your backend technologies according to the size of your startup/project. Do not choose obscure technologies or frameworks that will cause you trouble finding people. Some very good, popular, and proven frameworks for mid-sized projects are Django and Ruby on Rails. Both have been vetted by large companies.

If you need something smaller but specialized, for example, real-time responses, use lighter event-driven frameworks that can communicate through websockets, like aiohttp.

Choosing one of these languages is ultimately only a matter of available resources. They all have active communities, with large, open-source frameworks that can save a lot of resources in any stage of development. Always keep in mind to use the latest stable version of the chosen technology and don’t forget to check the license of any open-source code before using it. https://choosealicense.com/

Frontend development for web

Choosing the frontend technology is not about the language itself, because for web technologies you always go with HTML/CSS and Javascript. The question is more about choosing the right framework, which really depends on specific needs.

Technologies evolve quickly, so these suggested frameworks are probably already outdated, nevertheless:


    • Bootstrap
    • recommended for responsive web pages
  • Javascript

    • ReactJS
    • recommended for pages with dynamic content

Mobile development

Most applications are developed for the two most common platforms: Android and iOS. Here we suggest using a Hybrid framework. What does that mean? Usually, when developing mobile apps, you need a different developer for Android and iOS because the platforms use different technologies. This basically means twice the amount of resources are needed to develop the app. But there’s usually a clever way to solve this issue with Hybrid frameworks: with these frameworks you can have a single code base for both platforms, so you don’t have to use as many resources. We recommend going with the React Native hybrid framework.

Tools to support development

Here’s a list of tools and processes you should pay attention to because they can save time and improve the overall performance of the development team:

  • Jira

    • An issue-tracking and project-management tool
    • The biggest advantage here is the integration with source code versioning services like bitbucket to automatically track the workflow
    • Continuous integration and automated testing
    • Choosing the right tools is just a matter of supported features and pricing

Open-source libraries

Nightmare or life-saver? It can be either. There are a lot of good quality libraries that can save you a lot of time. To choose the right ones, follow these simple rules:

  • Always check how active the development community is

    • Check the recent changes in the code
    • Check the number of downloads and stars on Github
  • If possible, go with a stable version of the library

    • Always check if the license is compliant with your requirements

10. MVP Development

It is happening! You are finally developing your product! Congratulations! It is now imperative that you follow the development process exactly.

IT project-management tools

It is necessary to choose a tool that’s ready for software development. From the developer’s perspective, it should at least support the following features, which can save a lot of time for both developers and managers:

  • GIT(or any other version control system) integration
  • Workflow support

    • Based on the events from integrated GIT

You can also find many tools when you google “issue-tracking software.” Based on our experience, we suggest using Atlassian's Jira because it’s very feature-rich and supports high customization if anything is needed.

Development process

There is no way to describe the optimal development process. This really depends on the size of the team, given technology, product, given timeline, given budget, etc. However, there are at least a few major best practices in development that should always be included or used.

Where to store code and version control

When dealing with code, you should use a VCS (version control system) and most people use a CVS (concurrent version system). This allows developers to work concurrently on the code and handle cooperation flawlessly. You can easily switch back and forth between different versions of source code. A popular CVS is Git, which was written by Linus Torvalds, who built it for the Linux Kernel project. It’s designed to be quick and manage large codebases effortlessly. It was also popularized by services like Github, Gitlab, or Bitbucket. Git is the most popular CVS today, so it’s definitely a good way to go when considering where to store your code. We recommend using Git for these reasons:

  • Almost any issue-tracking tool supports Git integration
  • It has all the features needed for correct workflow
  • here a lot of cloud services offering Git hosting:

    • Bitbucket
    • Github

The bigger question than which CVS to use, is whether to use a managed service, or take care of the infrastructure on your own. For smaller, less critical projects, you can use services like Github or Gitlab. For larger projects, it might be wise to save the code on your dedicated servers. A Gitlab project, for example, offers the opportunity to use it on your own server. The disadvantage of this approach is that you need to manage the machine, but advantage is that you have full control over the system which might be required if you have sensitive code or proprietary code that you don’t want anybody to read and misuse.


There are two ways to test your application

  • Manual
  • Automatic

And both should always be included! Developers usually try to avoid writing automated tests due to lack of time, but that doesn’t make any sense. The truth is that no code is bug-free even if you have the best possible developers. Writing automated tests can consume more time in the early stages of the project, but in the long run, saves hundreds of hours. It helps the developers ensure that their changes don’t break anything in the existing code and prevents publishing code that won’t work correctly.

Code reviews

This is the best practice for involving more developers into the development of each feature to ensure:

  • The coding style follows your team’s standard
  • The code is written with best practices in mind
  • The code is understandable by others
  • The code doesn’t have obvious bugs

More than just one person understands the code, so changes can be made if needed

In general, this means that the code is checked by at least one other developer before it’s included in the main code base. This workflow can be easily implemented using GIT and best practices as covered in this article http://nvie.com/posts/a-successful-git-branching-model/

Deployment and continuous integration

Deployment always has to be automated. Deployment usually consists of many steps that need to be done in a given order, and to avoid any mistakes it should be automated and done using a single command. Using the right tool depends on the technology that is chosen.

Continuous integration helps with the integration of changes into the code. It can do a lot of useful things, but at least you should make sure it:

  • Automatically checks for any changes in the code
  • Runs the automated tests
  • Deploys on the changes in the test server

You can choose between a lot of tools and services to implement CI and they all support the basic features mentioned above. We would suggest using one of these:

  • Jenkins - If you want to run the CI on your server
  • Travis CI or CircleCI - If you want to use a CI server as a SaaS

11. MVP Release

Releasing the application means your troubles are over, right? NO! You’re almost there, but there are still some important things you need to make sure you do.

Technical side

Releasing is very simple, but you should always follow this checklist before any production release:

  • Have security testing done before any release.
  • Try to do the testing on a system that is very close to the production environment.
  • Have automated functional testing ready.
  • Set up your monitoring. The app can be much more popular than you expected and - you need to be notified if more server resources are needed.
  • Set up some analytics to see how your app performs.
  • Prepare your support team. There is always something to support even though the app is supposed to be bug-free and user-friendly.
  • Always keep your infrastructure up to date. Set up a procedure to update the infrastructure when any security fixes are released.

It’s alive!

Once your project is live, don't let it die. You need people to keep it breathing. They have to visit your shop, visit your website, see your activities. The project lives from people's attention. If you don’t bring people there, you can expect to close up shop and realize you’ve wasted much time and money.

Hello, World

First, you have to admit that you are absolutely nobody, no one knows you, so you will have to pay for their attention. Introduce yourself to world. Make some noise! Setup your social media profiles promote you posts, and lead them to your business. Setup the PPC and business profiles, so people can easily find you on the internet. In case your business brings something new to the market, write a press release and try to connect with servers who will be glad that they can write about you. Make friends, you will need them.

12. Post-launch Support

This is a very valuable part of the process. Rather than a burden, view it as a firsthand opportunity to get information from people, but be careful: you must be selective about how you use it.

Support provided by founder

Providing support is very important and should be provided directly by the startup founder in the early stages of your company. Users give valuable feedback on the product which the founder needs to hear firsthand because only he can quickly push changes.

The trap

Be careful when trying to fulfill the wishes of all your customers. It’s common for visitors to tell you that they will pay when you add this or that feature or when you make custom adjustments for them. This a trap into which many startups have fallen and met their end. You can end up trying to customize your product to the demands of one customer and lose sight of your overall business and never scale.

We recommend you record all requests from users and prioritize based on your OKR. A great tool that can help with this is productboard.com.

Have a conversation

We also encourage you to respond with care and have conversations with your customers. Don’t be afraid to call the first paying customers and ask them about their experience, they will be happy to share some comments and ideas for improvement.

We use the intercom.io tool, which has chat and automatic messages. Every new customer receives an automatic welcome message asking for feedback

Include phone number

Don’t be afraid to include a phone number in your contacts, you want people to call you and ask. The more user information, the better. It’s important to have a conversation, and if you can handle it properly and solve the problem, the user will have confidence in you, the relationship, and be willing to pay you.

Be polite

Communicate quickly and with grace. If the client does not understand something, it may not be his fault, but a UX problem in your product. The worst thing is arrogance and ignorance, which can give you a bad reputation and also speed up your demise.


When the moment comes when the founder doesn’t have a time to do support, it’s cause for celebration. This means you already have enough customers to give the role to someone else. Choose a person who has a high degree of empathy, which is essential for proper support.

13. Growing and Monetizing Your User Base

Some would say that it is foolish to attempt to write about growing and monetizing your user base in the same blog post. They would say that this topic is too general and large, and that it really depends on the product, or at least which category it falls into; for example, a mobile game app and a desktop software app would be marketed and sold in very different ways.

Those people would be right.

Therefore, I am here to simply share the pillars that have worked for me in the past. These are methods that any owners, sales, and marketing teams should definitely have on their radars.

Growing your user base

To grow your user base, you really need to focus on timeline and quality. How fast do you want to grow your user base (realistically), and what kind of users do you want to attract? A lot of people can grow a user base quite quickly but at a lower quality level. What does this mean? This means you can get a lot of users on your network, or using your product, but their LTV (life-time value) might be very low, as your churn rate will be high.


Referrals are the best way to get any product or business off the ground for two very simple reasons. One, referrals are free. Two, referrals have the highest rate of success due to the fact that people tend to trust those in their networks. Think about it: how many people do you know in relationships that met because of friends or through an introduction by someone they trust (maybe it was you)?

If you can trust your connections when it comes to finding your future partner, I’m pretty sure you’ll try a product they recommend as well.


Content creation is a great channel for growing a user base and creating trust with your users. However, it must be mentioned that this channel does require more time and diligence. Generating new, relevant content is not that easy. However, what’s often forgotten when starting a content plan is that not every piece has to be fresh and unique. While you do need to keep your topics interesting and targeted to your audience, you can constantly think of how to reuse content that has already been created.

A tactic I have seen work again and again is to create an overarching topic that can be broken down into sections (i.e., blog posts). After the last section or topic is launched and promoted, you can then pull all the sections into a beautifully designed pdf, which you can ask for contact information to download.

We created a great example of this strategy at a Java tooling company for developers. In this company, we saw a 500% increase in traffic, largely due to a very aggressive content plan. Because that audience was so niche and ate up quality content especially focused around their jobs and technologies, we were even able to get writers from other companies in the industry. We really focused on comparing products and tools, as well as growth and involvement based on geography.


Networks, both physical and virtual, are a very time-consuming channel when building your user base. However, if you can remain very active, they will slowly start to turn into your referral network. Being seen often on social networks and in person at meetups/events will start to establish your personal and company brand as a serious endeavor, willing to put in the hard work needed to succeed.


Here I would focus more around lead generation than the old school branding techniques of advertising. When it comes to lead generation, you need to look at your revenue and profit goals and the total cost of development of your product, and decide what you would be willing to spend per lead. In the beginning, you will want to diversify your sources to find out where the highest number, as well as the quality of leads is coming from, and then decide whether or not it makes sense to continue with the other networks or placements. I have seen both direct ad buying (you know, like they did in the 80s) and network advertising work like gangbusters.

In one specific situation, again at the Java tooling company, we were buying directly from a development forum and spending $2,000/month, and receiving around 500 signups from this source. While using Adwords, we were spending around $10,000 to get 1,500 signups. However, we quickly noticed the adwords leads were converting to paying customers at a much better rate, and their LTV was nearly 3x of the development forum. With this data, many marketers would drop advertising on the forum. However, we made the decision to keep running on the forum, and once we started to get some branding awareness, we noticed our numbers running in the right direction. It did take some time, I might add.

Conferences and events

Simply put: invest your money and go to conferences and exhibitions. Although technology and advertising have come a long way, nothing builds bonds better than the good old face-to-face interaction. Companies use pictures, avatars, special wording on their sites - all this to humanize their business and products. These are great and they work, but the best way to humanize your digital product is still to use an actual human.

Sometimes it’s old school, depending on the conference, but order your booth, get some comfortable shoes, shake 400 hands, and get 100 business cards. You don’t have to have the biggest booth, or spend the most money; let’s face it, you’re not going to be larger than Microsoft or Nokia on the showfloor. Be creative when designing your booth and people will remember. Staff it well, and people will have a conversation with you.

In my 14 years of running marketing and attending countless shows, designing booths, and the works - I have to say that my favorite and most successful booth cost 15,000 Euros in total, was the smallest one in the room, but voted best booth on the show floor.

Finally, don’t forget to use your own user base to help you spread the word of your products or company. They obviously like what you are offering or they would not be users.

Monetizing your user base

Monetization of your user base really depends on the type of products that you are selling to your user base. But no matter what kind of product you are offering, if there is no value for your users, then you are going to have a very difficult time with monetization.


Subscription models are used for various types of products, typically where data, creative assets, or information is updated on a regular basis. You pay for access to a system for a specific period of time. Think Netflix (tv and movies), Spotify Premium (music), or Crunchbase Premium (company or contact information).


This model has become very popular in the past ten years by giving away partial access or limited features of a product. Essentially, you are able to use the product and get a good understanding of what it does, and in many cases, like Spotify, you can settle for using only the free version. In the Freemium model, the provider of the product holds back what they consider to be the best function or features for those who agree to pay a fee. Think Spotify Free (music), Trello (project management), or MailChimp (email marketing).

Addiction formed in the free stage is a strong method for monetizing products.

Ad model

The advertising model works very well for products that are looking to build a very large user base, while at the same time collecting as much information on them as possible. If you use the internet, you are using products on a daily basis that have advertising models generating revenue for them. In many cases you don’t even have to click on an ad for the company to generate revenue, as simply displaying an ad costs money in some models as well. Think Facebook, Google, or almost all online media publications (NYTimes, CNN, etc.)

Free + consulting

This is an older model, which I must admit I did not become aware of for quite some time. In the product-based consulting model, all products are given away for free and typically open-sourced for complete access. These products typically exist in the tech world. In this model the product or products are free, and the company follows up by offering their consulting services around the products themselves, as well as giving industry knowledge. Think Red Hat (software).

The buyout

Give your product away for free to as many people as possible and hope it goes viral and a company makes an offer to buy you before you run out of runway or get more investment. (Not recommended strategically, but it has happened). Think WhatsApp (free messaging and calling).

Some products already have their monetization model built in, or at least have some precedent based on the industry and similar product offerings. Social media is a great example of this, as their goal is to get as many users on their system connecting with one another. Thus, brands start to see huge numbers of their target audiences in one location, causing them to reach out to the networks to run their ads.

Remember: trying to monetize your products too early can be quite dangerous. Ask yourself: would you have ever used Spotify if you had to pay $1 just to try it?

So, these are some pillars of success when growing your user base, and different monetization models that you can use to keep you in the black. You ultimately have to look at your own product, vision, and goals to determine which growth and monetization techniques fit you best.

14. Product/Market fit evaluation

Here you have to evaluate that you have found the product/market fit. Here are metrics that will help you know when you achieved it.

How to evaluate

There are five metrics any online business can measure to empirically verify if they achieved Product / Market fit. They are

  1. Bounce Rate,
  2. Time on Site,
  3. Pages per Visit,
  4. Returning Visitors,
  5. Customer Lifetime Value.

Low bounce rates means a visitor's expectation is being met. High Time on Site and Pages per Visit indicate that the experience of the user is satisfactory. High Returning Visitor reflects the lasting impact a product has on their customers, causing them to come back, and Customer Lifetime Value measures the profitability each customer brings to the company. If these 5 metrics are above average and your 40% rule is met, you'll know you have a Product / Market Fit company.

But what’s more important is how it feels. You will achieve product/market fit if you see happy faces on your customers, if the phones are ringing off the hook in the office, and of course if you’re acquiring enough new customers that you don't have time to do the support and you need to hire another employee to do it.

Also, your marketing cost must be lower than acquisition costs and your marketing activities scalable.

On the other hand, you may never achieve market fit. The majority of startups never get to this point, and it's also important to know when you have to pivot or close your business. After a while, if you see that you have ten customers and almost no revenue, then you should step back, do the validation process again, and pivot. In the majority of cases, this means that your value proposition is not strong enough to gain customers.