Are you Brushing your Project’s Teeth?

There is a certain something about basic hygiene: It is never really talked about, everyone is supposed to do it, but a lot of people still have bad breath and smell terrible.

Out and about in meatspace generally people will let you know directly or indirectly that you need to clean yourself up. They’ll either wrinkle their nose or tell you directly to go take a shower. And you should! Smelly people are gross!

Projects need daily hygiene too, but because they are amorphous and intangible nobody is ever going to tell you when the cleanliness levels have dropped below acceptable. Its hard to tell on lots of projects because there aren’t clear standards that work for every project. Or, “We don’t brush our project’s teeth, because <insert bullshit reason here>”.

Brush your project’s teeth! Do it every day!

Do your chores! Clean up after yourself! Take a shower!

Simple concepts like having a bug tracker, using version control, having a planning board, a schedule, a set time each day to answer emails, weekly code reviews, a deployment pre-check process, weekly discussion meetings, they are all necessary hygiene that makes and keeps a project clean and fresh.

Nobody wants a smelly project!

A project with good hygiene is a happy and successful project.

 

Software? Yeah, we’re good

So you’re running a successful business: You’re making sales and making money hand over fist.

Your customers are happy, you’re happy, everyone’s happy!

Well, for now.

Like all good entrepreneurs and business owners, you’re always looking to grow your business, build synergy with your products, and expand your offerings. In short, you want to be even more successful:

  • You’re thinking about adding drop-shipping capability to your online store, but you’re not really sure how to do it.
  • You’ve noticed a growing percentage of people are visiting your website but leaving with out buying anything. Whats up with that?
  • The store platform you’re using has just increased their fees and you’re not sure what to do about it. Or if there even is anything you CAN do about it: They’ve got all your data!

Everything seems to be working out great for you right now, but you want to be better. You want to improve!

Its almost like the world keeps changing

One of our clients came to us with a similiar story in late 2016. A specialty food distributor, they were already very successful with their online store and were making a lot of money through their websites.

As part of an initiative to improve and grow, they had tasked one of their internal employees with figuring out how to add drop-shipping capability for their suppliers on their existing stores. Drop-shipping was a known avenue of growth that had dropped into their lap: Their distributors had actually come to them to request it. Talk about a risk free initiative!

Unfortunately, their internal employee was not qualified for the job. He was primarily a web designer, not a software engineer, and simply had never done anything like this before. It should have been simple, right?

It’s never simple.

It turns out that the online shopping cart platform they were using didn’t support drop-shipping. There was no way to add that feature!

We’re not knocking the employee. He did his best and found a solution that should have worked. They found a company based in eastern europe that offered to transfer all of their data from their current online shopping cart platform to a new one that actually did support drop-shipping.

Guess what happened next:

The transfer didn’t work. Half their data was missing! They had over 10,000 products and 5,000 were missing! Gone!

And guess who didn’t answer their calls when they tried to figure out what happened and why it went wrong.

Luckily, Creative Ape Studios was recommended to them through a mutual connection and we came in to help in late November, 2016.

The first thing we did was sit down and listen to them. This is the most important part of our job: listening. What were they trying to do? Why were they trying to do it? What have they already tried? What is the best way to help?

We wanted to make sure that we got it right.

It turns out that the project (like most large projects) had snowballed in complexity since they first started.

Now they not only needed a platform that supported drop-shipping, but they wanted to redesign their sites to be mobile friendly (a great decision, by the way: did you know that mobile phones are the fastest growing way that customers shop online?), they wanted to add several new online stores for a large new distributor contract, plus a few other requirements that their shopping platform couldn’t handle.

It was a big project.

Sometimes its best to call in the professionals

Creative Ape was there to help. Over the course of the project, we did a lot of work for our client to make sure that the job was done correctly and that they were happy:

We wrote several custom scripts to transfer their data from their existing platform to the new one. 100% of their data was transfered!

The new platform didn’t meet their design requirements for mobile displays, so we wrote a number of custom display templates to meet their needs. Now it looks great, even on mobile!

Because of the nature of their business, they had a unique situation where some of their products had different SKUs depending on which site it was being sold on. Creative Ape extended the capabilities of the new store platform to meet their needs. We made it easy for their employees to use the new system, too!

