You are on page 1of 38

PROGRAMMING

Lesson 1:
Competencies of a Programmer
Mr. Soriano
Competencies
of a Programmer 01 Behavioral Competencies

02 Technical Competencies

03 Environment and Market

04 Different Markets
Introduction
COMPETENCIES OF A
PROGRAMMER

• Aside from having the competencies of an entrepreneur, specific competencies


pertaining to programming must also be acquired to be able to succeed in this
industry.
• Programming is the task of writing computer instructions in logical order to
create an executable or automated process that solves a problem or perform
repetitive tasks. Whether one wishes to build a career as a programmer though
an established development house or company, or would opt to try
entrepreneurial venture, the following competencies will be sought for him.
Behavioral
Competencies
BEHAVIORAL COMPETENCIES

• Behavioral Competencies is a set of general


competencies or characteristics that an individual
should have in order to establish a well-balanced
professional attitude.
BEHAVIORAL COMPETENCIES
ANALYTHICAL THINKER
This could be one of the most important
competencies on being a programmer.

TEAM PLAYER CLIENT FOCUSED


Being able to work with a team and collaborate A good programmer is always sensitive about
with his teammates is something that a clients’ needs whether they are internal or
programmer must be good at. external.

RESULTS-ORIENTED GOOD COMMUNICATOR


This refer to being able to meet commitments A good programmer is a good communicator in
and delivering services on time. the sense that he is able to communicate well
at any level of conversation…
CONTINOUS LEARNER
A good programmer, being open and sensitive
to the clients’ needs all the time, must also be a
continuous learner.
ANALYTHICAL THINKER

• This could be one of the most important competencies on being a programmer.


It can also be considered as a technical competency.
• A big bulk of programmers’ work is tied with analyzing processes and data that
should be translated into a working computer program or application.
• A successful programmer demonstrates the ability to sort out and give
structure to overwhelming amounts of unstructured information.
• He does this mainly through a combination of intellect, wisdom, and experience.
• A good programmer is able to “think outside the box” to see or find solutions
that may not be obvious in most situations.
CLIENT FOCUSED
• A good programmer is always sensitive about clients’ needs whether they are
internal or external.
• He must always be ready to listen, ask, and affirm the requirements of the
program being developed all the time and never assumes anything.
• All his efforts in creating the program must be to the satisfaction of the client.
• The programmer deals with an internal client if he is working in a large
organization and he is getting instructions directly from a senior programmer
or an outright systems analyst.
• If a programmer works on his own and interacts directly with the client or end-
user, then he is dealing with an external client.
GOOD COMMUNICATOR

• A good programmer is a good communicator in the sense that he is able to


communicate well at any level of conversation, from a layman’s standpoint
to a technical standpoint.
• He can translate client perceived requirements to programming development
process and conversely, he can express and explain programming
development process terms back in a way that his clients can understand
clearly.
CONTINOUS LEARNER

• A good programmer, being open and sensitive to the clients’ needs all the time,
must also be a continuous learner.
• Technology, being part of almost all aspects of business and industry, is always
present in multiple domains (sciences, engineering, business, etc.).
• He should be able to learn and adapt to different domain processes in order to
make his skills relevant, or identify and focus on a specific domain to be a
specialist in that specific domain.
RESULTS-ORIENTED

• This refer to being able to meet commitments and delivering services on


time.
• A good programmer is always focused on producing results. Not just any
result, but a working and good quality result.
• A programmer’s work is almost always expected to provide a solution to the
problem. This means that any work produced and submitted must be a working
program to solve an issue or to aid in a specific process. Anything less than
expected is not a “result”.
TEAM PLAYER

• Being able to work with a team and collaborate with his teammates is
something that a programmer must be good at.
• This is especially important nowadays when development work is distributed
between programmers or the whole development process is distributed to
different groups or even organizations (outsourced).
• A collaborative programmer should not only cooperate (passive) but also
contribute (proactive) to the team (e.g., share information and resources that
could help in the development of the project).
Technical
Competencies
TECHNICAL COMPETENCIES

