Software developer
Encyclopedia
A software developer is a person concerned with facets of the software development process
Software development process
A software development process, also known as a software development life cycle , is a structure imposed on the development of a software product. Similar terms include software life cycle and software process. It is often considered a subset of systems development life cycle...

. Their work includes researching, designing, developing, and testing software. A software developer may take part in design, computer programming
Computer programming
Computer programming is the process of designing, writing, testing, debugging, and maintaining the source code of computer programs. This source code is written in one or more programming languages. The purpose of programming is to create a program that performs specific operations or exhibits a...

, or software
Software product management
Software product management is the process of managing software that is built and implemented as a product, taking into account life-cycle considerations and generally with a wide audience. It is the discipline and business process which governs a product from its inception to the market or...

 project management
Project manager
A project manager is a professional in the field of project management. Project managers can have the responsibility of the planning, execution, and closing of any project, typically relating to construction industry, architecture, computer networking, telecommunications or software...

. They may contribute to the overview of the project on the application level rather than component-level or individual programming tasks. Software developers are often still guided by lead programmer
Lead programmer
A lead programmer is a software engineer in charge of one or more software projects. Alternative titles include Development Lead, Technical Lead, Senior Software Engineer, Software Design Engineer Lead , Software Manager, or Senior Applications Developer...

s but the description also encompasses freelance
Freelancer
A freelancer, freelance worker, or freelance is somebody who is self-employed and is not committed to a particular employer long term. These workers are often represented by a company or an agency that resells their labor and that of others to its clients with or without project management and...

 software developers.

In the US, a software developer is classified into one of 3 titles (all under the 15-0000 Computer and Mathematical Occupations Major Group):
  1. 15-1131 Computer Programmers
  2. 15-1132 Software Developers, Applications
  3. 15-1133 Software Developers, Systems Software


A person who develops stand-alone software (that is more than just a simple program) and got involved with all phases of the development (design and code) is a software developer. Some of the notable software people include Peter Norton
Peter Norton
Peter Norton is an American programmer, software publisher, author, and philanthropist. He is best known for the computer programs and books that bear his name. Norton sold his PC-Software business to Symantec Corporation in 1990....

 (developer of Norton Utilities), Richard Garriott
Richard Garriott
Richard Allen Garriott is a British-American video game developer and entrepreneur.He is also known as his alter egos Lord British in Ultima and General British in Tabula Rasa...

 (Ultima-series creator), and Philippe Kahn
Philippe Kahn
Philippe Kahn is a technology innovator and entrepreneur, who is credited with creating the first camera phone solution sharing pictures instantly on public networks. Kahn's first publicly shared picture is unique in that no other teams making the claim have any pictures. Kahn shot the first camera...

 (Borland
Borland
Borland Software Corporation is a software company first headquartered in Scotts Valley, California, Cupertino, California and finally Austin, Texas. It is now a Micro Focus subsidiary. It was founded in 1983 by Niels Jensen, Ole Henriksen, Mogens Glad and Philippe Kahn.-The 1980s:...

 key founder), all of whom started as entrepreneurial individual or small-team software developers before becoming rich and famous.

Other names which are often used in the same close context are programmer
Programmer
A programmer, computer programmer or coder is someone who writes computer software. The term computer programmer can refer to a specialist in one area of computer programming or to a generalist who writes code for many kinds of software. One who practices or professes a formal approach to...

, software analyst
Software analyst
In a software development team, a software analyst is the person who studies the software application domain and prepares the software requirements and specification document. Software analyst is the same between the software users and the software developers. It conveys the demands of the...

, and software engineer
Software engineer
A software engineer is an engineer who applies the principles of software engineering to the design, development, testing, and evaluation of the software and systems that make computers or anything containing software, such as computer chips, work.- Overview :...

.

According to developer Eric Sink, the differences between system design, software development
Software development
Software development is the development of a software product...

 and programming are more apparent. Already in the current market place there can be found a segregation between programmer
Programmer
A programmer, computer programmer or coder is someone who writes computer software. The term computer programmer can refer to a specialist in one area of computer programming or to a generalist who writes code for many kinds of software. One who practices or professes a formal approach to...

s and developers, being that one who actually implements is not the same as the one who designs the class
Class (computer science)
In object-oriented programming, a class is a construct that is used as a blueprint to create instances of itself – referred to as class instances, class objects, instance objects or simply objects. A class defines constituent members which enable these class instances to have state and behavior...

 structure or hierarchy. Even more so that developers become systems architect
Systems architect
The systems architect establishes the basic structure of the system, defining the essential core design features and elements that provide the framework for all that follows, and are the hardest to change later....

