The People
Large projects will involve a great number of people to complete
the project. The following people typically are involved in
the system development process:
- Systems Analysts - Develop the system specifications
- Programmers - Using software tools, they develop
the software that will power the system
- Project Managers - The "coaches" who ensure the team
works well together and the project stays on schedule.
- End Users - The system is for them to use, therefore,
they need to be involved in its planning.
- Vendors - New software or hardware may need to be
obtained for the new system. Vendors will need to be solicited
and consulted.
- Network Architects (Engineers) - How will the new
system be deployed and how will it interact with other systems?
The network engineers can help plan this portion of the project.
- Technical Writers - Documentation for the new system
needs to be written.
- Database Analysts (DBAs) - Most systems interface
with or create one type of database or another. Therefore,
DBA's will be needed to design and implement database structures.
- Graphic Designers & Interface Designers - Interface
screens for users will have to be created and should be pleasing
to the eye (as well as effective).
- Upper Management - Management is providing the funding
for the project. They need to be kept informed of the project's
progress as well as be involved in the early planning stages
to obtain critical management buy-in.
- Accountants - All projects have a cost budget. The
bean counters need to be involved to help analyze actual costs
versus budgeted costs.
- External Consultants - You don't always possess the
expertise you need in-house. You may need to seek external
help to complete a project.
Although all participants are important to a project, the key
players in the SDLC are the Systems Analysts, Programmers and
Project Managers. To better understand this, let's examine a
typical large-scale project in your neighborhood...building
a house.
What are the key roles in building a house? You need adequate
plans to build from which are developed by an architect with
input from the users (homeowners). Then you need tradesmen (such
as carpenters, plumbers, electricians) to build the various
components of the house. The tradesmen need to follow the plans
developed by the architect. And since many different tradesmen
are used, and materials must be obtained and delivered on a
certain time schedule, you need a general contractor to organize
the entire project and make sure everyone works together to
achieve the common goal (i.e. building the house as specified
in the architect's plans).
Systems development works in a similar way. The systems analysts
are the architects of information systems. They design the plans
for the system based on input from the end users of the planned
system. The programmers are analogous to the tradesmen. Using
software tools, they actually construct the information systems
and make sure all pieces of the system work harmoniously together.
The project managers function as general contractors for a project.
They ensure that everything progresses in a timely, organized
fashion according to the plans set forth by the systems analysts.
Below is an in-depth look at the three essential positions
in software development.
Entry Level Job Profile - Project Manager
Equivalent Job Titles - None.
Average Compensation - $88,200ii
Prior Experience and Career Changing - Project management
is not usually an entry-level job in software development. Usually,
they have several years of experience as a programmer or systems
analyst prior to becoming a project manager.iii Many
people feel that you can't coach unless you've been a player.
However, if you have existing experience as a project manager
in another field (other than software development), obtaining
the appropriate technical skills (primarily programming and
systems analysis) could lead you to a successful career change
into software project management. George Nassef, CIO at Hotjobs.com,
Ltd. feels that "customer support is a good place to find people
with a good blend of skills for project management."iv
Customer support professionals understand customer needs and,
since they have to support poorly developed products, they understand
the value of managing a project properly. Good project managers
are a scarce commodity so demonstrated experience in a project
management or customer service role, even in a field unrelated
to IT, could work well in your favor.
Responsibilities - General tasks are as follows:
- Assignment of Staff - Project managers usually have
a great deal of input, if not the final decision, in selecting
the members for the development team.
- Budgeting - Developing, maintaining and analyzing
budgeted costs and man-hours consume a great deal of administrative
time. But analyzing budget vs. actual data is essential to
spotting trends and problems early on.
- Management Reporting - Progress reports need to be
prepared and communicated to upper management.
- Coaching - Mentoring, encouraging and motivating
the team members as well as providing leadership to the development
team.
- Troubleshooting - Finding creative solutions to problems
holding up the progress of the project.
- Meeting Tight Deadlines - All phases of a project
have deadlines. Certain phases must be completed before others
can be begun. Ensuring the deadlines are met, and explaining
why they won't be met, falls on the project manager.
Skills - A solid computer science background, with emphasis
on programming is essential. So is a general business background
since you need to communicate well with marketing and fulfillment
personnel. In addition, you would need to possess the following
attributes:
- Attention to Detail - Software development projects
are complex. They are comprised of many minute parts. Understanding
how they all fit together as a whole is essential.
- Time Management Skills - There are always 40 "balls
in the air" as a project manager. You must be able to keep
track of many segments of a project, as well as the people
involved in them, at the same time. If you are not adept at
time management, you should seek another career.
- People Skills - Working with diverse groups of people
is an everyday occurrence in this position. Being able to
encourage cooperation and attention to deadlines as well as
being able to function as a confidant and mentor is necessary
to function well at this job.
- Work Well Under Stress - Project management is probably
the most stressful of all IT positions. Constant pressures
from management and marketing to get the job completed on
a timely basis just add to the frustration of trying to deal
with problems in the development process. Because of this
level of stress, there is a high burnout rate among project
managers.
- Strong Communication Skills - Communicating with
team members, upper management and marketing will require
excellent verbal and written skills.
- Familiarity with Project Management Software - Popular
packages include Microsoft Project (www.microsoft.com/office/project/)
and the Primavera Systems portfolio of products (www.primavera.com)
Education - A four-year computer science or MIS degree
is usually required. Often, successful candidates have an advanced
degree (Masters or Ph.D.) as well. In addition to computer science
courses, general business and management courses are a plus.
Certifications - The certifications described below
would help demonstrate to potential employers that you have
mastered skill sets that are applicable to a project management
career. In addition, they may also fatten your paycheck. A salary
survey conducted by the Project Management Institute (PMI) revealed
that project managers who earned project management certifications
tend to earn about $5,000 more per year than those without certifications.v
- IT Project + - Yet another in the long list of CompTIAs
certifications. Per CompTIAs web site, this certification
"is an industry-recognized credential acknowledging competency
and professionalism in IT Project Management, including the
necessary business knowledge, interpersonal skills, and project
management processes required to successfully manage IT projects."
This certification was acquired by CompTIA from the Gartner
Institute (www.comptia.org).
- Project Management Professional (PMP) - The PMP certification
is a product of the Project Management Institute (PMI). PMI
is a non-profit organization established in 1969 that establishes
standards, runs training seminars and provides certification
for project management professionals (www.pmi.org/certification).
Entry Level Job Profile - Systems Analyst
Equivalent Job Titles - Programmer/Analyst, Software
Engineer, Systems Consultant. The title of systems analyst is
often applied to a variety of roles ranging from an entry-level
programmer/analyst to a senior manager of all development projects
within an organization. Be certain you ascertain exactly what
the duties are of the position for which you are applying and
whether it is an entry-level job.vi
Average Compensation - $62,838vii
Career Changing - Many organizations insist on hiring
systems analysts with prior programming experience. However,
some organizations are more flexible. If you have a solid business
background, including management experience that you supplement
with appropriate training in software development, then you
might be a good fit as a systems analyst. Understanding business
processes is just as critical in this position as having a strong
technical background.
Responsibilities - Although the main thrust of the job
is planning systems, the detailed tasks are as follows:
- Determining an Organization's Information Needs
This is accomplished through close contact with end users
in all parts of the organization (including, but not limited
to, marketing, sales, accounting, production, fulfillment
and warehousing). Attending meetings is an essential part
of the job.
- Documenting Systems Clear documentation of
the existing and proposed systems allows the analysts and
the end users to reach agreement on the goals and objectives
for development projects.
- Writing Detailed Software Specifications This
means creating a blueprint for the programmers to follow when
they are generating the computer code.
- Choosing Appropriate Programming Tools Requires
analysts to be familiar with popular suites of tools and their
advantages and limitations.
- Supervising Programmers Since this is an important
component of the job, it is not surprising that many companies
prefer to hire systems analysts with programming experience.
- Testing Programs If there is not a quality
assurance department responsible for program testing, the
analysts usually get involved in developing and performing
tests on the software code.
- Collecting End User Feedback As users are
exposed to the new system, the analysts gather feedback and
recommend any changes proposed by the users.
Skills - A solid computer science background, with emphasis
on programming is essential. So is a general business background
since you need to communicate well with personnel throughout
the organization. Writing skills are especially important since
you will need to generate clear documentation. In addition,
you would need to possess the following attributes:
- Problem Solving Ability (analytical ability) - Each
development project comes about because there is a problem
to solve or a need to be addressed. An analyst must take complex
business problems and break them down into component parts.
By analyzing the parts, improving some of them, and reassembling
them, he should arrive at an improved system that provides
a solution to the identified problem.viii
- Solid "People" Skills - This job requires a lot of
contact with other employees. Therefore, the ability to "work
and play well with others" is highly valued. Loners need not
apply.
- Must be Detail and "Big Picture" Oriented - You must
be able to see the "big picture" to envision the overall scope
of the system you are designing
especially with an eye
towards how it will interact with other systems. At the same
time, you must pay attention to the minute details required
to write the specifications for the programmers.
- Plan Oriented - The result of systems analysis is
a plan for the solution. Therefore, you should be the type
of person who thinks that planning is important and you should
be willing to encourage the other team members to track and
measure their work.ix
- Strong Written and Verbal Skills
- Maintain Software Currency - You must constantly
be training yourself on the latest software packages and development
tools. You need to be aware of the limitations and abilities
of various development environments to choose the appropriate
one for your project.
Education - A four-year computer science or MIS degree
is usually required. In addition to programming courses, general
business, systems analysis, software engineering and management
courses are highly desirable.
Certifications - The following certifications would
help demonstrate to potential employers that you have mastered
skill sets applicable to a systems analysis career:
- Microsoft Certified Solution Developer (MCSD)
The MCSD certification, among other things, demonstrates that
the candidate has mastered the ins and outs of systems development
in a Microsoft environment (www.microsoft.com/trainingandservices).
- Any of the individual language certifications mentioned
in the next section on programmers.
Entry Level Job Profile - Programmer
Equivalent Job Titles Programmer Analyst, Junior
Programmer, Assistant Programmer, Software Developer (entry
level), Software Engineer (entry level)
Average Compensation $55,138x
Responsibilities General tasks are as follows:
- Attending Meetings As part of the SDLC process,
programmers will be involved in many meetings to help define
user needs, system specifications, etc.
- Writing Documentation This is a critical step
in the SDLC and should not be overlooked. Unless the company
has technical writers on staff, programmers usually generate
systems documentation.
- Generate Software Specifications In conjunction
with the systems analysts (or functioning as programmer/analysts)
develop the specifications of the system per the user requirements.
- Train Users Since programmers presumably know
the system inside out (they built it after all), they often
are tapped to train users.
- Testing and Debugging Although large organizations
have formal testing staff, in small and medium size organizations
this task often falls to the programmers.
- Convert Specifications into Computer Code
This is actual computer programming.
- Fixing or Upgrading Existing Programs Bugs
are always being discovered, requiring corrections to the
original code. User needs change and amendments need to be
made to existing software.
- Monitor Program Performance Monitoring performance,
with an eye towards spotting bugs and new or changed user
needs, is an important aspect of this position.
- Provide Technical Support for Programs as Needed
Not every problem can be solved by the level one help
desk personnel. Level 2 and 3 help desk personnel are often
programmers.
Skills - To successfully perform these duties, you would
need to possess the following:
- Strong Math Skills Programming languages are
mathematically based. If you historically have struggled with
math, you will most likely have great difficulty learning
to program effectively and efficiently. "There can be a great
deal of grunt math work, so anyone not comfortable with math
should probably stay away from this job [programming]," says
Joe Shashaty, Software Engineer at Netsol.xi
- Facility in One or More Object-oriented Programming Languages
Which languages should you learn? Per a survey in Computerworld
in late 2000, the top computer language skills that IT managers
would be seeking in 2001 were Java, C++ and Visual Basic.xii
Lets examine them briefly as well as a new language
(C#) and an old friend (COBOL):
- Java An object-oriented language that was
developed by Sun Microsystems in 1994. Java was developed
with the Internet in mind and one of its main features is
the ability to program applets. Applets are compact computer
programs designed to run inside a web browser. Any company
that is doing any sort of web based projects is probably
using Java. One of the best things about Java is that it
is platform independent. It will run in a variety of network
operating systems.
- C++ C++ is an object-oriented language that
grew out of the old C language developed in the early 70s.
Although it can be somewhat intimidating to learn and master
(pointers drive people especially mad when learning C++)
it is a powerful object-oriented language widely used in
industry today. As with Java, C++ compilers have been developed
for almost every operating system in widespread use today,
so C++ programs enjoy a great deal of portability between
platforms.
- Visual Basic Microsofts flexible object-oriented
development language is quite easy to learn. But dont
be fooled, even though easily mastered, it is an extremely
powerful tool. Visual Basic (VB) can be used to develop
applications rapidly and is therefore often used when prototyping
is an appropriate method for a project. However, VB will
only run in a Windows environment and is therefore not as
portable as Java or C++ code.
- C# Pronounced "C sharp," this
new object-oriented language from Microsoft was introduced
when Microsoft launched its new .NET studio in the 4th
quarter of 2001. At this point, it is still so new it is
unclear how it will be received in the business world. But
if you want to be right on the cutting edge, get some C#
training. I would recommend backing it up with good solid
Java or C++ training also so as not to limit your employment
options.
- COBOL An acronym for common business oriented
language, COBOL is the second oldest (next to FORTRAN) high-level
programming language in the world. Despite having been developed
in the late 1950s and early 1960s, it is still the most
widely used language in the world according to Webopedia
(
www.pcwebopedia.com/TERM/C/COBOL.html ). Should you
run right out and study COBOL? Probably not instead of Java
or C++. But if you want to learn it as a second or third
language, it might help you land a job in a shop where COBOL
is still used.
- Conversant with Good Programming Procedures
Including, but not limited to, proper program structure, ensuring
other programmers can understand your coding and adequate
documentation procedures.
- Logical Thinking Programs are logical flows
of instructions. The ability to think logically is imperative
to be a successful programmer.
- Team Player Most projects today are too large
to be completed by one person. Therefore, you need to be able
to coordinate your efforts with other members of diverse teams.
- Time Management Skills Deadlines are an inherent
part of programming especially with large, complex projects.
Often other pieces of a project will be delayed if your code
is not completed on time. This can generate a great deal of
stress.
- Adept at Relieving Stress Due to the deadlines
noted above, you need to have an outlet for your tension.
Education - A four-year college degree and possibly
an advanced degree (M.S.) in computer science is what most employers
are looking for when hiring programmers.xiii Most
likely your major will be computer science, but occasionally
it might be management information systems (MIS) or mathematics
with programming courses plugged in as electives. Although private
technical schools offer programming curriculums, you are more
likely to be desirable to an employer with a four-year degree.
Certifications - The following certifications would
help demonstrate to potential employers that you have mastered
skill sets that are applicable to a programming career:
- Borland Product Certifications Borland is
a software developer that produces some of the most widely
used application tools in software development. C++ Builder
5 and JBuilder 5 (Java) are used in many software development
departments. Borland offers certification in both these products.
(
www.borland.com/services/training/certification )
- Sun Microsystems Java Certifications Go right
to the inventor of Java for well-respected Java certifications.
Sun currently offers 4 levels of Java certification that are
obtained through rigorous examinations consisting of objective
questions and programming problems. (
http://suned.sun.com/US/certification )
- Microsoft Certified Solution Developer (MCSD)
The MCSD certification, among other things, demonstrates that
the candidate has mastered the ins and outs of Microsoft Visual
Studio. Visual Studio is a software development product that
features C++, Visual Basic and C# programming tools. (
www.microsoft.com/trainingandservices )
As the need for better and faster access to information increases,
so will the need for new information systems. This should keep
the demand for systems development professionals at a high level
for the near future.
|