A software developer is a person concerned with facets of the software development process. In short, developers "make" software for the world to use. Their work includes researching, designing, implementing, and testing software. A software developer may take part in design, computer programming, or software project management. 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 programmers but the description also encompasses freelance software developers.
In the US, a software developer is classified into one of three titles (all under the 15-0000 Computer and Mathematical Occupations Major Group):
- 15-1131 Computer Programmers
- 15-1132 Software Developers, Applications
- 15-1133 Software Developers, Systems Software
A person who develops stand-alone software (that is more than just a simple program) and gets involved with all phases of the development (design and code) is a software developer. Some of the notable software people include Peter Norton (developer of Norton Utilities), Richard Garriott (Ultima-series creator), and Philippe Kahn (Borland key founder), all of whom started as entrepreneurial individual or small-team software developers.
Other names which are often used in the same close context are programmer, software analyst, and software engineer. According to developer Eric Sink, the differences between system design, software development and programming are more apparent. Already in the current market place there can be found a segregation between programmers and developers,[dubious ] being that one who implements is not the same as the one who designs the class structure or hierarchy. Even more so that developers become systems architects, 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, including business case or gap analysis
- Requirements analysis
- Development and refinement of throw-away simulations or prototypes to confirm requirements
- Feasibility and cost–benefit analysis, including the choice of application architecture and framework, leading to the budget 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 (e.g. developing demonstrations and/or samples) and competitive analysis for subsequent product build/release cycles
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.
Industry and organizations
A great variety of software companies and programmers in the world comprise a software industry. Software can be quite a profitable industry: Bill Gates, the founder of Microsoft was the richest person in the world in 2009 largely by selling the Microsoft Windows and Microsoft Office software products. The same goes for Larry Ellison, largely through his Oracle database software. Over time, the software industry has become increasingly specialized.
Non-profit software organizations include the Free Software Foundation, GNU Project and Mozilla Foundation. Software standard organizations like the W3C, IETF develop software standards so that most software can interoperate through standards such as XML, HTML, HTTP or FTP.
The word "software" was coined as a prank as early as 1953, but did not appear in print until the 1960s. Before this time, computers were programmed either by customers, or the few commercial computer vendors of the time, such as UNIVAC and IBM. The first company founded to provide software products and services was Computer Usage Company in 1955.
The software industry expanded in the early 1960s, almost immediately after computers were first sold in mass-produced quantities. Universities, government, and business customers created a demand for software. Many of these programs were written in-house by full-time staff programmers. Some were distributed freely between users of a particular machine for no charge. Others were done on a commercial basis, and other firms such as Computer Sciences Corporation (founded in 1959) started to grow. The computer/hardware makers started bundling operating systems, systems software and programming environments with their machines.
When Digital Equipment Corporation (DEC) brought a relatively low-priced microcomputer to market, it brought computing within the reach of many more companies and universities worldwide, and it spawned great innovation in terms of new, powerful programming languages and methodologies. New software was built for microcomputers, so other manufacturers including IBM, followed DEC's example quickly, resulting in the IBM AS/400 amongst others.
The industry expanded greatly with the rise of the personal computer ("PC") in the mid-1970s, which brought computing to the desktop of the office worker. In the following years, it also created a growing market for games, applications, and utilities. DOS, Microsoft's first operating system product, was the dominant operating system at the time.In the early years of the 21st century, another successful business model has arisen for hosted software, called software-as-a-service, or SaaS; this was at least the third time this model had been attempted. From the point of view of producers of some proprietary software, SaaS reduces the concerns about unauthorized copying, since it can only be accessed through the Web, and by definition no client software is loaded onto the end user's PC. By 2014 the role of cloud developer had been defined; in this context, one definition of a "developer" in general was published:
Developers make software for the world to use. The job of a developer is to crank out code -- fresh code for new products, code fixes for maintenance, code for business logic, and code for supporting libraries.
- Hardiman, Nick (24 July 2014). "A portrait of the modern cloud developer". TechRepublic.
- "O*NET Code Connector - Software Developers, Systems Software - 15-1133.00". Onetcodeconnector.org. Retrieved 2013-01-13.
- "15-0000 Computer and Mathematical Occupations (Major Group)". US Bureau of Labor Statistics.
- "15-1131 Computer Programmers". US Bureau of Labor Statistics.
- "15-1132 Software Developers, Applications". US Bureau of Labor Statistics.
- "15-1133 Software Developers, Systems Software". US Bureau of Labor Statistics.
- Eric Sink. "Small ISVs: You need Developers, not Programmers". sourcegear. Retrieved 2008-06-06.
A programmer is someone who does nothing but code new features and (if you're lucky) fix bugs. They don't write specs. They don't write automated test cases. They don't help keep the automated build system up to date. They don't help customers work out tough problems. They don't help write documentation. They don't help with testing. They don't even read code. All they do is write new code.
- Paul Niquette (1995). "Softword: Provenance for the Word 'Software'". adapted from Sophisticated: The Magazine ISBN 1-58922-233-4
- Elmer C. Kubie (Summer 1994). "Recollections of the first software company". Annals of the History of Computing (IEEE Computer Society) 16 (2): 65–71. doi:10.1109/85.279238.
- Rebello, Kathy; Schwartz, Evan I.; Verity, John W.; Lewyn, Mark; Levine, Jonathan (28 February 1993). "Is Microsoft Too Powerful?". Businessweek Archives. Bloomberg Businessweek. Retrieved 26 September 2014.
Lua error in Module:Authority_control at line 346: attempt to index field 'wikibase' (a nil value).