Web Portal Development for Educational Institution

By: Carol Vercellino, CEO & Co-Founder


There are 3 major reasons software development projects fail:

  1. Unclear project specifications
  2. Poor communication
  3. And poor planning

In this video, we’re going to talk about how to address all 3 with one simple method: an Impact/Effort Matrix.

An Impact/Effort matrix is a simple and commonly used way to find out which features in your software will have the highest impact with the lowest effort. 

You can use this matrix to kickstart your project development plan and get everyone on the same page about your goals, vision, and overall strategy.

Why you need a features list first (and how to create one)

Before you can create an Impact/Effort Matrix, you’ll need to create a features list and then break your features list down into smaller categories. Doing this will help you avoid choice paralysis as you work on your matrix.

In our project briefs, we ask clients to break their features list down using these four categories: must-haves, should-haves, nice-to-haves, and bonuses. We talk more about how to do this in our guide, “5 Elements Your Software Development Brief Should Include”. 

When you download the guide, you’ll also get a template for creating your features list. Just go to our website oakcity.io, enter your email address, and we’ll send you the free guide and template to your inbox.

How to create an Impact/Effort Matrix

Okay, so assuming you’ve got your features list, let’s talk about the Impact/Effort matrix. 

An Impact/Effort matrix is a 2×2 grid with each square representing a different level of effort to build the feature and the impact it will (or won’t) have. 

In software development, we define impact in two ways: positive and negative.

The positive impact would be the return on investment and customer satisfaction. The negative impact would be loss of revenue or poor performance.

Effort is exactly what you think it would be: how much time, manhours, and strategizing will this feature take?

Here’s an example of an Impact/Effort Matrix

As you can see, in the top left square, you’ll list the features that are quick wins – they’ll have a high impact on your users, great return on investment, and take little effort to build.

In the top right square, you’ll list the features that your users will love but it’s going to take more planning or revenue to build. You might consider releasing these features down the road when you have more funding.

Sometimes, you’ll have features that are very tempting to build. They require little effort and don’t chip away at your budget too much. However, it’s important to consider if those features will actually make any impact on your users. If not, list them in the bottom left square and…move on.

Finally, in the bottom right square, you’ll list features that will take a lot of your budget, time, and energy – with little or maybe unknown impact. Table these features for now. You can survey your users as your startup grows to determine if the impact is worth the effort.


As you create your Impact/Effort Matrix, we suggest doing this as a team exercise. Draw your matrix on a whiteboard and write each feature on a sticky note. Then take each sticky note, discuss the feature, and vote on how much effort it will take and the impact it will have on your users.

Download our free guide to get step-by-step instructions and tools to effectively communicate your product vision and avoid costly mistakes. Get it now.

Oriented Mobile App Onboarding

By: Carol Vercellino, CEO & Co-Founder

The average app loses 77% of its users within the first 3 days of use.

But, if you’re in the process of app development, don’t lose hope just yet. Apps that are successful in retaining users from the very first visit follow this one simple method: benefits-oriented onboarding.

Benefits-oriented onboarding is just that – you focus on the benefits of your app, not the features. 

A feature is a part of your product or service, while a benefit is the positive impact it has on your customer.

So, your goal is to communicate to your users – in the first few moments of them engaging with your app – these three things:

  1. What does your app do?
  2. What value does the app bring to your user?
  3. How can your user integrate the app into their life?

Now, I know you might be thinking, isn’t that what the app description is for? But many users skip reading the app store description to dive right into your app, so your onboarding screens are a brief presentation to help your user understand what your app does.

So, when using the benefits-oriented onboarding method, here are the steps you should consider taking.


Share only 3 benefits of your app

Why 3? Information presented in groups of three sticks in our heads better than any other cluster of information. For example, consider “Stop, drop, and roll”, “Blood, sweat, and tears”, “Life, Liberty, and the Pursuit of Happiness”. 

If you don’t want to bore your user or slow them down, avoid overwhelming them with every benefit your app has to offer. Choose the top 3, and then apply the “one slide, one concept” rule.

