So, I’m getting more into games of modeling the financials of various different companies, and one thing that has occurred to me was that I haven’t ever really thought very much about the financials of running a software company. I’ve thought far more about the financials of a back-end customer buying software or software services from a company. And, here’s the point. Both sides are valid and important to consider.
The primary reason why it’s so easy to understand and model the financials of non-tech companies is because, well, they are, by definition, much slower moving disciplines than the tech profession. The rules of those games don’t change very quickly, so it is very easy for a hobbyist (more specifically, someone who only has third hand experience of those industries but a lot of it from their past life experience) to be able to model the financials of these companies with a lot of accuracy. But the tech sector? That’s a moving target.
One of the big things to realize, and that we all agree on, in the tech sector is that prices are constantly going down. This provides an obvious benefit for the customer: in the future, the customer will be able to buy more technology capability for less money. And by being able to do so, a greater number of people in the world will be better empowered by advanced technologies as time goes on.
The problem with this is that it makes it very difficult for businesses to get into selling technology or technology services. Especially, in the case, with software. Why is hardware an easier sell? Because it involves the movement of tangible, physical goods. For a number of sound reasons, it’s going to be a very long time before shipping of tangible, physical goods can happen absolutely for zero-cost. Because there is a baseline cost of shipping, all material goods therefore have a baseline cost by virtue of the need to ship materials after they are produced. And, therefore, because there is such a baseline cost involved, it is easy to tack on a little bit of money for revenue to run your business.
Today, software, on the other hand, has no such fixed cost. Nowadays, software is exclusively distributed by the Internet, and Internet service providers charge by a fixed monthly subscription fee or the like. Therefore, there is no provision of “per-item” charges, and the total charge is never billed by the business. So that means it totally does not make sense to charge a little bit of extra money per the nominal cost of an item because there is no such nominal cost. The primary problem with Internet commerce is that if you want to charge per item, you’ve got to make your customer pay in two places rather than simply just one.
So… that’s a long-winded way of saying something that is often times stated more simply by most folks. With hardware, with tangible physical goods, the cost to manufacture and distribute is substantial. However, with software, the cost to duplicate and distribute is negligibly tiny. If you charged your profit as a percent on copies of software the same way you charged it on hardware, you’d never have enough money to run any reasonable business. Not unless you sold a trillion copies, that is.
But the fact is, don’t forget this, we still have to stay focused on the customer. The bottom line to the customer is that today, customers expect technology to deliver more to them with less cost, and software is no exception to this general rule. The big peculiarity with software is that it is perhaps the most hyperactive example of how costs went dramatically down with newer technology. If you charge more money that would make it easier to run your business, the customer will feel like they’re being ripped off because you’re charging way too much money, and they will not buy at all.
So, how do you run a business selling software or software services? And, how do you do so while still being fair to the customers current fair market expectations? Slight of hand. Really? Yes, really.
Remember how software development is defined exactly. Yes, it is exactly that: the design and development phase of a product. Pure software, on its own, is to the exclusion of the manufacturing phase because it is so cheap it really doesn’t matter. In the grand scheme of things, software development is a research and development functional area within a business. Normally, a business cannot survive on research and development alone unless that is the primary product that you sell to your customers.
So, that’s just the point. You want to sell software as a primary business in the modern era? Your best bet is to sell software research and development services to those customers who are willing to pay directly for this. These customers are almost exclusively businesses and government institutions. The rare exception to this rule was the recent cropping up of the “industry” of crowdfunding. Most generally stated, the way this works is that communities of tech-savvy folks, especially those who are involved in tech hobbies, get together online with a shared interest and desire for a common research and development goal. However, despite their hobby working capabilities, they realize they can’t simply team themselves into a large crowd of part-time hobbyist tech volunteers because of the limits of the human mind’s ability to command high-level thought over the summation of a large number of very short periods of time, and especially when there are a large number of distinct human brains involve.
It’s when they realize, they need quality, not quantity, that they assemble the crowdfunding campaign. So, instead of assembling a massive number of small bits of spare time, they instead assemble a massive number of small bits of spare money. And together, they can pool in enough money to hire out full-time research and development staffing to carry out the project to completion.
So, you must understand my primary point here. In today’s world, if you want to sell software services as a business, you must have a very wise customer on the other end, whether it be a business or a large community of very smart and diligent hobbyists. In today’s world, you cannot make money selling software services to a fool, period.
As software developers, we know how software development works internally. If you want to most rightfully charge for software in correspondence to how the real work happens, that is the labor of software development, then you must charge by the softwre development as a service methodology. It is the only way to be honest about the financial happenings and constraints of software development.
“But wait,” you interject. “What about games?” Today, video games are no longer primarily software development, modern game development has been designed so that all the hard work of software development is embodied in the game engine. As it turns out, the primary work item unit being sold on the game market is not the game engine, but it is the game art. Yes, selling video games is just another way of selling art, so most of the tenets of art development and commercial management can be applied there, and the software aspect can be cut out of the picture. The software development work embodied within the game engine is funded by a business-to-business sale between the game engine developer and the game developer.
The final customer, the potential fool of a customer, who buys games as sold per unit copy, is therefore realizing they are buying a copy of art, for the sake of entertainment. Yes, just like buying a song, a movie, ceramic pottery, paintings, and so on. They are totally insulated from the dynamics of software development. The thing about art is that it is generally well understood that the fair market value of art can be priced much higher than the cost to duplicate it. Sometimes there is a political motivation: because art is expensive, showcasing that you’ve paid for art is a “power move,” a way to show off that you are rich and a person of influence. Other times, it is because people feel bad about their life circumstances: it is boring or depressing, they want a means of escape, but are not thinking about the costs involved. In either case, it can be argued that there is a degree of foolishness involved. I mean, seriously. If you just need entertainment, there are many ways you can entertain yourself for free.
But realy, let’s back up. All that being said, what are some major, big-business areas in the economy in general?
Mass market, slim profit margins:
-
Agriculture, food distribution, clothing manufacture/distribution, other consumer staple goods production and distribution
-
Recycling and garbage services
-
Law enforcement: military, police officers, lawyers, judges, notaries
-
Landscaping services
-
Transportation, road building and maintenance
-
General shipping and distribution
-
Construction, building maintenance
-
Fire control department
-
Banking and financial services
-
Health care: medical, dental, vision, emergency medicine, etc.
-
Religious services and orders
-
Education
-
Art and entertainment development, party services
-
Hospitality: restaurant and hotel businesses
-
Utilities: mail, water, sewage, gas, electricity, fire alarm, telecommunications
-
News review and editing
-
Directory services (phone book, web search engines, etc.), library and archival services, records management
-
Electronics and computer manufacturing
Mass market, high profit margins:
-
Real estate: rental properties (apartments, mall rental space), land taxes
-
Insurance: health insurance (medical, dental, vision), house insurance, car insurance
-
Publishing companies: books, movie theater popcorn (yes, it’s part of the movie publishing deal!), music, online marketplaces, subscription television (satellite/cable TV, subscription Internet video streaming), video game, advertisement publishing, etc.
-
Stock index/plan managers: 401(k) plan managers, stock index fund plan managers
-
Some areas of software development, the big money counterpart to computer manufacturing. PLEASE NOTE… TODO!
These slim profit area will never have a corresponding high profit area:
- Religious services and orders. Although there are religious publishers and they typically don’t operate as non-profits, they try to keep very slim profit margins and effectively operate as close to a non-profit as possible.
These slim profit areas, I haven’t really found a corresponding high profit area:
- News review and editing
- Directory services (and similar)
Notes about this classification:
-
Food. Pleasure food, especially beverages like tea, coffee, soft drinks, etc. Special spices. Although these have higher profit margins than the essentials, they are not high enough.
-
Standardized testing agencies, the big money counterpart to education. But, do they really make that much money compared to the other mentioned parties here?
-
Although there are some unscrupulous for-profit recyclers, their profit is not substantial.
-
Although police officers can give out more traffic law violation tickets to raise revenue, their profit is not substantial.
-
General shipping and distribution is considered a subset of publishing.
-
Recycling, garbage services, landscaping, and utilities are considered but a subset of real estate.
-
Additionally, if you consider local county and state government as part of real estate, law enforcement and fire control department are also part of real estate.
-
Since hospitality industry often times depends on surrounding businesses or residences, that can also be considered part of real estate.
So, one unfortunate thing that has become obvious. One of the primary tenets of software and computer technology, the “information technology” areas of the economy as a primary economic unit such as news, directory services, library, archival, and records management, none of there areas have a high profit counterpart. How do these areas ever get off the ground, then? Historically, there have only been a few options available.
-
Be an advertisement publisher to supplement revenue. This is especially common in news review and editing.
-
Define yourself as a news publisher. Therefore, you can charge a subscription fee and raise revenue by that means.
-
Business-to-business relationships. If you are an archival agency, build good connections with universities, academic institutions, and anyone with historic research departments. They will chime in to help pay for your expenses to run archival services.
-
Sell educational services to help fund research and development. This is how many universities and academic institutions perform fundraising for research.
-
Get yourself a good following of tech-savvy geeks and they will donate accordingly to cover your expenses. Essentially, this is a variant of crowdfunding.
-
Government funding/subsidies. Essentially, this is a specialized form of business-to-business relationships. Everyone has to pay taxes, so the government is a de facto mass market player. Once the money is with the government, there is only a small number of key stakeholders directly in charge of how the money is going to be spent (although they are elected through democratic processes), so in many ways business deals with the government have similarities to dealing with another business.
In the business world in general, business-to-business relationships is a great way to get a solid stream of revenue for your business. Often times, there is an existing business that have found a way to leverage themself into the mass market and has a lot of money stored up, but they need to get some work done that they know is already being better done by a small external company. So, this is when they’re willing to shell out that money to support the outside company to do the development for them, and proper negotiation here is key to securing a key business dealing.
And, in fact, as I mentioned earlier, almost all technology businesses these days are funded by this means. The really good thing about this, by being able to do business-to-business dealings to fund software development, you can tap into the revenue of any sector of the economy, provided a business operating in that sector is willing to fund software development directly.
One interesting variant of funding software development that I must mention. Providing Internet hosting services. Especially in the realm of business-to-business dealings, you could have a customer who is demanding absolutely enormous hosting resources. Since live Internet servers have a definite energy consumption cost, you have a tangible physical quantity for which you can charge. On top of that, you can then easily also include the Internet Service Provider (ISP) billing, hardware depreciation expenses, and even real estate expenses (the floor space and rack space consumed by the server computers) within a single bill to your customer. Scaled up large enough, you now have a definite base to tack a little bit more money, and this will work out to be large enough to fund software development activities.
So, after all this discussion about how hard it is to do business in the software development world, I have to come back and answer the primary question. How do you set fair prices in the software business?
Selling the true essence of software, that is a tough sell to make. If you are a small business trying to get off the ground selling software as a direct line item of your revenue, you must realize that you need to sell to a wise customer and not a foolish one, either a business or a geek community to be specific.
That being said, even though most businesses are indeed wiser than your direct mass mass market customer, many non-technical business leaders still have only a limited degree of patience when it comes to technology research and development. They are not willing to start with a totally new and unproven company and are hoping to see some sign of a software business capable of being a “proven business partner.” So, how do you even get any such business off the ground when no mass market business wants to deal with your fledgling business? Start with the geek community.
When projects are being incubated in the geek community, you have plenty of exposure to geeks who are willing to wager the relative value of your developments compared to other existing developments. And by doing so, there is the possibility for establishing a financial baseline and work record that can be reasonably convincing when dealing with business partners. Finally, once that baseline has been established and your software business starts dealing with the business world, the business world amongst themselves is responsible for setting the prices they’re willing to pay for development on your line of software products as they become older, and this is destined to constantly go down.
So, here is the key to remember. The only way to keep making money as a software business is to keep making fundamentally new software products. When a software product, as defined by its key features and functions, appears to become “old,” the business world will naturally be less willing to pay as much for it as they once did. Even as the product grows in sophistication, features, and functions, this tenet still holds true, especially as most of your business shifts away from the geek community and into the business world. You’ve got to keep pushing out radically new software technologies whose value is unproven in the business community until the geek community makes the first move commanding higher prices for the tech, then the business community will follow without thinking it through and make their payout.
So… again, it sounds like I may have segwayed off of topic, so I’ll ask the question again, this time with a final definitive answer. How do you set fair prices in the software business? The primary, most fair price to set for software is to bill for software development as a research and development service directly. The principal value of radically new such development is zero. Otherwise, if you’re hoping for a growing valuation, ask the geek community for a specific number. If you are okay with a non-zero but shrinking valuation, research the prices software is going for when selling to the business world at large.
Come on, come on, don’t just give me a wishy-washy answer like that, show me some clear numbers! Okay, fine, let’d do this.
Baseline salary of an entry level software engineer in a typical proprietary company in the United States in 2015 is around $50,000 U.S. dollars.
Let’s assume there is another lower rate for open-source software developers. Billed at $20/hour, their corresponding yearly salary for 40 hours a week is around $40,800. Okay, so that’s not too much different.
Now, we want to grade what kinds of software development can be completed in what kinds of periods of time, at the low $20/hour rate. At the same time, we take the paid job rate and compare it with the true appraised market rate.
-
1 hour coding challenge: $20 paid contract, $0 market rate (answers available for free online).
-
30 minute coding challenge: $10 paid contract, $0 market rate (answers available for free online).
-
10 minute answer to a technical question, a few lines of example code: $3.33 paid contract, $0 market rate (answers available for free online).
So, the hard truth be told. Software development is only considered to be worth any amount of money when it is done in big chunks of time. Then it is disproportionally worth more money than the sum of its parts would be worth.
But, hold on, hold on, if you want to make payments for these small activities, you need to setup payment and billing information. How much does that cost?
-
Buy a widget online via PayPal or similar expedited payment broker service: 5 minutes, $1.67 paid contract, $0 market rate. Why do I have to pay for the time it takes you to setup payment?
-
Setup payment information for an hourly or salaried job: 1 hour, $20 paid contract, $0 market rate. Why do I have to pay for the time it takes you to setup payment?
Probably the smallest chunk of software development that can be appraised at any market value is one person working on software development for a month, assuming this is the first time doing the work and you have to pay for some 2 weeks additional time to get setup in a specific environment or the like. That means they only spend 2 weeks doing the actual software development you’re paying for, but that’s okay, that’s plenty if you’re expecting software development out of a single person for a relatively simple task. So, what is that in the numbers?
- $20/hour * 40 hours/week * 4 weeks/month = $3200.
Yes, that sounds reasonable, a small software development task can be completed at market rate for about $3000.
After the setup costs have been paid for, it can be reasonably expected that additional commercially valuable work can be paid for in a one week or even one day interval.
-
$20/hour * 40 hours/week = $800.
-
$20/hour * 8 hours/day = $160.
Looks good to me. Under some circumstances, we’re actually seeing matchups between the market rate and the corresponding cost.
But really, what can these periods of time buy you in terms of a tangible software product?
-
1 day, $160: Custom CLI program, simple GUI/web UI program with similar complexity to custom CLI program.
-
1 week, $800: More complex CLI or GUI program, fix all the bugs in the remainder of the week.
-
1 month, $3200: Still a relatively simple GLI/GUI program, but with a range of convincing features and functions that fill a niche application. I mean, yeah, this is very saleable for that amount of money, but you’re not going to get a full backend monolith with a tiny, simplified GUI developed by one person to top it off. You’ll get a simplified front-end with a simplified back-end.
Alternatively, another possible sell: re-architect a relatively complex software component. In the business world, this is often times a tough sell to make. Business leaders don’t want to pay for it directly. However, if you look at the total cost state of affairs, this doesn’t really cost much money in the grand scheme of things because major refactoring only happens every once and a while. But, more pressing is not the fact that this results in additional expenses, but it results in additional time delays on when new feature developments can be fulfilled, because doing so is more financially efficient (and team negotiable) when done in a lump rather than thinly distributed over long periods of time.
But wait, there’s another approach.
These prices and the results are fair for business-to-business dealings, but you’re not going to make nearly as much money mileage when dealing with little peeople directly. Often times, you can develop the same degree of complexity, but the market value to pay in return is zero.
However, as a collorary to this, if you’re working in a big business, that fact often times applies to your coworkers directly. If you ask them, are they willing to pay that price? The answer is no, but your making that much money anyways. The big bosses, looking at the investment of time and computing the money, yeah they can agree on those expenses, but then we’re right back to where we started: you can do business-to-business dealings, but you can’t sell to the community directly.
Also, finally, another important thing that I didn’t completely mention. How does government funding relate to how “proven” or how old a technolgy must be before they fund development in it? Generally, government funding for technology development is a hyper-manifestation of the business world’s unwillingness to adopt new technology. The government will only adopt technology once it has become really old and proven, so it can be very stable and relied on in the government. There is, however, an important exception. Government funding of research is a thing, and when they do put forward the money, they may be willing to take risks equal to, or even bigger than, what the business world at large is willing to fund.
There’s also another curious mention of ease of sales and development relating to hardware versus software. Hardware is hard to develop, software is easy to develop. On the other hand, hardware is easy to sell, software is hard to sell. Selling a product is easier than selling a service simply because (1) you are doing a one-time sell and (2) the total amount of money the buyer must invest is less. Sure, software development can be a one-time sell for developing only a specific item, but the problem still remains that the amount of money paid at once is still very large. However, with hardware, the widget price is only economic if you can rely on selling an absolutely massive number of them to distribute the engineering cost thinly across all of them.
Crowdfunding is the most straightforward way to tackle the lump sum payment problem with software development. A community of people pool together money for the software development, then the money is spent on the comitted schedule to deliver whatever results come out of it. Unfortunately, there is no guarantee that the community will receive a clearly understood result. They have to understand the nature of what they’re paying for: they’re buying research. So long as that’s the agreement, it works very well.
Arguably, however, from a business standpoint, crowdfunding for research fundraising is tougher than would be the case of business-to-business dealing, if only you didn’t have the problem of businesses being so risk-averse with new software development. The thing is, dealing with a small community is esay, but dealing with a large community is hard. The fact is, business leaders are but a small number of people representing the larger community, so that’s what makes big business deals easy. It is simply hard for a large number of people to agree on something, except under exceptional circumstances. But also… even so with the business dealings, you have a corresponding problem that big business leaders may only want to deal with other big business leaders, little people like you are out of the equation. That’s a great thing about communities, they’re more willing to fund little people than business leaders.
A related subject is the topic of getting employed in a software development/engineering role in a big company. This is actually rather surprisingly similar to the challenge of doing software business with big business. It’s not easy to get hired directly by a big business to do software development/engineering. Typically, you must at the very least have a college degree, plus a few years of professional experience. Getting a college degree is conceivably straightforward. But, how do you get those years of professional experience? You have to start at a company that is willing to hire someone with only a college degree, of which there are fewer, and these either tend to be big companies willing to take a risk or small companies that simply have less bureaucracy.
Finally, there is a possible, alternate path into big business that does not require a college degree at all. Get started at a small company where they are more willing to hire folks without a college degree. Then, once you get enough years of professional experience at such companies, the door is pretty much wide open to work at any company.