Note that the essential skills profiles were not updated to reflect the transitions to the Skills for Success model and the 2021 version of the National Occupational Classification (NOC). For more up-to-date information on the skills required for different occupations, visit the Occupational and Skills Information System (OaSIS) website.

Labour market information Explore careers by essential skills

Essential skills profile

This profile contains a list of example tasks that illustrate how each of the 9 essential skills is generally performed by most workers in this occupation. The levels of complexity estimated for each task are ranked between 1 (basic) and 5 (advanced).

You can use this profile to:
Find a job
Write your resume and prepare for job interviews
Plan your career
Determine which career may best suit you based on your skill set
Manage your workforce
Write job postings, assess employee performance and develop training

Computer Programmers(2174)

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.

Reading Help - Reading
  • Read e-mail sent by clients or colleagues. For example, they receive brief e-mail from clients giving general descriptions of problems encountered or longer messages from colleagues that include technical details as well as potential solutions. (2)
  • Skim hardware and software product labels and license agreements to ensure that they are complying with conditions of use. (2)
  • Read about new products, new software programs and other programmer' solutions to software problems in online magazines such as Wired, Slashdot and UNIX Syntax. (3)
  • Read 'requests for proposals' which describe clients' information systems needs, goals and timelines. They must fully comprehend clients' requirements in order to create viable proposals. (3)
  • Review contract agreements and service level agreements outlining projected costs, licensing, ownership of materials, timelines and responsibilities. (3)
  • Read the application programmer interface specifications for new software products to identify program application, evaluate the technology, compare costs and explore system requirements and compatibility with other software programs. (4)
  • Read a variety of software user manuals. For example, computer programmers may read sections of the Macromedia Flash User Manual to find ways of moving images and of programming interactive features for a new web site. (4)
  • Read lengthy design specification documents to understand all the requirements and characteristics of applications to be developed, functional descriptions, overviews of the architecture, descriptions of customer interaction systems, details of application structures, main points and schema of each screen. (4)
Document use Help - Document use
  • Scan lists identifying the various features to be included in software. (1)
  • Scan activity schedules to identify tasks to be performed on a weekly basis during all phases of software development or web programming projects. (2)
  • Record software development activities and times on tracking forms. (2)
  • Plot user information such as age and gender on graphs and analyse them to better understand the characteristics of the people visiting websites. (3)
  • Scan flowcharts to get information about steps in processes, flows of data or command structures. For example, a programmer may consult an import subject flowchart to understand the various steps in the process of importing data prior to processing. (3)
  • Read and analyze complex technical reports consisting of database logs that they map against event application logs to identify the context in which system failures occurred. Both sets of logs present a chronology of all events in a table format listing times, modules and event messages written in computer language, and include the use of symbols to represent the message type. Computer programmers often sort through up to several hundred pages to discover where errors occurred. They analyze the information to identify how the errors occurred and the programming mistakes, if any, that need to be corrected. (4)
  • Consult and synthesize information from a variety of technical documents to develop software applications. They refer to the requirements specifications that define and list the main points of the application, detail its functional design, architecture and user interface and provide sample screen captures. Computer programmers also frequently consult voluminous technical manuals and programmer web sites to find out how to program a specific function in a given computer language. The technical documents are often lengthy and require specialized programming knowledge. (4)
Writing Help - Writing
  • Write short letters and e-mail to clients and colleagues to give project updates, inform them about changes and modifications and answer questions about how to access information or fix problems. (1)
  • Write step-by-step, clear and easy-to-follow application installation instructions for clients. (2)
  • Write proposals for software and web sites development projects. Computer programmers usually adapt existing proposals to reflect project requirements including specific tasks, timelines and deliverables. (3)
  • Write license agreements to ensure the product users provide remuneration to software developers. They use templates with established format, and select and modify standard clauses to reflect the specifics of a given contract. (3)
  • Write help files and training manuals for software applications and web sites to assist end-users navigate through applications and answer any questions they may have. These files have to be clearly written and the technical information needs to be adapted to a level that can easily be understood by the intended users. (3)
  • Write technical papers and other project documentation for the benefit of other programmers who may wish to modify the software to incorporate additional features or to build similar software. They describe how software products work, discuss the technology behind software designs and suggest further applications of the software. (4)
  • Write development guides or design specification documents which define clients' needs and project requirements. These guides are intended to be used by computer programmers and are usually lengthy, detailed and highly technical. They also write application development cases to record programming done during software or web site development. For example, they document coding standards, development conventions and user interface visual designs. (4)
  • Write a variety of reports for clients. For example, they write status reports detailing progress made, problems encountered, solutions and next steps, and feasibility reports discussing the significance of testing results and recommend changes. (4)
