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.
https://www.oakcity.io/wp-content/uploads/2021/03/3ProgLanguages.jpg4751030adminaccesshttp://www.oakcity.io/wp-content/uploads/2020/05/OCL-V5-10-1030x473.pngadminaccess2021-03-29 17:45:292021-03-29 20:19:31Top 3 Programming Languages in 2021
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: 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.
https://www.oakcity.io/wp-content/uploads/2021/03/ProgrammingLanguage.jpg4751030adminaccesshttp://www.oakcity.io/wp-content/uploads/2020/05/OCL-V5-10-1030x473.pngadminaccess2021-03-29 17:40:312021-03-29 20:16:00How to Choose a Programming Language for Your Product
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.
https://www.oakcity.io/wp-content/uploads/2021/02/FindingAnAppDeveloper.jpg4751030adminaccesshttp://www.oakcity.io/wp-content/uploads/2020/05/OCL-V5-10-1030x473.pngadminaccess2021-02-16 15:33:352021-02-19 01:50:56How to Find an App Developer
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.
https://www.oakcity.io/wp-content/uploads/2021/02/AppDevelop.jpg4751030adminaccesshttp://www.oakcity.io/wp-content/uploads/2020/05/OCL-V5-10-1030x473.pngadminaccess2021-02-16 15:26:372021-02-16 16:46:41Setting Expectations for Mobile App Development
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.
https://www.oakcity.io/wp-content/uploads/2021/02/Feature-Test-Pyramid.jpg7201280adminaccesshttp://www.oakcity.io/wp-content/uploads/2020/05/OCL-V5-10-1030x473.pngadminaccess2021-02-04 14:22:052021-02-04 20:37:45Test Pyramid for App Development Explained in Less Than 3 Minutes
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.
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.
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!
https://www.oakcity.io/wp-content/uploads/2021/01/MobileAppTesting.jpg4751030adminaccesshttp://www.oakcity.io/wp-content/uploads/2020/05/OCL-V5-10-1030x473.pngadminaccess2021-01-25 14:23:152021-01-25 14:23:15Questions to Ask Your App Developer About Testing
Hi, I’m Carol Vercellino, the co-founder of Oak City Labs software development agency, and with me here today is my co-founder and CTO of Oak City Labs, Jay Lyerly. Today we’re going to discuss the differences between native and cross platform applications. It’s a question we get asked about all of the time. Hopefully we’re going to give you high-level [information] and maybe some of the pros and cons between the two. Before we start off, we are a native shop, so keep that in mind.
Watch the video or read on below to learn more about these two options.
Carol: Jay, I know this is one of your favorite topics. Could you please explain to viewers what we mean when we say native platform versus cross platform?
Carol: what about some of the new things in the market like Flutter?
Jay: Flutter is that same kind of mold. It uses a language called Dash, which is Google’s language. Dash uses the Flutter libraries to talk to the system libraries, so there’s still that extra layer in there to translate between the non-native language.
Carol: Okay, so what are some of the benefits of using a native platform?
Jay: So with the native app, you’re going to get access to everything you’re ever going to need. It’s a wide open field. Also you’ve got one less layer in there. You’ve got your code and the system libraries. So that means less software, and less software means less plugs. There’s less to go wrong.
So, the downside with that is – with the “right ones run anywhere” thing, it never really turns out that way. First off, iOS and Android are different. Users expect them to run differently, so you often end up with a lot of bifurcated bits of your code where you have one section doing an iOS kind of thing and one section for Android to do an Android thing. So you get really messy code, which is hard to maintain in the long run.
Also with the platforms, again because there’s an extra layer in there between your code and the system stuff, sometimes they don’t have access to all features. Especially new things that come out, like in iOS 14, which came out a few months ago. It might have features not yet covered by these cross platform libraries. Or more advanced features. If you have an app that does really fancy camera stuff and you want to have access to advanced camera controls, they don’t always cover the whole breadth of the native API.
Carol: Okay, that makes sense. So Apple is kind of known for being difficult sometimes to get your app approved and in the store. Is that ever a concern with cross platform?
Jay: Sometimes it is, because for example, there are certain private APIs that you’re not allowed to use. And sometimes those things change and so with this extra layer, they’ve got to keep up with those things too. So, sometimes people run into problems where their cross platform library isn’t in compliance and they need to upgrade. That means they need to do things to their code, or that upgrade isn’t available yet. Or it’s not stable – things like that. So sometimes that can be an issue.
Carol: Okay, so it sounds like the pros of a native platform are you don’t have an extra layer there and you get a whole lot more access to function on the hardware and the operating system for what you’re developing for. Cons – do you think maybe sometimes it’s a little more expensive if you need to develop for iOS and Android?
Carol: Okay, that makes sense. So last question, and i’m sure this is going to be your favorite one. What’s a situation when it would be okay to use a cross platform app or build something with a cross platform language? And, I worded it that way because I know you don’t like it!
Jay:[Laughter] So, the biggest issue when you’re looking at this thing is the complexity of your app. The cross platform frameworks make really simple apps really easily. Like it’s a great M.O. – they can throw together really simple things. But the complexity of those things grows really rapidly. So as your app gets more complicated, the complexity of the whole system grows really quickly.
Carol: So it sounds like if you’re assertive, you’ve got a low budget, and you do for whatever reason have to go cross platform, maybe a good thing would be to plan ahead for potentially rewriting in native in the future. Just know that might not be the app that you scale on.
Jay: Yeah, if you’re doing a first version or [working] on a shoestring budget, I think you’re going to hit the wall pretty quickly, and you’re going to have to rewrite that thing next year.
Carol: Alright, well Jay – thank you for discussing this topic with me. I know it’s one of your favorites, you did a good job not doing a full-on rant on it.
Jay: Thank you, Carol!
Carol: If anyone has questions or would like us to explain anything more, we’d be happy to do that. Just please follow along on our Oak City Labs channel, or you can find us on social media. Thank you so much for watching!
https://www.oakcity.io/wp-content/uploads/2020/12/analytics-2618277_1920-e1607360170350.jpg12801281adminaccesshttp://www.oakcity.io/wp-content/uploads/2020/05/OCL-V5-10-1030x473.pngadminaccess2020-12-03 18:55:382020-12-16 15:37:08Learn From Your 2020 Metrics
Machine learning is one of the most significant technological advancements in recent history. It’s experiencing incredible growth, and innovators are making breakthroughs in ways that no one ever could have expected.
Because of this, machine learning has changed and will continue to change a lot over the coming years. You’re probably familiar with the buzzword, but the fact remains that many people can’t really answer the question of what machine learning is – and what it isn’t.
In this article (and video), we’ll talk about what machine learning really means, how it’s changed over the years, and where we think machine learning will go next.
What is machine learning?
Machine learning is a process where you use algorithms to parse data, learn from it, and make a prediction.
For example, one of the most common ways people are using machine learning right now is with stock market predictions. You can try to predict what a particular stock is going to do by combining historical stock data with other data, like weather, GDP, and even election data.
On a more personal note, if you have an iPhone, you can label your pet, child, partner, or friend in one of your photos. You’ll then notice that Apple Photos goes back through your album and labels any other pictures of that person or animal. You can also use search terms like ‘cake’ or ‘beach’ to sort through photos. That’s machine learning on the back end.
Machine learning is not where you have a whole bunch of data that people – or statisticians – manually go through (to learn more about the differences between machine learning and statistics, check out this article).
It’s an automated process, and the data is like a black box to the machine. The machine takes that data, dumps it into different models, and tries to develop the best possible answer. So, the machine doesn’t care whether it’s exploring weather or GDP data.
Supervised learning is when you give labeled data to the machine. For example, you have a whole data set full of cats and dogs. You give the machine that data set, and the machine learns what a cat is versus a dog. Then, you give the machine a photo that hasn’t been labeled and ask the machine to identify it as a cat or dog. And the machine can do that using algorithms and a little bit of human intervention.
Unsupervised learning is when the data is unlabeled. Take the same example, but instead of giving the machine images labeled as cats and dogs, you leave the photos unlabeled and ask the machine to look for patterns in those images. Then, you can come up with a label for those patterns.
Reinforcement learning is much like playing a video game. In a video game, the user goes through a level and gets a reward or badge before proceeding to the next level. Reinforcement learning is very much like that. The automation or algorithms attempt to find the most optimal way to accomplish a task.
When the machine does well, it moves onto the next task, and it continues to try and get better and better each time.
What’s next in machine learning?
Machine learning is becoming more commonplace, but we’re also moving towards getting more information around the data.
According to Jason Burke of CREO, Inc., the biggest problem in the machine learning space right now is not the algorithms or math; it’s cleaning the data and the context of the data. We need to combine statistics and machine learning to get more context around the data itself.
We believe we’ll see advancements in that area in the coming years, plus more user-friendly platforms where anybody can sit down and use data science and machine learning.
Machine learning will undoubtedly continue to disrupt every industry. How are you going to use machine learning to impact your company, industry, or the world?