Programming ProfitabilityHaving a set approach to writing software can enhance your bottom line. 4/10/2012 8:18 AM Eastern
Apr 10, 2012 12:18 PM, By Patrick Barron
Having a set approach to writing software can enhance your bottom line.
Programmers in the AV industry are faced with many challenges, primarily the creation of software that works properly while making a profit from that programming. Some people are independently wealthy and can afford to write software to keep boredom at bay, but most professional control system programmers have to rely on writing software to make a living. There are some key factors to evaluate and be aware of when writing code to ensure profitability.
To quantify what making a profit means when coding we have to look at the variables that go into writing code and what we can control on a regular basis. We can quantify the profitability based on completing the task in the smallest amount of time possible. In this case time literally is money. To increase profitability we need to look at ways to reduce the amount of time involved writing program while still maintaining high quality and high standards. Certain things such as having reliable equipment and a good place to work are a key component of working efficiently and saving time. If you spend more time dealing with a faulty computer or laptop than working your profitability is not going to be positive. A comfortable working environment with few distractions is very important. Because programming is based on focus and concentration, a workplace with constant distractions and interruptions will have a negative impact on productivity. Each time you lose focus on your work and have to get back into the program that is time wasted and lost time is lost money and profit.
Profit can be defined as the difference between money received for a project (income) and the time spent writing the project (expense). The income for a project is often based on a quoted amount of time that will be required to complete the scope of work. Giving an inaccurate quote that is too low and does not reflect enough time to complete the project will have a negative impact on profitability because the income for the project is not enough. An inaccurate quote that is too high will also have a negative impact because the cost might be so much that the programmer doesn’t win the job. Zero income on a job is very bad in terms of profitability. In order to maximize profit, an accurate quote must be given. Accurately quoting a programming job is difficult for a novice programmer. Experience will teach a programmer how long certain tasks take to finish. If the program is large, then break it into smaller subsections and estimate how long each small subsection will take to complete and add a few hours for integrating the subsections into a final program.
A significant factor in minimizing programming time is to use the experience gained from prior projects to your advantage. The first time writing a routine for a new piece of equipment can be challenging and considerably time consuming. The second time the same piece of equipment is used the time involved naturally will be less because you already know how the equipment works and you have already found a solution for any unusual quirks. The ultimate time saver is to actually re-use entire sections of code. If it is already written once and it works the exact same way in a subsequent job, a smart programming practice would be to be able to use that code block again. Some manufacturers allow the ability to store a “module” in their programming development application. In this context a module is a block of code or a series of blocks that are encapsulated into a file. This file can be brought into the main program and all of the functions that are in the module are brought into the code as well. Though it takes a small amount of time to initially structure a code block to save into a module, this time can be well worth it in the future when a module needed for a job is readily available. With enough experience and enough modules written for various equipment, the programming on a job might be nothing more than bringing in a few prewritten modules. Re-using code is an excellent way to minimize the time spent writing a program.
Managing time properly during a project is a priority to ensure profitability. Plan the code before anything is actually written. Writing code can be similar to navigating through a thick forest with many twists and turns in the path. A logic path can be followed in a program and if a point is reached where something won’t work correctly logically then it can take a large amount of time to take out that code and find another solution. Plan out the entire project and identify the method that will be used for each section or each piece of equipment to avoid the problem of getting stuck in a logic conundrum. It will take a small amount of time at the beginning to put together a plan, but this small amount of time at the beginning can save large amounts of time later which ensures less time spent overall on the project.
Nothing kills profitability more than having to write code multiple times because the program doesn’t work as expected. Understanding the scope of work and the customer expectations in advance can ensure that when the program is written the first time all aspects of the program meet those expectations. Take the time at the beginning of a project to review the scope and all documentation, ask questions if anything is unclear, and make sure the first revision of a program is correct. Revising or rewriting large sections of the program because the intent of the program is not understood and the scope of work is not met will negatively impact the time spent on the project, which ties directly to the profitability.
If onsite support is required to load the software and test the program, be sure to use the onsite time effectively and efficiently. Discuss the site readiness prior to arriving to avoid a wasted trip because the installation is not complete. Work through any issues with equipment not functioning properly to recognize a software or hardware problem. If it is a hardware problem, identify this issue quickly and bring it to the attention of the installer to minimize the time spent onsite testing the program. Troubleshooting skills are learned and improved over time. A novice programmer will be able to improve profitability by spending less time on site as these troubleshooting skills are honed. When onsite try to finalize the functionality and close out the job. Having a clear scope of work at the beginning will make it easier to agree that the entire scope of work has been completed. Don’t let the job linger and the requirement change after the initial set of requirements have been defined. Left unconstrained, this phenomenon, or “scope creep” as it’s called, can turn a profitable job into a disaster.
Most programmers chose their profession because they enjoy programming and it is a fun and interesting way to make a living. But don’t forget that while it can be fun, programming should be treated as a business and not a hobby if profitability is desired. Focus on the project and don’t be distracted by outside influences when programming. Set aside a time when distractions are less likely and take action and take steps to reduce interruptions so you can maximize the profit and minimize the time spent finishing a project. Plan ahead and formulate a strategy in advance on the best way to handle sophisticated logic to avoid wasting time by rewriting code that doesn’t perform the desired function. Remember the key phrase to being profitable—time is money.
Here are some major points to remember:
- 1. Use reliable equipment and have distraction free work environment
2. Quote programming accurately
3. Reusable code: Write it once, use it many times.
4. Time management: Plan your code before you start to write. Time is money so use time carefully.
5. Understand scope of work: Write it right the first time and don't waste time doing it over.
6. Use time on site efficiently: make sure site is ready and installation is finished before showing up.
7. Close out the job; don't let it linger.
8. Avoid scope creep at the end of job by having clear expectations
9.Realize that while programming can be fun, it is a business and not a hobby so be professional in all aspects and treat it like a business