Software Developer How to Hire, Salary Data, and Job Descriptions

Software developers are often needed throughout the lifecycle of a piece of software, updating, patching, and repairing code, whether the task is to develop an app or an underlying operating system. Some software developers work with specific platforms, developing apps for systems like Java, JavaScript, C#, and Python. In some cases, software developers write code themselves, though they also can work closely with computer programmers who write the actual software code based on the developer’s instructions.

In addition to hard skills like expertise in various programming languages, a software developer also needs soft skills like communication, teamwork, and critical thinking. Many software developers work in teams, so the ability to communicate ideas to other members of the team — as well as to customers, non-technical colleagues, and managers — is critical. Since a software developer is also often responsible for repairing issues with software, they also should be able to think through the underlying causes of those problems as well as the solutions for them.

Sample job description #1

Responsibilities:

  • Reviews, analyzes, and evaluates application systems while consulting with senior IS staff to identify current operating procedures and to clarify program objectives
  • Presents findings and recommendations in written reports and oral presentations
  • Writes documentation to describe user needs, program development, logic, coding, and corrections, as well as installation and operating procedures
  • Creates and modifies application systems as directed, including coding, testing, and debugging
  • Creates and modifies reports as directed with minimal supervision
  • Participates and contributes as a team member on projects
  • Provides a satisfactory level of service within cost and time constraints; maintains and meets scheduled deadline dates
  • Provides Technical Support to the Information Services Operations team as required during and after normal business hours.
  • In rotation with others as assigned, provides for after-hours/on-call support of the Information Services Operations department.
  • Must be able to work onsite as required
  • Assists with any tasks and projects as required.

Minimum requirements:

  • Bachelor’s degree in a related field or demonstrated equivalent experience required.
  • Must have working knowledge of commonly used concepts, practices, and procedures within the IS industry
  • Must have working knowledge of the Software Development Life Cycle (SDLC)
  • Must have knowledge of programming fundamentals
  • Must have knowledge of structured and object-oriented programming
  • Familiarity writing SQL queries preferred.
  • Familiarity working with relational databases and client-server concepts preferred
  • Must be able to work under minimal supervision
  • Must be flexible to handle and adapt to sudden changes in procedures and priorities
  • Must be well organized and able to handle multiple tasks simultaneously
  • Excellent communication skills in English required, both verbal and written
  • Occasional standing, walking, bending, and stooping required
  • Must be able to moderately lift or move up to 10 pounds and occasionally lift or move up to 25 pounds
  • Must be able to occasionally push, pull, and climb a ladder
  • Should possess a strong commitment to providing excellent service to ABC Company’s customers

Sample job description #2

ABC Company is looking for an Engineering Software Developer for our (City, State) office. This person will be part of a team developing proprietary software tools used by ABC Company engineers to analyze and design some of the most challenging structures in the energy infrastructure industry. Depending on the project, daily activities — under the guidance of a lead engineer or developer — may include developing and analyzing requirements, researching, and implementing solutions, as well as validating and documenting the implemented software tools. The role reports to the Department Manager and routinely interacts with other Plate Structures Engineers, Plate Structures Designers, Project Engineers, and Managers.

Key tasks and responsibilities:

  • Design, research and develop new applications and major enhancements
  • Work in all phases of the full life cycle of requirements, analysis, design, development, testing, and documentation
  • Collaborate with managers and engineers to understand and document software requirements and gather user feedback
  • Research and apply new development technologies, languages, and platforms
  • Coordinate with other roles and functions on development team
  • Forecast how long it will take to do a task – commit to definitive deadlines
  • Track progress against forecasts
  • Effectively use version control repositories
  • Effectively use project team or department collaboration and productivity apps and tools

Essential qualifications and education:

  • 2+ years of relevant experience
  • Bachelor’s degree in Civil Engineering, Structural Engineering, or related field from an accredited school is required
  • Proficient verbal and written communication skills
  • Experience with Wolfram language preferred

Sample job description #3

The Software Architect & Developer will lead the software engineering team in architecting and developing the system software for ABC Company’s Optical Communications Link products. The Software Architect and Developer will lead and define system software architecture, develop and test of the various software modules, work with other engineering discipline leads to ensure system integration, and customer and product requirements are being satisfied, while aligning the design to the overall product line technology road map. The Software Architect and Developer will work alongside other engineering discipline team members and the Chief Systems Engineer to ensure quality, accurate and timely designs are completed. The Software Architect will be highly knowledgeable of software architecting and development processes, tools, and standards to develop optical wireless communications (OWC) products for terrestrial, airborne and space applications. In addition, the role will work with the Program Management team for execution on programs, supporting reporting needs, and status for the design work performed.