Apply the “one slide, one concept” rule

Keep each message in your onboarding process clear and focused. If you include too much information on one slide, your user will struggle to retain and remember what you said – possibly leading to a poor user experience.

Using one concept per slide helps your user digest every bit of information in your key message.

Keep it brief and offer a way out

Finally, above all, keep your onboarding brief and succinct. Focus on only providing the essentials so you don’t lose your user’s attention before they start using your app. 

And on every screen, give your users the option of exiting out of the onboarding process to go straight to using your app. Simply place an X in the top right-hand corner. Oftentimes, when users feel stuck in the onboarding process, they’ll close the app and move on to the next solution.


As you build out your onboarding process, go to the app store and check out what other successful apps do to see what works (or what doesn’t). In fact, we break down how the popular guided meditation app, Headspace, nails their onboarding process. Click the link below to watch it now.

And remember, keeping your onboarding process short, sweet, and simple will increase user retention and satisfaction. 


Watch our video on App Development Lessons from Headspace.

App Development Lessons

By: Carol Vercellino, CEO & Co-Founder

If you’ve read the news or seen the new series in the ‘Trending Now’ section of Netflix, you’ve probably heard about the guided meditation app, Headspace.

Headspace is a digital health platform that teaches users how to meditate in only a few minutes a day. As of 2020, it has a post-money valuation in the range of $500M to $1B and 2 million paying subscribers.

As you know, creating a successful app doesn’t happen overnight – or on a small budget – but there are valuable lessons and takeaways startups like you can glean from Headspace to apply to your own app development project.

In the video below, we’ll walk you through the onboarding section of the Headspace app and give you a breakdown of the features they include that help convert their trial users to subscribers.

Carol: Hi, my name is Carol, and I’m the co-founder and CEO of Oak City Labs Software Development Agency, located right outside of Raleigh, NC. I also have with me Jay, our co-founder and CTO. 

Today, we’re going to talk about the app, Headspace. What it’s all about, how it works, and why it’s one of the most popular apps in the health tech market today. And maybe what it costs to build an app like Headspace.

So, let’s dive in.

First, what is Headspace? 

Headspace is one of the top meditation, sleep, and focus apps in the app store. We’re going to walk through how it works (to some extent).

So, when you download Headspace – and this is an important feature for most apps – you need to log in. And one of the features that I like that Headspace has is that it includes using your Apple ID to log in. 

Jay, why might that be a good feature?

Jay: The sign-in with Apple ID is something Apple introduced fairly recently. It’s tied to your iCloud account, and you can use that to log in to an app. It’s a privacy-focused login, so the people on the other end get an email address they can contact you with, but it’s a smudged email that’s private that you can turn off later. It’s one of the ways you can centralize your login to make it easier to access your apps, but it also keeps your information private.

Carol: I like that better than signing in with a social network, like Facebook.

Okay, so as you walk through Headspace, we’re in what we call the onboarding screen. The onboarding section is the first two screens you see in an app that tells you what the app is and how it works. 

Now, Jay, I know there are different opinions about onboarding screens. Some people think you should have them, and some people think you shouldn’t. What do you think?

Jay: It sort of depends on your app and what industry you’re in. Onboarding screens serve as a really good introduction for a user. It tells them what your app is all about. 

If it’s a really niche utility app, maybe people who come to your app already know what it is. But, an app like this, where they eventually want to sell you services, they really want to make you feel like you’re welcomed. It will provide some value for you, and they can focus on the benefits that you, the new user, are going to get out of that.

So, on this screen in Headspace, they’re already talking to you about what you’re trying to get out of the app and how you can personalize it, and do some recommendations and stuff later based on your responses.

Carol: That’s on the tech side – where we talk about recommendations. It’s kinda like in Amazon where they say, ‘Other people like you may like things like this’. 

Okay, let’s choose some options.

What’s kind of cool here is that the screens change, so you get different colors, which is nice. Let’s go with ‘staying focused’. 