• Technical Competencies is a set of competencies


that refer to the standard skills a programmer should
possess in order to perform and deliver his services
effectively and efficiently.
• Thus, he must possess the following fundamental
skills in :
TECHNICAL COMPETENCIES

DATABASE IDENTIFYING
SOFTWARE
DESIGN PLATFORM
BUSINESS
PROGRAMMING DATA/INFORMATION AND
ANALYSIS AND
SECURITY
EMERGING
DEVELOPMENT MANAGEMENT
TECHNOLOGY

This pertains to A significant Platform refers


This refers to It refers to the the knowledge bulk of This is closely to the different
the knowledge knowledge and and skill in programming related to medium,
and application application of identifying nowadays is database whether
of fundamental the techniques. business needs related to management. hardware or
components of and providing handling and software, on
programming… solutions. managing which the
databases. system will run.
PROGRAMMING

• This refers to the knowledge and application of fundamental components of


programming, i.e., program logic formulation, algorithms, data structures, and
system architecture.
• While other programmers, especially applications and web programmers, may
argue that such knowledge is not as important nowadays, the fact remains that
these fundamentals are the basis of the programs produced by code
generators or 4th generation languages today.
SOFTWARE DEVELOPMENT

• It refers to the knowledge and application of the


techniques and management of the whole development
cycle starting from identification and statement of the
problem to analysis and validation, to programming and
testing, up to documentation.
BUSINESS ANALYSIS

• This pertains to the knowledge and skill in identifying business


needs and providing solutions to address such needs.
• For example, handling and managing order and delivery system for a
merchandising business, or providing a more efficient scanning and
POS system for a supermarket that could integrate the inventory and
replenishment system.
DATABASE DESIGN AND
MANAGEMENT

• A significant bulk of programming nowadays is related to


handling and managing databases.
• Almost everywhere you can find opportunities to develop
database systems from the simplest contact information
management system to the most sophisticated customer
relationship management (CRM) system.
DATA / INFORMATION SECURITY
• This is closely related to database management.
• While it could be really be exciting to be able to create database management
systems that integrates almost all aspects of the business, from sales to
marketing to support team, even allowing and opening up transactions through
the Internet, a programmer must always consider data security, first and
foremost.
• He must recognize that not every opportunity to provide a “convenient” system is
good.
• His top priority in dealing with data and its management must be its security.
• He must be adept in the different techniques like encryption and other
technology available to ensure that any data his system is handling and
managing is kept private for all stakeholders of the system.
IDENTIFYING PLATFORM AND
EMERGING TECHNOLOGY
• Platform refers to the different medium, whether hardware or software, on which the system will
run.
• One of the recent developments in the computing industry is the use of mobile devices that is
totally different to computing device.
• Generally, these are devices that are neither a desktop nor a laptop computer, but more like a
smart phone.
• Interestingly, programmers keep creating applications for the devices as well.
• And, by today’s standards, most systems that run on computers are expected to run or at least
can be accessed through mobile devices too. Therefore, as a programmer, knowledge and
application of how to make your programs run in cross platform is a great advantage.
• This is short to say, of course, that you will need to have programming language mastery to create
and develop very good quality software.
Environment and
Market
ENVIRONMENT AND MARKET

• After knowing which competencies to develop in order to be a


successful programmer, let us take a look at the opportunities you
would be expecting after you finished this course.
• As a programmer, acquiring core competencies will allow you to
have some flexibility in choosing the type of programming you are
most comfortable with.
• You can be one of the following key specialist types:
ENVIRONMENT AND MARKET
APPLICATION PROGRAMMER

SYSTEM PROGRAMMER
02 Creates programs targeted for end users.

01
Writes programs that are used to control
computer systems and its peripherals.

WEB PROGRAMMER

04 Creates and develops websites and other


programs that is needed by some of its
components to function.

GAME PROGRAMMER

Creates programs focused on entertainment,


specifically computer games. 03
SYSTEM PROGRAMMER

