Employers place a strong emphasis on essential skills in the workplace. Essential skills are used in nearly every occupation, and are seen as 'building blocks' because people build on them to learn all other skills.
Each profile contains a list of example tasks that illustrate how each of the 9 essential skill is generally performed by the majority of workers in an occupation. The estimated complexity levels for each task, between 1 (basic) and 5 (advanced), may vary based on the requirements of the workplace.
Computer programmers write, modify, integrate and test computer code for microcomputer and mainframe software applications, data processing applications, operating systems-level software and communications software. They are employed in computer software development firms, information technology consulting firms and in information technology units throughout the private and public sectors.
- Inherit software projects abandoned by other programmers. They sometimes find that the programming is inconsistent and messy because it was written by a number of previous programmers, each with a different style. Computer programmers clean up the programming of the applications, section by section, always ensuring that the applications behave as expected and that no interruptions occur at the users' end. (2)
- Encounter 'bugs' in new software applications or errors while programming. For example, they may find that interactive features on websites are not responding as expected. Errors may result from a wide range of factors, some of which are unknown. Computer programmers troubleshoot the system, methodically testing one component at the time until the bug is found. Once the culprit code lines have been identified, they modify them and test applications to ensure proper functioning. In some cases, the process is one of trial and error until software applications function as originally intended. (3)
- Find that software designs do not meet clients' expectations. They call a meeting with clients and information technology experts to clarify expectations and designs. They redesign and make the required changes to the software code to get projects back on track and client satisfaction. (3)
- Decide the names and naming conventions for the various components of software applications. (1)
- Decide the protocols to be used to download and transfer files from central systems to local systems taking into consideration factors such as type and size of data, space available on receiving system, compressibility of data of data and portability of protocol to another system. Computer programmers usually have access to this type of information and rely on their experience or similar past projects to assist in decision-making. Errors can be corrected relatively easily however some additional programming time will be required. (2)
- May decide tasks assignments for computer programmers on their teams. They identify the strengths and weaknesses of all team members and take into consideration their experience and preferences. They must keep in mind the quality of the intended products as well as the timelines to be met. (2)
- Decide which development tasks are priorities. For example, when software development times are short, they may choose functionality over appearance. (3)
- Choose programming methods and languages. For example, they may decide to employ object-oriented techniques and use control structures such as loops and conditional statements for a particular application taking into consideration factors such as project specifications, expected application performance, client preferences and their previous experience with similar projects. Poor decision making can lead to slow or malfunctioning applications and costly redesign. (3)
Job Task Planning and Organizing
- Evaluate the utility and relevance of features and functions of various web sites, software applications or products to determine how they could be applied to current projects. (2)
- Evaluate the feasibility of clients' requirements and specifications for software projects. They consider the time involved, allowable budget, technology available, ability to meet clients' business needs and aspects of the projects they may find challenging. They also think about how programs might work together, specific capabilities of each program, other products that are available and clients' requirements. (2)
Own Job Planning and Organizing
Are responsible for planning their own computer programming activities and meeting project deadlines. Computer programmers often work on several projects at the same time and must integrate and coordinate their workplans with those of several co-workers and colleagues such as website integrators, copywriters and web designers. Computer programmers often face competing demands on their time and must prioritize job tasks. Computer programmers must allow flexibility in their schedules to respond to unexpected requests from clients' and problems in applications. (3)
Planning and Organizing for Others
Computer programmers may coordinate and direct the numerous activities of testing groups and other infrastructure technicians. (3)
Significant Use of Memory
- Remember where to find files on their computers.
- Remember programming information and logic until they can write it down.
- Memorize sections or sequences of frequently used programming code.
- Remember login names and passwords to access computer and network systems.
- Remember previous programming bugs and use this information for problem solving.
- Find relevant programming code, usually available on the Internet, to see how other programmers have circumvented or solved problems. For example, they may search on the Internet to find technically viable ways of incorporating video clips into web sites or to find solutions to fix computer bugs. (3)
- Search for code examples when programming an uncommon or new feature for a software application. For example, they consult technical manuals, user and application guides, online help desks or support groups and co-workers and colleagues to identify programming solutions. In the majority of cases, there is no immediately available solution and information from various sources needs to be analyzed and amalgamated to create a unique solution to solve the problem encountered. (4)
Other Essential Skills:
Working with Others
Computer programmers work independently when designing, writing, testing or troubleshooting software applications. Often, computer programmers are members of teams for large-scale projects. In these cases, while they still work independently on their assigned tasks, they need to coordinate and integrate their work with that of other computer programmers, copywriters, web designers, database administrators and systems analysts. (3)
Computer programmers set their own learning goals and are responsible for identifying learning resources. They regularly consult co-workers, colleagues and supervisors and learn from these discussions. They also learn by reading trade magazines, software manuals, user guides and numerous online resources. Computer programmers participate in formal training activities such as taking courses on particular technical topics through off-site training organized by vendors or at a college or university. They also attend professional conferences or seminars offered through professional associations. The information technology field is fast paced and computer programmers must constantly maintain and update their skills. (4)