Home arrow What is Software Development?
What is Software Development? PDF Print E-mail
Written by Alex T. Silverstein   
Wednesday, 05 December 2007

By Alex T. Silverstein

President, Unified Digital, LLC

518-424-3433

This e-mail address is being protected from spam bots, you need JavaScript enabled to view it

I'm often asked what it is that my software company, Unified Digital LLC, specializes in. I often answer "software development consulting", or, "software outsourcing," or even "software engineering." These succinct responses have a touch of technological savvy about them. However, they are a touch vague and might leave the curious listener unsatisfied – especially one who wants to know more about this exciting profession and what excellence in it means. This article illustrates how software firms operate and deliver real business value to clients.

Software development is a service profession whose goal is to translate business needs into working computer applications. Such business needs might be expressed as: "I need this program to give me a snapshot of our company's finances and distribute it over the Internet to our partners." Or, "This program should tell us how many units of product we have left in stock and where our currently shipped orders are in transit."

Software development delivers solutions to these and many other business needs. Typically, the process to arrive at such solutions comes about in phases which are part of a larger cycle. The Unified Process (an industry standard from which our company takes its name) defines these phases as:

  • Inception, which entails developing the product vision, scope (what the application's features will be, generally), the risks and strategies for their mitigation, and management plan, including the schedule, task list, and resource allocations
  • Elaboration, discovering and refining the business requirements; also building the baseline software system (i.e., to prove out the concept)
  • Construction, programming (coding) the software according to the business specifications
  • Transition, handing-off the completed software to  quality assurance and user acceptance teams for error-checking and approval

Software development is never an isolated, one-time event; rather, it involves providing ongoing solutions to clients. The programs we build are usually either being revised (with features being added or removed), upgraded to work on additional platforms (new operating systems or additional devices), or undergoing maintenance.

For this reason, the relationship between a software development firm and its clients is usually extensive – anywhere from six months to decades in duration. The quality of this relationship is, therefore, of paramount importance.

 At our firm, although we do pride ourselves on producing superior quality software, we always aim to achieve an even higher standard of human relations.

The fact is, when translating complex business rules into software, the deeper one digs, the more questions need to be answered, and thus the more human contact needs to be made. This truth is also reflected in the axiom that so-so technology may still produce working software, but a badly managed client relationship usually leads to that project's demise.

When dealing with a software development firm, keep in mind that a variety of workers are usually required to complete the product. Some personnel – myself included – often wear multiple hats. They include:

  • Project management professionals, who manage schedule, resources, cost, and scope (the  functions that the software will perform)
  • Programmers (also known as developers or architects), who write code in one or more programming languages and fix the bugs (errors) that arise
  • System engineers, who build and maintain the computer hardware (servers and networks) upon which the software runs
  • Designers, who create graphics and lay out user-interfaces (the part of the program displayed on-screen)
  • Database administrators, who manage the structure and flow of data the software uses
  • Quality assurance (QA) specialists, who test the software and ensure it meets specifications
  • Subject matter experts, who share their expertise related to the specific business area

Sometimes, it is desirable for a software development firm to fill temporary gaps in expertise by hiring specialized consultants (usually for a limited time at higher cost). These folks are often a life-saver when it comes to solving very specific problems in a timely fashion, and we employ them as needed.

Additionally, when costs are primary and skilled labor is scarce, the process of outsourcing – subcontracting entire teams of programmers, either locally or overseas – is warranted.  This is most effectively applied when building medium to large-scale applications. Managing an outsourced team usually requires additional oversight (for adherence to standards) and, when using offshore labor, cultural intelligence (another entirely human skill).

Clearly, software development is a complex business requiring both technical and human skills. Hopefully, this brief article has given you a bit more insight into what to look for when hiring a software development firm.

Last Updated ( Monday, 21 January 2008 )
 

AddThis