It tells you what you might expect from the app as well. Now, this is an important screen, particularly if you’re going to sell a subscription, which many people will do because sometimes, with the apps, you can’t make as much revenue as you’d like. 

Now, Jay, with the subscriptions, what’s an important thing for somebody to think about, especially since this is through the app store?

Jay: So, with the app store, they’ve got a pretty tight set of rules about what needs to be on the screen. When you’re making the screen, you can go to the app store for examples and iterate on those examples and put your branding in. 

You’re required to describe what the features are and your subscription options. You’ve also got to have the link to ‘Terms and Conditions’, and a link to restoring purchases if the user has a new phone or something like that. These features are what the app store will look at in the review process to make sure it ticks all those boxes with its guidelines and regulations.

Carol: One of the features I like here in Headspace – in the upper right-hand corner – is you can exit out of this section. I think that’s important because users don’t want to feel trapped. They want to feel like they have options. That’s my theory and personal preference. If I can’t exit out of something, I’m done. I don’t want to subscribe.

Jay: That’s what I would be looking for on these open screens too.

Carol: So, I’m going to exit out of this because I’m not ready to subscribe just yet. Okay, so now see the option to set up notifications. This is where you can control it. Why is this screen important, Jay?

Jay: Because the way iOS works, when an app asks for notifications, it’s going to pop up that system dialogue we’ve all seen a billion times. You, as a developer, get to put two lines of text in there, and that’s it. 

It’s considered best practice to have a screen like this where you step people through notifications and the benefit of allowing notifications. Explain why it’s beneficial to the user to click the ‘Allow’ button. As a developer, you only get to ask this once. If the user says no, to enable it later, they have to go into settings and dig through a couple of layers of menus. The chances they’ll do that go way, way down.

Carol: So, we’re still in onboarding mode, which for me, even with an app like this, might be a little long, but we can explore now. And, we can still exit out of here. 

Okay, so if I go to ‘begin’, now it wants to walk me through an exercise. What I like about Headspace are the animations. I’m sure that’s super easy on the development side, Jay?

Jay: Yeah, as long as you have a big team and a lot of time, and budget, you can have animations.

Carol: Let’s talk about the use of haptics as you’re breathing in and breathing out. I can feel it on my phone, which is nice. Is that something developers have to think about?

Jay: Absolutely, you’re integrating that in with animations and graphics. It’s a next-level type of integration.

Carol: So, I exited from there, and on this screen, they want to know how I’m feeling. I’m going to say ‘relaxed’. And we’re still in this beginning stage. I’m going to say ‘maybe later’ because I’m ready to get to the app. The first thing that I notice on the app is that this looks like a native app. Would that be right, Jay?

Jay: As far as I can tell, it looks like a native app. The interface feels native, but it’s also heavily customized and branded. This is a tier 1 app for sure.

Carol: There’s heavy use of graphics and animations. So, when you think about video and animations, there’s probably a lot of costs behind that as well. Wouldn’t you say?

Jay: I would think so. Not only are you looking at development efforts to do the fancy animation and integrate all the video, but you’ve got to have somebody – like a graphic artist or animator – to do the actual graphical elements you’re integrating. And also, there’s a lot of really professional videos in this app, so there are probably teams doing that.

Carol: That’s a good point. A developer can build the app all day long, but if you’ve got a constant heavy app like Headspace, there will be a lot of marketing, and there’s going to be a ton of content creation. And then you have to think about how does that content makes it into the app? So, your developer is not necessarily going to sit down and create content and put the content in there. They may create an interface for other people to put that content in there. So, the administration portion is sometimes a component of development that some people don’t think about.

On this screen, we’ve got a play button with a lock on it. So, if I tap on the button, it will tell me I need to start a trial. If I start a trial, do I have to put in a credit card? How do payments work for this?