s, those who design the multi-leveled architecture or component interactions of a large software system. (see also Debate over who is a software engineer)

Aspects of developer's job may include:
  • Software design
  • Actual core implementation (programming which is often the most important portion of software development)
  • Other required implementations (e.g. installation, configuration, customization, integration, data migration)
  • Participation in software product definition
    Software product management
    Software product management is the process of managing software that is built and implemented as a product, taking into account life-cycle considerations and generally with a wide audience. It is the discipline and business process which governs a product from its inception to the market or...

    , including Business case
    Business case
    A business case captures the reasoning for initiating a project or task. It is often presented in a well-structured written document, but may also sometimes come in the form of a short verbal argument or presentation. The logic of the business case is that, whenever resources such as money or...

     or Gap analysis
  • Specification
  • Requirements analysis
    Requirements analysis
    Requirements analysis in systems engineering and software engineering, encompasses those tasks that go into determining the needs or conditions to meet for a new or altered product, taking account of the possibly conflicting requirements of the various stakeholders, such as beneficiaries or users...

  • Development and refinement of throw-away simulations or prototypes
    Software prototyping
    *Software prototyping, refers to the activity of creating prototypes of software applications, i.e., incomplete versions of the software program being developed...

     to confirm requirements
  • Feasibility and Cost-benefit analysis
    Cost-benefit analysis
    Cost–benefit analysis , sometimes called benefit–cost analysis , is a systematic process for calculating and comparing benefits and costs of a project for two purposes: to determine if it is a sound investment , to see how it compares with alternate projects...

    , including the choice of application architecture
    Application Architecture
    Applications architecture is one of several architecture domains that form the pillars of an enterprise architecture or solution architecture. Note that the term "application architecture" is commonly used for the internal structure of an application, for its software modularisation.Applications...

     and framework
    Application framework
    In computer programming, an application framework consists of a software framework used by software developers to implement the standard structure of an application for a specific development environment ....

    , leading to the budget
    Budget
    A budget is a financial plan and a list of all planned expenses and revenues. It is a plan for saving, borrowing and spending. A budget is an important concept in microeconomics, which uses a budget line to illustrate the trade-offs between two or more goods...

     and schedule for the project
  • Authoring of documentation needed by users and implementation partners etc.
  • Testing, including defining/supporting acceptance testing and gathering feedback from pre-release testers
  • Participation in software release and post-release activities, including support for product launch evangelism
    Technology evangelist
    A technical or technology evangelist is a person who attempts to build a critical mass of support for a given technology in order to establish it as a technical standard in a market that is subject to network effects...

     (e.g. developing demonstrations and/or samples) and competitive analysis for subsequent product build/release cycles
  • Maintenance


In a large company, there may be employees whose sole responsibility may consist of only one of the phases above. In smaller development environments, a few, or even a single individual might handle the complete process.

Separation of concerns

In more mature engineering disciplines such as mechanical
Mechanical engineering
Mechanical engineering is a discipline of engineering that applies the principles of physics and materials science for analysis, design, manufacturing, and maintenance of mechanical systems. It is the branch of engineering that involves the production and usage of heat and mechanical power for the...

, civil
Civil engineering
Civil engineering is a professional engineering discipline that deals with the design, construction, and maintenance of the physical and naturally built environment, including works like roads, bridges, canals, dams, and buildings...

 and electrical engineering
Electrical engineering
Electrical engineering is a field of engineering that generally deals with the study and application of electricity, electronics and electromagnetism. The field first became an identifiable occupation in the late nineteenth century after commercialization of the electric telegraph and electrical...

, the designers are separate from the implementers. That is, the engineers who generate design documents are not the same individuals who actually build things (such as mechanical parts, circuits, or roads, for instance). In software engineering, it is more common to have the architecture, design, implementation, and test functions performed by a single individual. In particular, the design and implementation of source code
Source code
In computer science, source code is text written using the format and syntax of the programming language that it is being written in. Such a language is specially designed to facilitate the work of computer programmers, who specify the actions to be performed by a computer mostly by writing source...

 is commonly integrated.

This resembles the early phases of industrialization
Industrial Revolution
The Industrial Revolution was a period from the 18th to the 19th century where major changes in agriculture, manufacturing, mining, transportation, and technology had a profound effect on the social, economic and cultural conditions of the times...

 in which individuals would both design and build things. More mature organizations have separate test groups, but the architecture, design, implementation, and unit test
Unit test
In computer programming, unit testing is a method by which individual units of source code are tested to determine if they are fit for use.A unit is the smallest testable part of an application. In procedural programming a unit could be an entire module but is more commonly an individual function...

functions are often performed by the same highly trained individuals.
The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK