Ontario Skills Passport
Layout structure
header
Header structure
header
navigation
Display Noc
OSP Occupational Profile

OSP Occupational Profile

Print Occupational Profile

Display page browsing back option list
Display page browsing back option list <<Back
Display Noc Details
NOC Code: NOC Code: 2174 Occupation: Computer Programmers
Occupation Description: Occupation Description:
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. 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.

  • Click on any of the Essential Skills to view sample workplace tasks for this occupation.
  • Skill levels are assigned to tasks: Level 1 tasks are the least complex and level 4 or 5 tasks (depending upon the specific skill) are the most complex. Skill levels are associated with workplace tasks and not the workers performing these tasks.
  • Scroll down the page to get information on career planning, education and training, and employment and volunteer opportunities.

Table will display the Skill Level for the Noc specified
Essential Skills Essential Skills Levels
Reading Text Reading Text 1 2 3 4
Writing Writing 1 2 3 4
Document Use Document Use 1 2 3 4
Computer Use Computer Use 1 2 3 4 5
Oral Communication Oral Communication 1 2 3
Money Math Money Math 1 2 3
Scheduling or Budgeting and Accounting Scheduling or Budgeting and Accounting 1 2 3
Measurement and Calculation Measurement and Calculation 1 2
Data Analysis Data Analysis 1 2 3
Numerical Estimation Numerical Estimation 1 2 3
Job Task Planning and Organizing Job Task Planning and Organizing 1 2 3
Decision Making Decision Making 1 2 3
Problem Solving Problem Solving 1 2 3
Finding Information Finding Information 1 2 3 4
Critical Thinking Critical Thinking 1 2


  • The skill levels represented in the above chart illustrate the full range of sample tasks performed by experienced workers and not individuals preparing for or entering this occupation for the first time.
  • Note that some occupational profiles do not include all Numeracy and Thinking Essential Skills.

If you would like to print a copy of the chart and sample tasks, click on the "Print Occupational Profile" button at the top of the page.


Reading Text
  • Skim hardware and software product labels and license agreements to ensure you are complying with conditions of use. (2)
  • Read email sent by clients or colleagues. For example, receive brief email from clients giving general descriptions of problems encountered or longer messages from colleagues that include technical details as well as potential solutions. (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)
  • Review contract agreements and service level agreements outlining projected costs, licensing, ownership of materials, timelines and responsibilities. (3)
  • Read [requests for proposals] which describe clients' information systems needs, goals and timelines. You must fully comprehend clients" requirements in order to create viable proposals. (3)
  • 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)
  • 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 website. (4)
  • 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)
Back to Top

Writing
  • Write short letters and email 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 websites 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. 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 websites 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 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. Write application development cases to record programming done during software or website development. For example, document coding standards, development conventions and user interface visual designs. (4)
  • 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. Describe how software products work, discuss the technology behind software designs and suggest further applications of the software. (4)
  • Write a variety of reports for clients. For example, 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)
Back to Top

Document Use
  • Scan lists identifying the various features to be included in software. (1)
  • Record software development activities and times on tracking forms. (2)
  • Scan activity schedules to identify tasks to be performed on a weekly basis during all phases of software development or web programming projects. (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)
  • Consult and synthesize information from a variety of technical documents to develop software applications. 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 websites 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)
  • Read and analyze complex technical reports consisting of database logs that are mapped 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)
Back to Top

Computer Use
  • Use communications software. For example, exchange email and attach documents with colleagues and clients, create address lists, schedule meetings and send invitations to participants. (2)
  • Use spreadsheets. For example, 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 graphics software. For example, manipulate photographs of clients' products by adjusting size, colour or contrast. Create animations and visual representations of clients' products. 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 word processing. For example, create, edit and format documents such as reports, proposals, user guides, workflow plans, schedules and specifications documents. (3)
  • Perform Internet searches for programming code, information about software or solutions to problems. Visit vendors' websites, participate in exchange forums and post descriptions of problems on bulletin boards. Visit and evaluate a variety of websites for specific features and functions and may connect directly to clients' systems to find and fix programming errors. (3)
  • Do programming and systems and software design. For example, 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 email 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)
  • Use databases. Design, create, manage, update and query the databases. Use database application development tools to develop custom software specific to clients' needs. (5)
Back to Top

Oral Communication
  • Attend meetings with clients and their representatives to collect information to clarify project specifications, make recommendations and reach agreement in defining system needs. (2)
  • Phone clients or application users in response to email or voicemail reporting error messages in software applications. Speak directly with the individuals to determine the sources of errors. (2)
  • Interact with Internet service providers when negotiating the management of websites on your servers or when troubleshooting to identify the source of a computer problem. (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)
  • Attend meetings with colleagues and co-workers to share information about the development of web pages or software application projects. For example, discuss clients' needs and project requirements with design teams and talk to members of system integration teams about problems with related applications and systems. 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)
Back to Top

Money Math
  • Calculate total invoice amounts for the number of hours worked. Use established hourly rates for labour and add applicable sales taxes. (3)
Back to Top

Scheduling or Budgeting and Accounting
  • Monitor costs to ensure that projects stay within budgets. (1)
  • Schedule tasks for development projects on a daily, weekly and monthly basis. Schedule the work of large teams comprising database architects, software designers, security experts, production teams and testing groups. Make adjustments to the schedules to accommodate unforeseen events and complete projects within the terms stipulated in contracts. (3)
Back to Top

Measurement and Calculation
  • 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)
Back to Top

Data Analysis
  • 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)
  • 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)
  • 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. Compare test results with expected performance to identify glitches in systems and to guide you as you make changes or adjustments. (3)
Back to Top

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 subsequently adjust 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)
Back to Top

Job Task Planning and Organizing
  • Computer Programmers 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)
Back to Top

Decision Making
  • Decide the names and naming conventions for the various components of software applications. (1)
  • Decide tasks assignments for computer programmers on your team. Identify the strengths and weaknesses of all team members and take into consideration their experience and preferences. Keep in mind the quality of the intended products as well as the timelines to be met. (2)
  • 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)
  • Decide which development tasks are priorities. For example, when software development times are short, choose functionality over appearance. (3)
  • Choose programming methods and languages. For example, you 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)
Back to Top

Problem Solving
  • You have inherited software projects abandoned by other programmers. 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)
  • Deal with "bugs" in new software applications or errors while programming. For example, the 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)
  • Software designs do not meet clients' expectations. Call a meeting with clients and information technology experts to clarify expectations and designs. Redesign and make the required changes to the software code to get projects back on track and client satisfaction. (3)
Back to Top

Finding Information
  • Find relevant programming code, usually available on the Internet, to see how other programmers have circumvented or solved problems. For example, search on the Internet to find technically viable ways of incorporating video clips into websites 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, 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)
Back to Top

Critical Thinking
  • Evaluate the feasibility of clients' requirements and specifications for software projects. Consider the time involved, allowable budget, technology available, ability to meet clients' business needs and aspects of the projects that may be challenging. Also think about how programs might work together, specific capabilities of each program, other products that are available and clients' requirements. (2)
  • Evaluate the utility and relevance of features and functions of various websites, software applications or products to determine how they could be applied to current projects. (2)
Back to Top

footer