Job Opportunities and Skill sets in Software Engineering
What does a Software Engineer Do?
Software engineering:
-
Engineering
-
Mathematics
-
Computing
Types of Software:
-
Desktop and web applications
-
Mobile Applications
-
Games
-
Operating Systems
-
Network controllers
Types of technologies:
-
Programming languages
-
Development environments
-
Frameworks
-
Libs, databases, and servers
Categories of software engineer:
-
Back-end engineers or systems developers
-
Front-end engineers or application developers
Software engineering teams:
-
Off-the-shelf software
-
Bespoke software
-
Internal software
And within the teams they might work on:
-
Data integration
-
Business logic
-
User interfaces
Software engineering tasks:
-
Designing new software systems
-
Writing and testing code
-
Evaluating and testing software
-
Optimizing software programs
-
Maintaining and updating software systems
-
Documenting code
-
Presenting new systems to users and customers
-
Integrating and deploying software
Responsibilities:
Skills Required in Software Engineering
What are hard skills?
Commonly required hard skills in software engineering:
- Programming languages
- Version control
- Cloud computing
- Testing and debugging
- Monitoring
- Troubleshooting
- Agile development
- Database architecture
What are soft skills?
- Hard to define, quantify, or certify
- Easily transferable
Hard skills for software engineers
Analysis and design:
-
Analyze users’ needs
-
Design solutions
Development:
-
Computer programming
-
Coding
-
Languages:
- Java
- Python
- C#
- Ruby
-
Frameworks
Test:
-
Testing
- Meets functional specification
- Easy to use
-
Debugging
Deployment:
-
Shell scripting
-
Containers
-
CI/CD
-
Monitoring
-
Troubleshooting
Soft Skills for Software Engineers
Teamwork:
-
Different teams
- Project-based
- Role-based
-
Squads
-
Pair programming
-
Take advantage of strengths
-
Learn from each other
Communication:
-
Peers
-
Managers
-
Clients
-
Users
Time management:
-
Time-sensitive projects
- Meet deadlines
- Avoid delays
-
Teams across time-zones
Problem-solving:
-
Design an appropriate solution
-
Write an effective code
-
Locate and resolve bugs
-
Manage issues
Adaptability:
-
Client changes
-
Management request
-
User needs
Open to feedback:
-
Peer review
-
Mentor
-
Stakeholders
Careers in Software Engineering
Job Outlook for Software Engineers
Employment options:
- Employed roles:
- Apprenticeship/internship
- Part-time
- Full-time
- Self-employed/independent:
- Contracting/consulting
- Freelancing
- Volunteer on open source projects
Career Paths in Software Engineering
Technical
-
Coding and problem-solving
Management
-
Leadership and soft skills
Career progression:
- Junior or Associate Software Engineer
- Develop small chunks of software
- Supported by a team leader or mentor
- Gain new skills and experience
- Software Engineer
- Break tasks down into sub-tasks
- Learn new languages
- Understand the software development lifecycles
- Mentor junior software engineers
- Senior Software Engineer
- Work across a project
- Mentor software engineers and review code
- Solve problems efficiently
- Staff Software Engineer
- Part of the technical team
- Develop, maintain, and extend software
- Ensure software meets expectations
- Ensure software uses resources efficiently
- Technical Lead
- Manage a team of developers and engineers
- Responsible for development lifecycle
- Report to stakeholders
- Principal Engineer/Technical Architect
- Responsible for architecture and design
- Create processes and procedures
- Engineering Manager
- Support team
- Encourage career progression
- Director of Engineering
- Strategic and technical role
- Determine project priority
- Identify hiring needs
- Define goals
- Define new projects
- Specify requirements
- Chief Technology Officer (CTO)
- Oversee research and development
- Monitor corporate technology
- Evaluate new technology and products
Other career directions
- Prefer interacting with clients:
- Technical sales
- Customer support
- Prefer working with numbers and data:
- Data engineering
- Data science
- Database administration
- Database development
- Prefer finding and fixing bugs:
- Software testing
Software Engineering Job Titles
Job Titles:
- Front-end engineer
- Back-end engineer
- Full-stack engineer
- DevOps engineer
- Software Quality Assurance Engineer
- Software Integration Engineer
- Software Security Engineer
- Mobile App Developer
- Games Developer
Code of Ethics
Origins of the code of ethics:
- Developed by the Joint Task Force on Software Engineering Ethics and Professional Practices
- Institute of Electrical and Electronics Engineers Computer Society (IEEE-CS)
- Association for Computing Machinery (ACM)
- Championed the need to hold software engineers accountable
About the code of ethics:
- Pertains to the analysis, design, development, testing, and maintenance software cycle
- Dedicated to serving the public interest
The 8 principles
- Public
- Client/Employer
- Product
- Judgement
- Management
- Profession
- Colleagues
- Self
Supplemental guide to behavior
- Use in conjunction with conscientious decision-making and common sense
- Knowing where to apply principles is at the discretion and wisdom of the individual