Numeracy Help - Numeracy Money Math
  • Calculate total invoice amounts for the number of hours worked. They use established hourly rates for labour and add applicable sales taxes. (3)
Scheduling, Budgeting & Accounting Math
  • Monitor costs to ensure that projects stay within budgets. (1)
  • Schedule tasks for development projects on a daily, weekly and monthly basis. They may schedule the work of large teams comprising database architects, software designers, security experts, production teams and testing groups. They make adjustments to the schedules to accommodate unforeseen events and complete projects within the terms stipulated in contracts. (3)
Measurement and Calculation Math
  • Measure free disk space frequently to confirm that demand for disk space does not exceed available space. (1)
  • Use formulae to specify the width, height and position of web page design elements relative to other objects instead of hard coding them. (2)
  • Calculate length of time needed to download software programs depending on the rates of transfer and size of the files. (2)
Data Analysis Math
  • Gather system users' data such as gender, age, data rates, home domains and log on types to compare system use across different user groups. (2)
  • Integrate mathematical functions into software routines. For example, a programmer may write software to calculate the percentage of the Canadian population in a certain demographic category or to average scores obtained in online quizzes. (2)
  • Analyze the number and size of data packets sent through the system during a test period and compare the rate or data with corresponding network carrier information. They compare test results with expected performance to identify glitches in systems and to guide them as they make changes or adjustments. (3)
Numerical Estimation
  • Estimate the time required to repair software glitches or add new features. (1)
  • Estimate the amount of time required to develop software applications. There is no set estimation procedure; computer programmers usually look at old work plans to determine approximately how long similar programming took in the past and they subsequently adjust their estimates by comparing the complexity of both projects. Estimation errors can have a significant impact on project costs and ability to deliver products or release applications in time. (3)
Oral communication Help - Oral communication
  • Phone clients or application users in response to e-mail or voice mail reporting error messages in software applications. They speak directly with the individuals to determine the sources of errors. (2)
  • Attend meetings with clients and their representatives to collect information to clarify project specifications, make recommendations and reach agreement in defining system needs. (2)
  • Attend meetings with colleagues and co-workers to share information about the development of web pages or software application projects. For example, they discuss clients' needs and project requirements with design teams and talk to members of system integration teams about problems with related applications and systems. They also consult database analysts to understand how data can be extracted and transformed to fit tables specified by clients and share information with graphic designers so they can adjust the timing of their work to fit overall project development. (3)
  • Present proposals to small groups of clients when offering services for web programming projects. Computer programmers have to convince clients of their abilities to achieve results professionally and promptly. Leading sales meetings is an important part of their jobs. (3)
  • Interact with Internet service providers when negotiating the management of web sites on their servers or when troubleshooting to identify the source of a computer problem. (3)
Thinking Help - Thinking Problem Solving
  • 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)
Decision Making
  • 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)
Critical Thinking
  • 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)
Job Task Planning and Organizing

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.
Finding Information
  • 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)
Digital technology Help - Digital technology
  • Use communications software. For example, they exchange e-mail and attach documents with colleagues and clients, create address lists, schedule meetings and send invitations to participants. (2)
  • Use word processing. For example, they create, edit and format documents such as reports, proposals, user guides, workflow plans, schedules and specifications documents. (3)
  • Use graphics software. For example, they manipulate photographs of clients' products by adjusting size, colour or contrast. They create animations and visual representations of clients' products. They may also use presentation software such as PowerPoint to create slide shows outlining the development process for websites including components such as methodology, architecture, data access and 'lookup.' (3)
  • Use spreadsheets. For example, they create list of tasks and timelines for projects, track feedback or comments, build tables and graphs, program macros to produce statistics and transform list of data into different kinds of lists. (3)
  • Use the Internet. For example, they perform searches for programming code, information about software or solutions to problems. They visit vendors' web sites, participate in exchange forums and post descriptions of problems on bulletin boards. They visit and evaluate a variety of web sites for specific features and functions and may connect directly to clients' systems to find and fix programming errors. (3)
  • Use databases. They design, create, manage, update and query the databases. They may use database application development tools to develop custom software specific to clients' needs. (5)
  • Do programming and systems and software design. For example, they develop web pages with interactive or animation features, create interfaces for databases, develop information management systems with query capabilities, create capability to validate information, program e-mail messaging features, and link various documents, tables and web pages. Computer programmers require specialized knowledge of multiple computer languages, codes and mastery of many other system development applications. They must be able to identify when a particular language is best suited for a given application and offer the capability to program the features and functions to meet clients' needs. (5)
Additional information Help - Additional information 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)

Continuous Learning

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)

Date modified: