Firstly, why should someone consider a career in software engineering ?
Software engineering can be referred to as the ‘soft side’ of engineering in as much as there is no specific physical output (such as a ship, a refinery, a machine, a physical product you can see, touch or smell) as a result of the investment. However, in today’s world we all recognise the importance that software makes in making our increasingly complex and highly technical world ‘work’. Without electronic computing where would we be today? In 1955 there were only 263 computers in the whole world. Without software engineers the technical advances made in the latter half of the 20th century would not have allowed man to step on the moon, build and drive the complex machinery used to control our modern cities, ‘just in time’ manufacturing and retail multinational enterprises.
What do we mean by the term ‘software engineering’ ?
Software engineering (SE) is the application of a systematic, disciplined, quantifiable approach to the design, development, operation, and maintenance of software, and the study of these approaches; that is, the application of engineering to software. In layman's terms, it is the act of using insights to conceive, model and scale a solution to a problem. Software engineers are responsible for the complete life cycle of a new/modified software product, from research and design to implementation, training and support. The ‘engineering’ aspect implies the use of a rigorous and disciplined approach being used which is underpinned typically by a Software Development Life Cycle (SDLC) where tools can be used to help guide the disciplined approach where the use of quality gates are used to verify the accuracy of the solution at each point in the development life cycle which takes the solution from the initial concept requirements to the completed and delivered production solution.
Software engineers are computer specialists who research, design, analyze, evaluate, develop, test and maintain software and various information systems. Their job can also include training clients and their employees and providing support. The term software engineer is sometimes used simultaneously with software developer or programmer, which refers to an occupation that does not necessarily require academic training and professional certification, and does not imply legal liability.
Software engineers typically investigate software applications, write new software, and provide operating manuals. They can also produce specifications and train future users. When working with existing systems, they usually define problems and then develop and propose IT solutions to improve their efficiency. Software engineers' work also frequently entails systems analysis for the purpose of recommending purchases.
Software engineers usually specialise either in Applications Software Engineering or Systems Software Engineering. Applications software engineers create and deploy applications that perform certain tasks for users, and systems software engineers are responsible for the construction of an entire computer system.
What are the skills needed by software engineers ?
Programming skills, analytical thinking, problem solving, and an excellent knowledge of software, theoretical principles of computing, and computer systems are key to becoming a software engineer. Engineers must have a healthy interest in always continuing their education and training, studying new development tools and IT equipment, and keeping up with new trends and technologies. Since their work often includes providing documentation and creating proposals, they must know how to use presentation tools and create diagrams, models, flowcharts and layouts.
Good communication skills are essential for contractors because their clients usually have a limited knowledge of computer systems (‘translation’ from ‘business/user terminology’ to terminology understood by a software developer). Software engineers must also be exceptionally good listeners, as their work always requires them to address the needs of users and businesses that hire them. Understanding the commercial aspects of software can also be very beneficial for career advancement.
Management and business skills, as well as people skills, are an asset, especially in a recession market, as they can make a software engineer's job more difficult to offshore.
Typical responsibilities for a software engineer may include (but are not limited to):
- investigating current applications
- liaising with users
- producing specifications
- costing new or modified systems
- agreeing proposals
- writing new software and operating manuals
- testing the product to ensure that it operates satisfactorily
- training users
- handling support and feedback
There can be some pressure to meet deadlines, when extra hours may be required. Very good salaries can be commanded by those with relevant experience.
What Qualifications and Training is required ?
Software engineers typically will have degrees either in computer or software engineering, or in information technology, computer science, and information systems. They can also enter the field with degrees in electrical engineering, science, mathematics, or technology. Sometimes they start out as computer programmers and work toward being promoted to software engineering roles. Graduates who do not have a degree in a related field can opt for a postgraduate course in IT to improve their odds of getting hired. Few companies are willing to take a chance on a self-taught software engineer.
In the UK, software engineers are licensed by the British Computer Society as Chartered IT Professionals and they can go on to become Chartered Engineers (CEng). They may also be licensed by the Institution of Engineering and Technology to qualify for the status. Certification programs are mostly focused on specific technologies and types of software, and they are managed by companies that produce and sell the software, as Apple, Oracle, Microsoft and IBM do. Engineers can also obtain certifications for specific programming languages. Software engineering is a fast paced environment where technologies, tools and techniques continue to evolve constantly, so thought must be given to maintaining and upgrading of skills, knowledge and experience throughout a career.
Most employers prefer graduates with a degree in a relevant subject such as computation, software engineering, physics, mathematics or electronics. For graduates without computing experience or an appropriate qualification, a postgraduate IT conversion course can be useful.
Relevant programming knowledge is normally required, and many employers expect candidates to meet high standards in programming aptitude tests. Programming experience gained during placements and vacation work can also be of benefit.
What additional skills would be beneficial for software engineers ?
- team working skills
- numerical and analytical skills
- ability to work to another’s design
- commercial awareness
- good communication skills
- a thorough approach