The biggest challenge was that the client wanted to minimize down time during the transition to the new store platforms, so we put together a custom training program for the client’s non-technical employees to make sure they knew how to use the new system. We made sure that everyone knew what was happening so that their internal processes weren’t interrupted.

We are very proud of how well this project went for the client (especially compared with their experience with that eastern european company): there was 0 (Zero!) downtime of their websites during the transition.

They were so happy with Creative Ape Studio’s services that they extended their original contract

They asked us to create additional websites to meet the needs of a new distributor that they had just signed with.

We are still providing basic webmaster services for them today!

Of course, we know that the problems your business faces every single day are often a lot more complicated than they may look like at first glance. And they are unique: Your business isn’t some cookie cutter shop. You’re good at what you do because you do it your way.

If your problems were easy to solve, they wouldn’t be problems.

We specialize in the more complicated projects that businesses face. Whether it is solving your problems, or helping you grow in unique ways, Creative Ape Studios will work for you.

We’re local, we’re good at what we do, and we’re here to help.

Why are you waiting?

Contact us right now if you have a problem that you need solved or if you want to grow your business. We will sit down with you, we will listen to what you need, and we will solve your problem from start to finish.

We guarantee you’ll be happy with the solution.

And if it turns out that we aren’t able to solve your problem, we will point you towards the people who can.

Contact us right now!

Code Maintainability

Code maintainability is important.

There, I said it. I’m not trying not to be hyperbolic, but it has become increasingly apparent that code maintainability was extremely undervalued by many of the people who wrote the original code for my clients. The original developer didn’t focus on long term maintainability, so now the client is stuck with a code base that they don’t understand and doesn’t work and I have to fix it.

I mean, look at this garbage I found on the internet somewhere from a non-related project that isn’t covered by my NDA agreement:

garbage

Just looking at that function gives me nightmares.

Imagine trying to track down a bug and you come across that. First question, what is that code even supposed to do? second question, what is it actually doing? There have been times where I do some debugging on a client’s code base and it literally takes hours for me to answer those two questions. Its not so bad, considering I sometimes charge by the hour, but at the same time it would be much better for both me and the client if that code looked something like this:

burst

Much better.

That is code that I wrote about 18 months ago for an Android game, by the way. Look how easy it is to figure out what the code is supposed to do: its in the comment at the top! and look how easy it is to figure out what it is actually doing! Every line has a comment!

To be fair, that is probably too much commenting for such a simple function. Better to err on the side of too much maintainability than too little, I say.

How about this function from a database rewrite I did earlier this year?

newuserrewrite

Its beautiful! Not only does the top comment explain what the code is supposed to do, it even lays out the assumptions that were made when it was written. It only took an extra couple of minutes to type out that comment, but it can save hours when and if I ever have to come back to it to fix or update it in the future. It has great maintainability.

Obviously some code is more complicated than others, and the non-complicated code doesn’t really need all of the extra comments to make it maintainable. But professional code does. Maintainable code does. Code that is actually useful does.

Heres another example of code with great maintainability from another project I worked on. Look upon the glory that is maintainable code:

formatrawimage

Jealous? you should be. Considering the crap code that I am trying to fix for my client right now, I’m actually jealous of myself. It would be great if the original person who developed this code would have put a focus on maintainability.

sigh. Well, atleast I’m getting paid to fix it.

Joe Ryan

Joe is the founder of Creative Ape Studios, a Minneapolis based software development firm that LOVES maintainable code. From Apps to Investment Algorithms to Websites, Creative Ape will get it done for you so you can focus on execution. Reach out today and lets talk!

Moneyball and (software) MVPs

First off, no, this is not a post about baseball. Well, sort of, but more about the way that the concepts explored in Moneyball (the book more so than the movie) fundamentally changed the professional baseball competitive landscape and how we need something similar in software development. To put it simply, players were not being valued properly in professional baseball. The Oakland A’s noticed, changed the way they valued their players, and became one of the most competitive teams in the nation. A few years later the Boston Red Sox implemented those concepts and used them to break the “Curse of the Bambino” and win the World Series. Today, after more than 10 years, the teams that have failed to implement those concepts (Looking at you, Minnesota!) are no longer competitive.