• Writes programs that are used to control computer systems and its
peripherals.
• They usually use low-level instructions in programming that directly
communicates and controls the computer itself and its peripherals.
• Low-level instruction codes are usually difficult to understand especially for
people who are not really familiar with the computer programming.
• Examples of system programs are operating systems and hardware utility
programs, software that control robots for manufacturing, etc.
• Program made by system programmers may not necessarily be used by end
users like you.
APPLICATION PROGRAMMER

• Creates programs targeted for end users.


• Programs created by application programmers are rather more
specific in nature and would mostly be in aid of data manipulation
and business processes. High-level language is used to create
these programs
• High-level language is a programming language that is more
English-like and therefore easier to understand even to most people
who know little about programming.
GAME PROGRAMMER

• Creates programs focused on entertainment, specifically


computer games.
• They create programs that are comparatively more
complex than application programs in terms of algorithm
and computing.
• They may use a combination of high and low-level
languages or a more specific programming language that is
written especially to be able to manipulate and control
both game elements and controller.
WEB PROGRAMMER

• Creates and develops websites and other programs that is needed


by some of its components to function.
• Among four areas of specialization mentioned, this is perhaps the
one that significantly gains more popularity due to high demand
in the market as well as the availability of tools (mostly free) that
makes it easier to implement.
• Web programmers nowadays do their work at home rather in an
office for as long as they have very good internet connection.
ENVIRONMENT AND MARKET

• These four areas of specialization for computer programmers show


only a gist of how big the scope of computer programming is.
Each area of specialization mentioned above can be further divided
into areas of expertise, either in terms of programming language
used or the domains in which the programs are created for.
Different Markets
DIFFERENT MARKETS

• So, have you decided what specific area of specialization will you
pursue?
• Once you have decided, you need to build and develop the
specific competencies required to ensure that you can perform and
deliver your program successfully.
• Let us now explore the different markets where you can find a
profitable proposition for your acquired technological skills and
talent.
THREE PROFITABLE
PROPOSITION

• Established Software Development Companies


• Business Process Outsourcing (BPO)
• Freelancing
ESTABLISHED SOFTWARE
DEVELOPMENT COMPANIES
• In the Philippines, there are a number of companies who are already well
established and constantly seeking skilled and talented people to work in the
field of programming. Some are even offering internships to their prospective
personnel to develop them before they join the company officially.
• Using a search engine, search for the keywords “software development
Philippines” and you will see a long list of software development companies
based here in our country.
• Some companies are foreign-owned while a lot of them are still 100% Filipino-
owned, and are just as established as the foreign ones. You just need to find or
identify the ones who are outright software developers who work on complete
projects for clients here and abroad.
BUSINESS PROCESS
OUTSOURCING (BPO)

• The BPO industry in the country has been stronger than before and as a result,
attracted various outsourced tasks from call center agents to back office staffing,
animation, and now even coding or programming.
• Although you may not exactly experience complete development projects
through outsourced coding tasks, this is still a very good way for you to
build your experience and develop more of your competencies.
FREELANCING
• Another channel for employment or entrepreneurship that is also becoming more and more
popular is freelancing.
• A lot of clients here and abroad are seeing a lot of value in “outsourcing” their programming jobs
directly to individual programmers or developers through freelancing sites.
• Take note however that while freelancing may offer a lot of convenience and freedom as
oppose to conventional work environment, your commitment to any legal obligations (e.g.,
tax) stays the same.
• The only difference is that this time you get to compute and do the filling and payment on
your own. And you always have to remember to save up a portion of your income for that.
• Another thing is that, when working freelance, you have to avoid the temptation of being lazy
especially when working at home.
• Most of the time, being at home and the convenience of flexible working hours cause you to be
complacent and distracted up to the point of missing your commitments to your clients.
Martin
Fowler
A quote made by Martin Fowler.

Any fool can write code


that a computer can
understand. Good
programmers write code
that humans can
understand.
Thank You
Presented by Mr. Soriano

You might also like