Duties and responsibilities:

  • Create software architecture and designs that consider both current and possible future system and product requirements
  • Collaborate with other professionals to determine functional and non-functional requirements for new software or applications
  • Use tools and methodologies to create representations for functions and interfaces of desired product
  • Develop high-level product specifications with attention to system integration and feasibility
  • Define all aspects of development from appropriate technology and workflow to coding standards
  • Establish the proper work-flow within a SAFe Agile Development environment
  • Oversee the Design, code, test, and debugging of system software elements and support software tools
  • Write automated unit tests using TDD and BDD techniques
  • Mentor experienced and inexperienced developers
  • Peer review other team members’ work
  • Diagnose software issues and propose solutions that achieve the proper balance between technically-sound yet quick to implement
  • Be motivated by problem solving and development of the range of solutions, over the system development lifecycle
  • Participating and representing the company in various customer meetings and support programmatic and technical reviews (e.g., SRR, PDR, CDR, etc.) to provide technical recommendations and risk assessments
  • Repeated use and application of technical standards, principles, theories, concepts, and techniques
  • Supporting the development and managing the technical risk registers and developing any required mitigation plans for all key product technical risks
  • Facilitate capture of engineering lessons learned and ensure processes and design guidance tailored from industry best practices and key program learning
  • Supporting the configuration management and control of product design BOMs and relevant technical data
  • Actively engage in the development and continuous improvement of engineering processes

Required experience & skills:

  • Proficiency in designing system software from the OS level to application level
  • Mastery of multiple high-level languages such as C++, Python
  • Proficiency with FreeRTOS OS
  • Proficiency within an Agile/SCRUM process
  • Knowledge of testable application design principles, utilizing Karma, NUnit, or similar
  • Strong understanding of SQL and relational databases, such as Postgres or MySQL
  • Proficiency with developing software for I2C, SPI, RS485, SpaceWire and/or CANBus
  • Well-honed skills in source control management using Git or similar
  • Proven success in mentoring experienced and inexperienced developers
  • Proficiency in communicating to various audiences and able to adjust message to a particular audience
  • Ability to be a technical leader by influencing and educating others

Desired experience & skills:

  • Proficiency in HTML5 or other web technologies
  • Understanding of embedded FPGA programming and development
  • Strong Proficiency in developing in Windows or Linux environments
  • Effective presentation skills, both content creation and presentation of materials.
  • Demonstrated willingness to be flexible and adaptable to changing priorities and make objective, defendable work products with the information at hand, in a timely manner
  • Track record of independent work and self-motivation
  • Experience with ISO 9001, DoD, or equivalent work environment

Qualifications:

  • At least 8 years of relevant experience in software development
  • At least 2 years of proven software architecting

Education:

  • B.S. in Computer Science, or related field
  • M.S. preferred

Average salary and compensation

The average salary for a software developer is $118,000 in the United States. Position salary will vary based on experience, education, company size, industry, and market.

LocationSalary LowSalary High
Phoenix, Arizona$117,350$158,750
Los Angeles, California$132,400$179,100
Denver, Colorado$110,350$149,250
Washington, DC$134,400$141,850
Miami, Florida$109,850$148,600
Orlando, Florida$101,300$137,050
Tampa, Florida$102,300$138,400
Atlanta, Georgia$107,300$145,200
Chicago, Illinois$123,350$166,900
Boston, Massachusetts$133,400$180,500
Minneapolis-St. Paul, Minnesota$106,300$143,850
New York City, New York$140,400$190,000
Philadelphia, Pennsylvania$114,350$154,700
Dallas, Texas$111,350$150,650
Houston, Texas$110,350$149,250
Seattle, Washington$128,400$173,700
National Average$100,300$135,700

Sample interview questions

  • Tell me about yourself.
  • What sparked your interest in working as a software developer?
  • Why do you think you would be a good fit for our company?
  • What do you like most about developing software?
  • What area of programming has been the most challenging for you?
  • What resources do you use when encountering a problem with your code?
  • What training and certifications have you received?
  • How do you manage your time when working on multiple projects at once?
  • How do you communicate with coworkers who do not have the technical understanding you have?
  • How has your previous position prepared you for this job?
  • How do you stay up to date with the most recent technological advances in the field?
  • What programming languages are you familiar with? 
  • How do you determine a project’s success?

Need help hiring a Software Developer?

We match top professionals with great employers across the country. Your next career move or star employee is just around the corner. Review our career content and advice, browse our latest job openings, or email us your resume. We look forward to connecting with you soon!

Browse A-Z Job Descriptions