Check out the companion video to this post here:

Software development in general and Minimum Viable Products (MVPs) specifically are in the same or worse position as pro ball was back in the 90s. There simply doesn’t exist a generally acceptable method of comparing how good they are in relation to eachother. What makes a good MVP? What makes a bad MVP? The effectiveness of the current methods of answering these questions are extremely poor because they are fundamentally flawed in their analysis of how to value a software team and it’s MVP.

Lets take a break to talk about what I mean by value. Value is the ratio between the overall benefit received from something and the cost required to aquire it, compared to the equivalent ratio between similar things. Good value is paying $1 for a coffee when the normal price is $2, bad value is paying $3 for that same coffee, and terrible value is accidentally buying a bottle of water instead of the coffee you wanted. Value is a relative term and can’t exist in a vacuum.

With that definition of value in mind, lets apply it to software MVPs and see if we can figure out how to value an MVP more accurately than methods in use today. Generally we can say that MVPs that have good value have a low cost to high benefit ratio. So what does low cost mean in the context of a software MVP?

Cost isn’t simply the dollar amount payed to a developer to code together your idea into a product. That is too simple and doesn’t take other factors into account. There are other costs besides dollars: time required to develop the product, opportunity costs, security risks, potential negative brand impact, and probably others.

Lets talk about time required to develop the product. An MVP that takes a week from idea to launch can generally considered to be more valuable than the same MVP taking a year to get from idea to launch. This seems fairly obvious so lets move on.

What about opportunity costs? An opportunity cost is missing out on a potential opportunity because your resources are tied up developing the MVP. Opportunity costs are extremely context dependent and nearly impossible to predict accurately, but they must be taken into account. When valuing an MVP one must decide if it is worth it to commit resources now or wait for a better opportunity to arise.

Security risks are another huge cost that many organizations do not properly take into consideration when developing an MVP. The sad reality of today’s technological landscape is that everyone will be hacked eventually. It is a matter of when, not if, and the downsides are immense. Look at the brand impact Target suffered when their credit card database was hacked. Look at the DNC and the exposure of their corruption in the current email scandal: it might cost Hillary the presidency. Look at Gawker Media and the exposure of their staff’s information after it came to light they were storing passwords in plain text. Developers must keep security risks in mind when designing and implementing the MVP.

But how much? Air tight security is extremely expensive and might not be worth it while developing a simple MVP. It depends on the product, and what information has the potential to be exposed, but most if not all MVPs with good value cover the basics of security (Server side input validation, prepared statement database queries, and the proper handling, hashing, and storage of passwords and other personal identifiable information,etc). If the MVP is deemed successful further security should be added as the risk of threats increase over time.

Thats a quick rundown of some of the costs associated with developing an MVP, but what about the benefits? What can you expect out of an MVP in the first place?

The purpose of developing an MVP is to validate an idea. If it turns out to be a bad idea, you can abandon it or start over or pivot without too much lost cost. Similarly, if the MVP turns out to be a great idea, you are in a position to iterate and improve while growing it over time. The transition from the MVP phase to a full product often comes with an increase in the size of the developer team as well as more oversight and control from previously uninterested parties. An often overlooked cost during MVP development is the future cost of executing this transition. For purposes of this article, lets call this cost concept future maintainability. The biggest benefit of focusing on future maintainability while still in in the MVP phase is that it drastically reduces the cost of onboarding new team members as the product grows. Its an investment in the project that potentially pays out at a future date.

An MVP with good value would invest in future maintainability, an MVP with bad value would ignore this completely, and an MVP with terrible value would put their investment in something that doesn’t actually reduce the future maintainability cost of the project.

What can be done to reduce future maintainability costs? This is the domain of software engineering and coding best practices and is a fairly well explored area. Good investments are version control, having design documents and keeping them up to date, commenting standards, code review processes, bug tracking, and many others. Entire books have been written about these concepts so they won’t be covered in this article. Lets just leave it that an MVP with good value will implement many if not all of these practices in their development processes and an MVP with bad value will ignore them. Terrible value in this domain is a bit context dependent, and difficult to cover in the scope of this article, but a simple example would be having design documentation that is out of date or just plain wrong: Its like being given bad directions on your way to your destination and will cause confusion and headaches while onboarding future developers to the team.

