What is software, exactly?

Roman Trotsenko
Inobright Inc.
Published in
5 min readJan 25, 2017

--

What is creating web solutions, mobile apps, exactly? What is it made of? How is it created? While business owners often adopt a “laws-and-sausage” approach to these questions (“it’s better not to see them made”), taking that practice too far can be a costly mistake.

The more informed senior managers are of the development process, the better equipped they are to make smarter, more effective decisions regarding their software needs. Understanding just a few key facts can help prevent blown budgets, missed deadlines, resource shortages, and other crippling disasters.

The result? Better products, happier clients, thriving business, and a development team that thinks you’re awesome.

So, what is this “software development,” anyway?

Software development is the process of planning, building, maintaining, and optimizing websites, web solutions and mobile apps to direct the behavior of your PC’s, Mac’s, smartphones, etc. These directions are embedded in source code, which is written by engineers using a programming language.

Typically, we develop solutions for the purpose of solving a problem, automating a function, or improving a process. Uber, for example, gives ride-seekers convenient, personalized transportation options by connecting them with nearby drivers. Facebook lets people socialize without actually interacting with other humans. Google lets you image search yourself. And so on.

More and more companies depend on reliable software to succeed; many can’t function without it. But in order to build, test, and maintain its functionality, an effective dev team needs several key resources. These include time, money, experienced engineers, manpower, management, and coffee — ideally in large quantities.

In reality, however, engineers are often faced with limited budgets, impossible deadlines, and chronic understaffing, to the detriment and sometimes collapse of a business. Why? Myths and misinformation are frequently the root of the problem.

Prevent setbacks and streamline the development process by avoiding these common managerial mistakes — no coding required.

1. Penny-pinching.

Software is only as good as the engineers who build it, so don’t scrimp too much when it comes to payroll. As computer programs and programming languages continue to grow in scope, complexity, and sophistication, it’s more important than ever to invest time and money in finding experienced developers to include in your team.

Nope, it’s not cheap. But the stronger your staff is, in terms of both skill and manpower, the more likely they are to deliver superior work in a shorter period of time — a lasting competitive advantage that far outweighs the short-term benefits of hiring cheaper, less skilled developers.

2. Rushing.

Your clients need things done yesterday, time is money, and business moves fast. I know. Still, setting realistic deadlines that allow your team enough time to satisfactorily produce deliverables is critical.

Effective software isn’t built overnight. While using a program can be as simple as a single mouse click, even relatively simple programs can consist of thousands of lines of code. The average iPhone app has about 40,000 lines of code; Microsoft Office 2013 has 44 million.

And writing code is just one part of the development process. Before being deployed, new software needs to be rigorously tested for bugs as well as usability and quality control, and to do this thoroughly takes time. Of a program’s hundreds of thousands or millions of lines of code, each one has the potential to contain bugs, and the more power and functionality the program has, the more code it requires to build.

To illustrate, Windows 3.1 (1993) consists of 4–5 million lines of code — it took a team of 200 engineers to develop and a team of 140 to test.

Windows 4.0, launched a mere 2 years later, consists of 11–12 million lines of code, and required a team of 800 to develop and 700 to test. That’s 5 times the manpower needed to test only 3 times the code.

Fast-forward to the 21st century, and you’re looking at 50 million lines of code — a task taking 2000 developers to build and an even bigger team of 2400 for quality control.

Oh — and that was Microsoft Server 2003, an operating system that, if it were a person, is now old enough to be in high school. Think about how much more advanced software has grown in the past 14 years, and keep that in mind when staffing your dev team, setting deadlines, and making promises to clients.

3. Not paying attention.

While it’s tempting to walk away from a project after assigning it to your team, participating in the process can help clarify objectives to developers and eliminate time-consuming miscommunications. As a business owner or manager, your feedback is a valuable asset to engineers — a key puzzle piece that gives them a more coherent picture of your software needs.

So even if you have zero experience programming, stay involved in development where you can. Communicate regularly with your engineers and monitor your team’s progress. Maybe bring in donuts on Fridays. You may not know how to sail the boat, but if you know which way the wind is blowing you can help ensure things stay on course.

4. Setting and forgetting.

Software is a living creature — more specifically, a newborn child. Deployment, like birth, is only the first step. After that, it requires regular supervision and care to ensure that evolving needs are met. And, of course, it’s susceptible to bugs.

Just how important is regular maintenance for live software? Well, modern cars have an average of 30,000 components — and in spite of rounds and rounds of scrupulous testing, they still malfunction occasionally and require tune-ups to stay in good condition. Compare this to a modern program’s millions of lines of code, and you might understand the old joke that a developer will never fly a plane that’s been programmed by his team (the humor takes a bit getting used to).

When it comes to software, it’s not over till it’s over — and it’s never over. Continued testing and evaluation are essential to keeping programs up-to-date, catching and containing bugs, and ensuring optimal functionality.

The Bottom Line

Software development is a multi-faceted, dynamic, long-term endeavor — but don’t feel overwhelmed or throw in the towel. Just recognizing the complexity and needs of the development process is one of the most effective steps business owners and decision makers can take to make sure it’s successful.

Of course, these recommendations won’t grant your company immunity from every software-related disaster (but we know some guys, that make magic**) They will, however, help you navigate dangerous but avoidable obstacles on the development journey, reducing unnecessary costs, delays, and headaches.

And we could all use less headaches.

** Give us a call to find who they are :)

I hope this article was helpful! Stay tuned for my next post to learn about the software production workflow and how Inobright works to provide the best solutions for business’ success.

--

--

CEO at Inobright Inc. > Expert in software development, IT consulting, startups