A software developer is a person concerned with facets of the software development process, including the research, design, programming, and testing of computer software. Other job titles which are often used with similar meanings 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, 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 software architects or 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)
In a large company, there may be employees whose sole responsibility consists of only one of the phases above. In smaller development environments, a few people or even a single individual might handle the complete process.
The word "software" was first used 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, system software and programming environments with their machines.
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:
Qualifications and Skills
The key skills required are:
- Debugging & Problem solving approach
- Excellent knowledge and understanding of tools and technology
- Unmatched interpersonal skills
- Ability to thrive under pressure for long work hours
- Excellent communication skills
- Pressure handling skills
Roles & Responsibilities
- Develop software using tried and tested techniques:
- Agile Software Development
- Crystal Methods Methodology
- Dynamic Systems Development Model Methodology
- Extreme Programming (XP) Methodology
- Feature Driven Development Methodology
- Joint Application Development (JAD) Methodology
- Lean Development (LD) Methodology
- Rapid Application Development (RAD) Methodology
- Scrum Methodology
- Spiral Methodology
- Requirements analysis
- Risk analysis
- Architectural design
- Detailed design and planning
- Adhere to coding standards and coding guidelines
- Collective code ownership
- Generation of documentation for purpose of project auditing
- Contribute to the continuous improvement of software development strategies and productivity
- Attention to detail is essential and all tasks must be carried out to the highest standard.
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.