Jay: With all iOS apps, Apple has you go through the app store, so this will use the credit card that’s on file with the app store. I don’t think you could have downloaded the app to start with without that already on file. With the free trial, again, that’s through the app store with the normal subscription process. You can manage that on your iOS device. What’s the free trial for this one? A week? Yeah.

The developer can pick that.  A lot of trials are one week long. Once you sign up, it’s going to start automatically. It’s on you as the user to unsubscribe after the trial. If you can get folks to agree to the trial, it’s a good chance they’re going to at least do the first month or first year, and you can convert that to an actual sale.

Carol: If you are thinking about building an app, one thing to consider is the subscription fee. Headspace is $70 annually. How much of that subscription fee do you get to take home, Jay?

Jay: In general, Apple takes a 30% cut. There are programs for small businesses where if you have revenue through the app store of less than one million a year, you can cut that down to 15 percent. For obviously a big tier-one app, they’re going to be paying 30 percent.

Carol: Is there anything else you want to point out with Headspace? For example, when I went to my profile, there’s a ‘share with a buddy’ link. If you can get other people on board, that’s more users for your app, and you can get a network effect.

Jay: Yeah, a little bit of a viral spread of your app.

Carol: So, Jay, how much do you think it costs to develop an app like Headspace?

Jay:  Carol, I’m going to say a lot! Like we talked about, this is a complex app with a lot of machinery behind it in terms of graphics, animations, and video teams. Just given that, you’re talking millions of dollars. 

Carol: And we googled before we did this video that Headspace has over 400 employees, so you think about the costs of the employees and the marketing of the content behind it. This is not a small app. This is certainly something to keep in mind if you want to create an app like Headspace. There’s a whole company behind Headspace that allows you to do all these animations and personalizations for the end-user.

So, we talked about onboarding screens, revenue models, and how that all works behind the app with the administration and recommendation engines.

Jay:  I think you hit on everything. For an app like this, it’s also all the other things that go along with it, the development cost is one thing, but there’s the marketing and content creation. With an end-user app like this, there’s so much marketing and advertising that goes into it.

Carol: Exactly. Thanks for watching if you made it this far. If you liked this video, don’t forget to subscribe to our channel to not miss out on any other videos. And please feel free to leave us some comments and give us some feedback.

**The above interview has been transcribed for clarity and brevity.**


Want to learn more about streamlining your users’ experience? Check out this post to learn how to make a great first impression in your app.

By: Carol Vercellino, CEO & Co-Founder

Today, I’m going to highlight our top 3 programming languages in 2021 and discuss their benefits. I’m going to talk about Javascript, Python, and Swift. And also the reasons why we’ve selected these three as our top picks. 

If you’re new to the programming world, make sure to use this video in conjunction with our other video, How to Choose a Programming Language for Your Product

But, let’s get to the programming languages.


First up, we have Javascript. Javascript is widely used now because it was first used for prop and programming language. What that means is it’s used to render the very first thing that your eyes see when you go to a web page

It also began being used on the backend as well, which is all that code on the back that tells the server what to do. And it was really facilitated by Google in trying to help people learn more software development. And so, that’s why it’s a top pick for 2021.


Next up, we have Python. Python has been around for a long time. But, it’s widely used for statistics and science, and pretty much anything. You can spin up a website really quickly with Python, and you can do a whole lot of complex things on the backend, especially for a complex app. It continues to grow because of interest in data science and analytics. So, that’s why it’s our second top pick for 2021.


Finally, we have Swift. If you google the top languages for 2021, Swift may be a little bit lower on the list. And, yes, I am biased because we do use Swift a lot in our company. But, Swift is the language you would use for an iOS application, or a Mac application, or anything that’s going to run on an iPad.

It’s not only growing for those types of apps, but it’s also starting to be used on the server side. You’ll see Apple really push Swift going forward for the next few years. And we’re super excited to see what they do with it as well.

For 2021, we’re going to keep that as our third top pick at Oak City Labs.


I hope this was helpful, and let us know what programming language you’re interested in learning more about in the comments. We’d love to create more content that helps you as you’re developing your software or app.


