The Value of a Software Developer
- The computer
- The internet
- The general importance of these tools
- The business importance of these tools
“So the reason programmers sometimes get paid a lot of money, I think, is because we can build systems that leverage computers to do an unreasonable amount of work. If you build Gmail’s spam system, you can remove spam from the inboxes of millions of people! This is kind of magical and amazing and it’s worth all of the bugs and dealing with computers.”
– Julia Evans
An important part of being human is the drive to create. Beautiful things, destructive things, physical goods, abstract ideas.
One incredible thing we have made is the computer. A computer is a machine that performs sequences of calculations and logical operations many times faster than the human brain. Operations can be combined into collections of logic meant to accomplish specific tasks. These are called software programs.
Over the years, we have built up layers of abstractions to create the modern computing machines that we use daily. Instead of teletyping binary instructions into room-sized mainframe machines to perform scientific research calculations; we click, drag, draw, and type into portable laptops made up of hardware components and software systems to accomplish general-purpose productivity tasks.
The next major invention came when we linked these computing machines together to form a network called the Internet. This allowed computers to pass information between each other across physical fiber optic cables.
Today a person can write a set of instructions (software) on their Macbook Pro in a trendy co-working space in Vancouver, BC, and deploy those instructions through the internet to hundreds of specialized computers in a Google data center in New York, where they are executed and the results made available to the rest of the world.
The general importance of these tools
The reason computers, connected via the internet, have become so important to society is that they make it easier for us to fulfill that core human drive to create.
Computers can help us build tools that:
- Make life easier for individuals
- Help businesses operate more efficiently. A network of computers can h
- Allow us to share information and disperse ideas around the world
The combination of human creativity, curiosity, and millions of transistors, has meant that creating things requires a lot less resources than it used to.
The business importance of these tools
A business is nothing more than an individual or team solving a problem for a target customer base. The problems being solved are important enough to the customer base that they are willing to give money (a societal representation of value) in exchange for the solutions. A family will pay a monthly subscription to Netflix because Netflix’s product is solving their problem of boredom.
If some of these solutions can be turned into systems of logical operations and calculations (software programs), then they can be performed by computers - which need no sleep, food, or water. Once created, these software systems can serve a small niche of hundreds of people or be scaled to meet the needs of millions of people around the world.
Even if a business’s primary way of providing solutions to others can’t be turned into software, many functions within that business can be made a lot easier with the help of computers. Think of the payroll software that powers your local garbage disposal company.
The reason automating a simple payroll process is valuable is because of its effect on one or more of the main concerns every business has:
- Reducing the time and financial costs of its operations
- Increasing the quality of its products
- Increasing the number of products it creates
- Innovating and creating new product categories to sell
- Increasing the number of customers it serves
The individuals who can build and maintain these software systems are the software developers. They work with entrepreneurs (people dedicated to finding profitable problems to solve) or decision makers within established organizations to take “business” problems, clarify them, and present solutions made up of software systems that are:
- Flexible (easy to change)
- Understandable (easy to reason about)