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

Software engineers design, develop, and install software solutions for a variety of information and technological applications. They also create documentation, flowcharts, layouts, diagrams, and charts for that software. Software engineers apply principles of engineering and computer science to not just the creation of software but also testing procedures for those products.

Throughout the lifecycle of a piece of software, software engineers direct the processes of updating, patching, and repairing code. In addition to hard skills like expertise in software development, a software engineer also needs soft skills like communication, teamwork, and critical thinking. Software engineers lead teams of developers, so the ability to communicate ideas to other members of the group — as well as customers, non-technical colleagues, and managers — is critical.

Sample job description #1

ABC Company is currently seeking a Software Engineer for a national commercial organization with offices in (City, State).

Responsibilities for the software engineer:

  • Must be able to design, develop, and maintain software for a variety of engineering applications
  • Must be able to work with analysts to understand their analytic or interface requirements
  • Maintenance/sustainment development will consist of constant routine GUI improvements, routine field requests for improvement development changes, incorporation of a larger subset of systems

Qualifications for the software engineer:

  • Bachelor’s Degree in STEM Related field (Can be substituted with 3 additional years of experience)
  • Certified Amazon Web Services Cloud Practitioner Required
  • Amazon Web Services (AWS) Associate Solutions Architect or Developer certification preferred
  • CVENT Certification a plus
  • 10+ Years of Experience in Information Technology Field
  • Experience with different technology frameworks

Sample job description #2

ABC Company is seeking a Software Engineer to join a team of IT and intelligence professionals working to provide near real-time intelligence information to users on the front line. The Engineer will maintain existing software and develop new software to customer specifications They will be integral in coordination among government customers and cross-agency partners to maintain a shared resource for collecting, processing, and disseminating forensic information. The engineer will work daily on maintaining and improving the current environment to better meet the needs of the end users.

Duties and responsibilities:

  • Aid in the design and development of software systems and applications
  • Make recommendations for design choices for upgrading legacy applications and technical standards such as platforms and coding standards to be used for implementation
  • Ensure software meets all requirements of quality, security, modifiability, extensibility, etc.
  • Web development, operations, testing, integration, and fielding of web systems
  • Development and maintenance of cloud, web, and server-based portals, databases, and applications
  • Aid in the development of data sharing agreements, technical planning, asset management, change control policies, practices and procedures, drafting/maintaining security documentation, and maintaining user guides and documentation
  • Optimization of web server configurations
  • Integration of web applications with SharePoint server farms
  • Remote and on-site user assistance


  • Requires relocation to or residence in the (City, State) area
  • Active DoD TS/SCI security clearance
  • Able to Travel
  • Minimum of an Associates of Computer Science OR Information Technology with a Bachelor Preferred
  • 1+ year in engineering experience
  • Software development experience with a preference in C# and .Net
  • Experience working with .Net framework Webforms, .NET Core, Entity Framework, Webpack
  • Excellent knowledge of software and application design and architecture
  • Familiarity with HTML/CSS, JavaScript and UI/UX design
  • Understanding of software quality assurance principles
  • Internet Information Services (IIS) 6.0 or later experience
  • Familiarity with Microsoft SQL Server
  • Knowledge and understanding of XML and JSON
  • Able to operate in a mission-critical and time-sensitive environment


  • Strong engineering skills and software fundamentals in developing on Android and/or iOS and experience with REST web services
  • Familiarity with Agile processes
  • Experience with Blazor, Vue.js, Dapper, SimpleInjector, MediatR, Xunit, NSubstitute

Sample job description #3

We are seeking a Software Engineer to build and maintain the API layer used to communicate with our Unified Customer Profile (UCP) data sources. In this role, you will apply variety of technologies to develop innovative solutions. This position is a critical element to delivering ABC Company’s promise of creating the best customer experiences in financial services.

You will be joining the API COE (Center of Excellence) team with the vision to enable faster, scalable, secure, standard, and consistent delivery of API solutions for the UCP product area. This team maintains and supports UCP APIs with automation, CI/CD and DevOps best practices.

The expertise and skills you bring

  • Bachelor’s degree in Computer Science (or closely related)
  • 6+ years of experience in application and REST API development using Java
  • Proven experience architecting and writing microservices with Java
  • Java application development experience using Dropwizard or Springboot framework
  • Strong in managing API to database connection management using different database drivers – Relational Databases (Oracle, PostgreSQL, etc.) and NoSQL databases (DynamoDB, Elastic search, Graph DB, etc.)
  • Experience with DevOps or CI/CD Pipelines using Maven, Jenkins, uDeploy, Stash, Ansible, etc.
  • Experience in managing high volume customer-facing application traffic for the API’s
  • Experience in containerizing the API using docker or Kubernetes.
  • Knowledge of how to develop highly scalable distributed systems using Open-Source technologies
  • Good in interpreting design and integration patterns to develop and deliver with high quality
  • Excellent written and oral communication skills needed for agile team
  • Ability to deal with ambiguity and work in fast paced environment
  • Solid experience in Agile methodologies (Kanban and SCRUM)
  • Ability to validate, monitor, and solve issues during development, testing, or in production.
  • Knowledge of Messaging Technologies (Kafka, Kinesis, SNS, SQS)
  • Good understanding of cloud-native architectures and services (preferably AWS)
  • Creative, Innovative, and Problem-Solving skills are a plus
  • Experience working with Python modules and libraries for data manipulations and extractions is a plus
  • Proven knowledge of AWS via Associate, Professional, or Specialty Certification(s) a big plus

Average salary and compensation

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

LocationSalary LowSalary High
Phoenix, Arizona$120,050$162,450
Los Angeles, California$135,450$183,250
Denver, Colorado$112,900$152,750
Washington, DC$137,500$186,050
Miami, Florida$112,350$152,050
Orlando, Florida$103,650$140,250
Tampa, Florida$104,650$141,650
Atlanta, Georgia$109,800$148,550
Chicago, Illinois$126,800$170,800
Boston, Massachusetts$136,500$184,650
Minneapolis-St. Paul, Minnesota$108,750$147,150
New York City, New York$143,650$194,400
Philadelphia, Pennsylvania$117,000$158,300
Dallas, Texas$113,900$154,150
Houston, Texas$113,400$153,450
Seattle, Washington$131,350$177,750
National Average$102,650$138,850

Sample interview questions

  • What programming languages are you familiar with?
  • Can you discuss a recent project you completed? What were some high and low points from that project?
  • Can you describe Agile development? What are your thoughts on this methodology?
  • What are your thoughts on declarative as opposed to imperative paradigms?
  • What metrics do you use to determine a project’s success or failure?
  • How would you go about explaining a technically complex topic to someone with no technical background?
  • How do you implement error handling?
  • Can you explain the software development cycle?
  • What’s your process for finding and testing bugs in an application you created?
  • What’s the difference between an array and a stack?
  • What are web workers in HTML5? What is their significance?
  • What’s the difference between white and black box testing?
  • How would you go about making a website faster? Describe as many different techniques as you can think of.

Need help hiring a Software Engineer?

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