Know what programming language you want to use? Read this post next about setting expectations for your software development project.

By: Carol Vercellino, CEO & Co-Founder

One of the hardest questions you’ll ask when you start developing your software product is what programming language should you use?

Let’s talk through some of the concerns and considerations you should make when choosing your programming language. 

But, before we dive in, if you aren’t familiar with some of the most popular programming languages, we recommend watching our video on the top 3 programming languages in 2021 first. Then come back to this post.

Let’s dive in.


Carol: So Jay, when it comes to creating software or apps, what factors do you need to consider when choosing a programming language?

Jay: Well, there are a couple of things you have to think about. One of them, to start with, are there some requirements?

For iPhone apps, you’re going to do those in either Objective-C or Swift for a native app. If that’s the thing you’re looking for, those are your two choices. Objective-C is sort of the legacy at this point, and most new developments use Swift. Similarly, for Android, you’re going to look at Java or Kotlin, Kotlin being the new thing.

On the backend, you’ve got a lot more flexibility. There are several languages: Python, Ruby, Go, Swift, and some others you can use for the backend. 

Another important thing you need to think about is the availability of developers in your area. You’re probably going to start with one developer, so you just have to find that one. But as your product and your team scale, you’re going to need to augment your team and hire people. Is there a big pool of developers in your area who are familiar with that technology?

Carol: So, JavaScript is super popular, right? And it’s mostly used on the frontend, but a lot of people are using Javascript on the backend now?

Jay: Yeah, people use JavaScript on the backend with Node. I think it’s really popular. It got popularized by folks doing frontend work who wanted to do backend work and didn’t want to learn another language. Google sort of facilitated that with developing Node and taking their javascript engine, and making it available on their server.

A lot of people feel like it’s easy to slide from frontend development to backend development with JavaScript.


Carol: Like the chicken and egg question, should you choose your programming language first and then find a software developer who understands that language or the other way around?

Jay:  It’s really hard to say. It depends on your project again. If you’re in one of those situations where your project and the space you’re working in determines what language you’re going to use, then that’s pretty much it. 

If you’re building a more generic backend thing, like an API for a service, you’ve got some flexibility there. So, you have more freedom to choose or interview different developers and maybe let them make some of those technology decisions.

Carol: What if you found a developer you really liked, and, not to be too controversial, they use Perl or PHP. What would you say to that?

Jay: Those are both sort of what I would consider legacy languages. Perl especially and PHP moreso. That’s certainly not terrible. A lot of the web runs on PHP. 

Again, as you scale your team, you attract new developers that are going to be versed in that kind of thing. Younger developers aren’t going to be into PHP, and maybe some older ones want to move away from PHP. So, those are some of the concerns you might have.


Carol: And let’s wrap up with talking about potential roadblocks. What are some common mistakes people make when choosing a programming language?

Jay: The most common one is to go for the new shiny thing. The new language comes out, and it’s all built cool, and they’ve got really good demos, and they solve some problems. Maybe they take something that used to be hard in an old language, and they do it really, really well because they made the language to do that. 

But, once you get into a really serious project, you have problems with, for example, is their tooling around that? Is it too young to have really good tools to work with? Is it robust? Can it handle edge cases that maybe some of the older languages have already worked out? 

Does it have a really rich library of tools to interface with other things? Python is a really old language at this point. There is a Python library for just about anything. If you need to access this weird service, some dude somewhere in a basement in Nebraska, wrote a library to do it. 

A lot of the newer languages just don’t have that sort of coverage. 

Carol: And support too, just community support. Can you google it and find an answer to it?

Jay: Exactly. Do you want to be out there on the bleeding edge? Maybe not.

Carol: I think we did a video about interviewing software developers, so it might be helpful for people to check out as well.

**The above interview has been transcribed for clarity and brevity.**

Need to find the right developer for your project? Make sure to ask the right questions to get the best fit. Learn how in our video, How to Find an App Developer

How to Find an App Developer