Value isn’t simply about reducing costs it is also about maximizing benefits receieved. Each MVP is going to provide a different benefit depending on what idea it is attempting to validate, but there are some general concepts that can be evaluated to see how much benefit can be derived from an MVP.

An often over valued concept during the MVP phase is that of scalability. Many people often front load too much of their development efforts into scalability and don’t really receive any benefit from it. Why put in the effort to make your product scale to 10 million concurrent users if you don’t even have 100 people using your software yet? Why worry about having 99.99999999% uptime if nobody uses your product after normal working hours?

Simply put an MVP doesn’t have to scale because the generally accepted initial market size for most MVPs is only the first 1000 users. With the power of today’s processors and the ubiquitiousness of cloud hosting it is extremely easy to be able to handle this level of scalability. The MVP obviously can’t be unreasonably slow, but at the same time it doesn’t have to handle the same level of traffic as Google or Netflix. An MVP with good value covers the basics (using efficient algorithms, minimizing network calls and database querries, compresses any images, etc) but doesn’t worry about more in depth optimizations. MVPs with bad value don’t optimize at all, and MVPs with terrible value put effort and sink resources into unneeded scalability and premature optimizations that aren’t needed.

Overall the software development shops that provide the most value for your dollar are going to be the ones that focus on keeping the above costs low while also ensure that the software is positioned to provide the most benefits. The good ones focus on the important aspects and don’t put extra effort into anything that doesn’t need to be included in an MVP. They don’t take too long to develop your code, they implement good security and don’t focus too much on scalability. They also ensure that they follow excellent software engineering and code development practices all while charging competitive market rates for their work. They are rare, but they do exist.

Joe Ryan

Joe is the owner of Creative Ape Studios, a software dev shop that focuses on providing the most value for your development dollar. He keeps the costs lower than a limbo bar and maximizes the benefits of your MVP.

What Execution Isn’t

Execution is the oft-cited distinguishing factor between a successful company and a failure of a company. It is the magic ingredient that distinguishes between a successful company and a failure of a company. But what is it? Well, here is what I have learned it is NOT:

Execution is not the ability to build and ship a product. Anyone can do that. 3 people have built your exact idea as their weekend side project and think they are going to get rich with it. Their product is probably better than yours: it looks nicer, has better features, and runs faster. And yet they don’t have any users and aren’t making any money off of it. They are not executing well.

Focusing on code development and feature development and polishing your product design is not good execution. It is something that surely needs to be done, but it should be kept to a minimum while you focus on execution. It is entirely probable that most companies that are bad at execution are focusing too much on improving their product.

Execution, to put it simply, is getting people to use the product. That is it. Nothing else matters. Companies that execute well have lots of users. Think about it, can you name a single successful company that doesn’t have users or customers? Good executors focus on gaining users. Bad executors focus on improving their product instead of getting people to use the product. They are putting the cart before the horse.

The very first step in getting people to use your product is to make them aware that your product exists. This is so obvious that many companies forget how important it is and therefore don’t focus on it. They are so busy building and improving and iterating on their product that they forget to let their customers know it is for sale! They don’t market their product at all. Good executors know that this is one of the most important things to focus on, and so they do: they put forth a large percentage of their efforts towards marketing.

The next step in getting people to use your product is to actually get them to sign up for it. Whether that imeans creating an account, signing a contract, or making a purchase depends on what your company is doing. This is commonly called sales and is the very reason that most companies exist: exchange goods and services for money. Good executors make sales. Bad executors don’t. Simple as that.

My personal recommendation, based on my experiences, is that founders and new companies should put about 1/3rd of their efforts towards marketing, 1/3rd of their efforts towards sales, and the rest of their efforts divided up between whatever else that needs to get done. This is a very good ratio of efforts for companies that want to execute well and be successful.

Joe Ryan

Joe is the founder of Creative Ape Studios, a Minneapolis based software development firm that both executes well and builds great software products. From Apps to Investment Algorithms to Websites, Creative Ape will get it done for you so you can focus on execution. Reach out today and lets talk!