What Does a Software Engineer Do?
Software engineers design, develop, implement, and support software solutions for systems and applications. They create and implement software solutions for organizations using a wide variety of programming languages, tools, and platforms by applying principles of engineering and computer science.
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 often lead teams of developers, so the ability to communicate ideas to other group members — as well as customers, non-technical colleagues, and managers — is critical.
Are you a job seeker?
of job openings
and apply online
National Average Salary
Software engineer salaries vary by experience, industry, organization size, and geography. To explore salary ranges by local market, please visit our sister site zengig.com.
The average U.S. salary for a Software Engineer is:
Software Engineer Job Descriptions
ABC Company is currently seeking a Software Engineer for a national commercial organization with offices in (City, State).
- 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
- 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
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
- 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
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.
- 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
Sample Interview Questions
- Describe your experience designing, developing, and maintaining software systems and applications.
- Which programming languages do you consider to be strengths, and where have you used them?
- Can you discuss a recent project you completed? What were some high and low points of 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 explain 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.
- When managing multiple software development tasks and projects, how do you ensure that software objectives are met within budget and time constraints?
- How do you keep up with new technologies and best practices in software development?