So you’re an entrepreneur, and you’ve got this amazing idea for an app.  Now you’re probably wondering how to find an app developer who can deliver what you envision and help you bring it to market. 

Building an app can be really expensive. A lot of folks have a budget for basically just one shot at version one. So you want to make sure you get the best app for your money, and get a good start to your business. My business partner Carol is joining me to discuss how to screen developers and pick out one that might be right for you. 

Read on or watch the video to learn more about how to find an app developer that’s right for you. 

Jay: Carol, where do we even get started looking for developers?


Carol: Well, oftentimes, I would suggest people can ask around in their network. And a lot of people these days might do a Google search. But more often than not, a referral is the very best place to start.


Jay: Okay, so we need a referral. Maybe get a couple [of referrals] you’d want to talk to. What kind of questions do you ask those developers?


Carol: I might ask them different questions than a lot of people, but most importantly, you want to ask them about their experience. Ask what kind of apps they’ve built before and if they’ve built anything like what you’re looking for. Or if they haven’t built what you’re looking for, maybe learn more about their track record and their history. 

And I often learn from people based on what questions they ask. So just kind of going through that process should help you out. 

Also you may want to ask about things like quality. How did they build quality into the product? How long do their projects typically take? You probably can’t figure out the cost on the first round of questions. But focus on experience, quality – things like that.


Jay: Okay. So when you talk to developers, a lot of times you get sort of a firehose of tech speak coming at you. If you’re not really technically-minded, how do you decode that?


Carol: So the way I do things is – for example, if they use an acronym, I will ask them to explain it to me like they just met me on the side of the street. And I have no problem being completely ignorant to what somebody is talking about. And I will ask them over and over to explain it to me until I get it, which you are probably familiar with, Jay! But it doesn’t matter if you don’t know what they’re saying, but know that if they can’t communicate a complicated topic to you, then they may not be a good partner for you.


Jay: That makes sense. And what kind of red flags do you look for?


Carol: Oh, my goodness, let’s see. Red flags you might look for are if they’ve never done development before, or if they can’t explain complicated topics to you. If they don’t know what testing is. You may want to ask them to explain things like the difference between a unit test and a functional test, and then ask them how to [perform] those tests. Ask them what types of tools they use for testing and what kind of language or platform they’re going to use to build your project. 

And then ask them why. If they’re going to do a cross platform app for you, ask them why they like that. And ask them if that makes it a buggier app, or how easy it is to troubleshoot a cross-platform app. Or if they’re going to go [with a] native [platform]. Ask them about how they know what Android would look like, or if they are going to start with iOS, what that development process would be like.


Jay: And what other advice do you have for folks who are looking for a developer for their project?


Carol: General advice would be looking at that history that we talked about, making sure that they understand testing and have good quality software development practices. Ask them how they stay up to date on things and make sure that they have an excellent explanation as to the tools and the languages that they use. 

You know, sometimes it’s not always the best to go with a developer that uses the latest flashiest network or language that’s trending that day, because it’s going to make it hard for you to find developers to take that project over in the future. And the same thing [is true] with the older languages. I hate to say it, but PHP may not be used for new projects these days. And so if you talk to developers that are going to build your whole app in PHP, see if that’s a trending job post on Indeed in your area, and it might give you a good idea of whether that’s a good idea or not.


Jay: All right, well thanks for taking us through all that today, Carol. I always hate to see somebody who sinks a huge chunk of cash into a project that ends up with a bad app or an app that just doesn’t work. So folks if you have an app idea or more questions for us, you can contact us on our website and be sure to follow us on social media and subscribe to our YouTube channel for more tech tips. Thanks.


Contact the Oak City Labs team to discuss your app idea!

App Development

By: Carol Vercellino, CEO & Co-Founder

As an entrepreneur or business owner, you probably have a great vision for the product that you want to build. But, do you know how much it’s going to cost and how long it’s going to take?

Much like building a house or buying a car, informing yourself and understanding the process can really help set your expectations and help you have a great relationship with the software development partner that you choose. 

