The work of an ICT Software Engineer encompasses skills and principles in the areas of computer science, engineering, mathematical analysis, project management and human resources management. Software Engineers also need to provide strong programming capabilities and a sound understanding of software technologies to the role. This occupation focuses more on developing algorithms and analysing and solving programming problems than with writing code, so good problem-solving skills are essential. Project management is another core ingredient of software engineering, with knowledge of how to make a project work on time and on budget a major advantage. With human resource management remaining a key function, the role of Software Engineer also calls for high level communication and relationship building skills.