So today we’re going to talk about three things that are really important to understand with software development – or for pretty much anything else you’re going to spend a ton of money on. 

Read on or watch a quick video here.

We call them kind of the three levers in software development: time, quality, and cost. 

What do we mean by those things? Well, when you buy a car, if cost is the most important thing to you, then you might be willing to forgo quality a little bit. And you might be willing to understand that the car is not going to last 10 years and may not retain its value for a decade.

In software development, it’s the same thing. If cost is a driving factor for you, then understand that quality may not be as great. And the delivery of the product timewise may not be as great. 

We often see people who prioritized cost as the most important factor but end up coming to us because the project never got completed [with their first developer]. And what did get completed didn’t have testing built in. If you don’t know what testing is, I’m pretty sure we’ve got a video on that!

So, what if you prioritize quality? You can bake quality into a product really well. But if you have a partner that overemphasizes quality, your timeline can get drawn out. And I know it sounds crazy to say quality may not be as important, but sometimes you need to ship your product to get it out to market. 

Well, what about time? If you emphasize time, then you may find a development partner who deemphasizes quality as well as cost. If you want [an app] done quickly it’s going to cost you more, and the quality may not be there. 

So, understanding these three things and understanding how those categories impact a project can be incredibly helpful to set your expectations – and your partner’s expectations as well. If you have any questions about time, quality, and cost, shoot us an email. We’d be happy to help. 


By: Carol Vercellino, CEO & Co-Founder

Today we’re going to talk about software testing. Sometimes software testing can sound a little boring, but today we’re going to cover some really simple terms. Hopefully this can help you collaborate with software developers or even hire a software developer for your project.

Read on or watch our video here.

Why test apps?

Software testing is critically important. Bugs can range from minor things like a misspelling in an app to major things like one single action deleting all of the data in your database. It’s something developers need to place a priority on, and you should too. It will be a part of your risk management plan and can save you money in the future.


The Pyramid (Not a Scheme, We Promise!)

So to really break things down, we like to think of software testing as a triangle. At the bottom of the triangle is unit testing.

Unit tests are just that. They’re testing really small bits of code to the lowest level possible. They’re fairly inexpensive too, and you can have tons of them. You can run them through automatic testing when code is entered. That’s your first level of defense against a software bug.

And then in the middle of the pyramid we have what we call integration tests. These test third party bits or something your app is going to integrate with. This could be an API for Google Maps or it could be your internal database – really anything that’s a third party. 

And then at the top we have UI testing, sometimes called end-to-end testing or functional testing. The terminology doesn’t really matter. At the end of the day, you want that first line of defense, second line, and the third line of defense.

All of these things should be as automated as possible. Something to think about in software development is that the bottom of the pyramid is your least expensive test. It’s the developer’s time but it’s going to save you because it’s your first line of defense. The top of the pyramid tends to be the most costly because somebody has to write those functional end-to-end tests and automate them, or you have to have somebody manually test those things.


Questions to Ask

So we’ve got unit tests at the bottom, integration tests, and then UI tests or end-to-end tests at the very top. When you’re talking to developers, those are important concepts to understand. Ask them, “Where do you put the most importance? What tests are important to you, and what kind of test coverage do you have in each of those categories?’ It’s okay to ask developers those questions, and don’t worry if you’ve never written those tests before. You should be able to talk to a developer, and they should be able to help with those things.


If you found this helpful, please subscribe to our youtube channel, find us on social media.

Email us with your ideas for tech topics we should break down in less than three minutes!


Additional Resources:

Mobile App Testing

Questions to Ask Your App Developer About Testing

By: Carol Vercellino, CEO & Co-Founder

Mobile app testing sounds really important, but as an entrepreneur with an app idea, what do you really need to know about it? What questions do you need to ask the developer you’re going to work with to build your app to ensure it’s being tested thoroughly, especially if you don’t have a software development background? 

I’m Carol Vercellino, the cofounder of Oak City Labs, and this is my cofounder Jay Lyerly, who also serves as our chief technology officer. He’s going to share his knowledge of testing. 

Watch the video or read on below to learn more.

Carol: Alright Jay, let’s start with the basics. Why is it even important to test your mobile app?

Jay: Testing is all about risk management and how you can manage any changes to your application. So as your app grows and develops, it becomes more and more complicated. It’s easier to introduce problems when you make changes. So, a good solid testing foundation minimizes those kinds of issues.

Carol: So, risk management. Does it also help with the expense later down the road? Does it make it cheaper later?

Jay: Yeah because since you’re doing that risk management, you can feel safer in making changes later. And those later changes are less likely to cause catastrophic failures that sneak up on you.

Carol: You wouldn’t know anything about that! (laughing)

Jay: (Laughing) No, no no!

Carol: So if you were an entrepreneur and you were going to hire an app developer, what advice or what things would you ask about testing?

Jay: So the first thing I would ask is just really generally, “What kind of testing do you do?” Hopefully they don’t say “None!” So what you’re looking for after that is what kind of automated testing they do. Some developers will just do it all by hand. Manual testing is an important step, but you also want to have some automated tests to go with it. 

[You’ll also want to] talk about test coverage. That’s how much of your application gets tested in an automated way. It’s really hard for an end user application like a mobile app to have 100 percent test coverage just because there are a lot of weird cases that aren’t worth testing. But you probably want at least half, 50 percent. Up to 70 or 80 percent would be great numbers to hear.

Carol: Okay, so if a developer said yes, they do automated testing, and have over 50 percent coverage – or they say 100 percent coverage – are there any red flags someone should look for? Especially if they really don’t know what automated testing is, or what test coverage really even means?

Jay: Well, 100 percent test coverage is a little bit scary because there are always some bizarre cases that are really difficult to reach, and that’s not really an efficient use of a developer’s time. As far as other red flags, you might ask about how those tests get run. Is it all part of an automated, continuous integration kind of thing where they have a system that reproduces tests and builds the product for them? Or is it by hand, just sort of on the fly from their laptop?

Carol: Okay, or you can do what I do. Just ask what tools they use and madly Google them afterward to see if they’re actually legit. (Laughing)

Jay: (Laughing) That’s also a good idea, yeah!

Carol: Alright Jay, before we close – just one question I have to ask. Can you share a nightmare, or a war story from where you should have had a test, but maybe you didn’t test, and things didn’t go so well?

Jay: So one of the hard things is [deciding] how much to test. So we had an app we built one time where people made a list of stuff and could share the list with their friends. And their friends could pin those lists so they could come back to them later. And we had an issue where if a user pinned somebody’s list and they came back and unpinned or deleted that pin  later, there was a database mistake and it would cascade that deletion. It would actually delete the list, which was obviously super bad.

Carol: Yes!

Jay: We had tests to check if the list would go away if the [author deleted his own pin]. But we were not checking for those sort of secondary effects. So, that was a surprise and not good. But you know, the first thing we did was go back and add the test for it. So that’s an interesting way you can use testing to do bug fixes. If you get a bug, you can write a test that illustrates that bug. Then you go fix the bug and that test turns green, which means it passes. That’s a safety check in the future so when you make more changes down the line, you don’t reintroduce that bug back.

Carol: That also could be a good interview question for an entrepreneur who is hiring a developer. You could ask them, if you get bugs, what do you do? Ask about their process with bugs and if they’re writing tests.

Jay: Absolutely.

Carol: Jay, thank you so much for your wisdom on testing. I know you have helped us a lot at Oak City Labs with that, and we’re very thankful for that. If anyone has any questions or would like to hear more about testing or any other topic, just feel free to leave a comment, like this video, follow us on social media or go to our website www.oakcity.io. Thank you!

Contact the Oak City Labs team to discuss your app idea!

Success as an entrepreneur requires more than a great idea. The great idea must have the potential for exponential growth and scale. Is your idea viable? 💡