Programming is often regarded as software development.
This is very rampant in this part of the world based on the unstructured manner
in which programming skills are acquired. Developing a program is often mistaken
as the development of software because there is limited formal standardized IT
education thereby complicating the ignorance of potential entrants into the IT
field.
I was once in this web based on the raw skills of
coding which I possess thereby making me to regard myself as a software
developer. I remembered fumbling in an application exhibition based on inexperience
and ignorance about the details involved in the art of developing softwares
that are customer satisfactory and profitable. Most young programmers like I
was are challenged by the failure to transform their programming skills into
well knitted softwares. Some that have been able to somehow navigate this path
have also been challenged by the commercialization and profitability of the software
they have produced.
It is surprising that these challenges hold sway considering
the huge revenue and volume of trade in the software and application
development. In essence, it is high time Nigeria youths and programmers learnt
the basics of software engineering in order to be globally competitive. If you
are a “code warrior” as these set of programmers are called please follow the
analysis that will be detailed in this article.
The start
Developing software is like building a house. Most
times, I advise programmers to form a team in order to have variety and
different perspective which will contribute immensely to the overall
development of software. Building a house also involves bricklayers, welders,
carpenters, painters and electricians thereby making the team to consist of
persons with numerous skills (Graphics designers, database managers,
programmers, project managers and marketers). This is imperative to ensure that
software is acceptable by client/market, tasks are divided, adequate
coordination during development and conformity to timeline.
I know our culture and society does not enhance trust
which is required in such team, but it must be in place and some level of trust
should be developed as the new term in business these days is collaboration (after
all GlaxoSmithKline and Pfizer are collaborating despite being competitors).
Select a Methodology
It is important to have a plan and a detailed method
of developing the software. There are numerous methodologies and approaches
that can be adopted in developing softwares. Among of them is waterfall model,
Agile, Spiral model, Prototyping and even Prince2. A detailed research into
these methodologies will influence selection of the methodology. The preferred
methodology should be objectively selected and totally agreed upon by the team.
A discussion of the methodologies, roles and responsibilities of each team
member and overall understanding of how the methodology works must be conducted
before commencement of the project.
Tasks in Software development
I thought about the most concise format of explaining
the details, I feel the use of waterfall methodology to explain the details
will be appropriate as it has detailed and explicit outline of steps involved
in the methodology.
·
Understanding the Problem: Every new system or even software is conceived and
developed to solve a problem or introduce change to a current system. Every
programmer or software development team must take time to understand the
problem which the software to be developed is solving. The understanding will
shape the requirements which will be designed for the software.
·
Planning: The entire software development process must be segmented into tasks
and phases for easy evaluation. Detail timeline for the development must be
set. This timeline is often constructed like a Gantt chart in order to know
task duration and the resources required to finish each stage of the
development. Resources for clarity mean man power, financial, internet (if
needed) and other resources as required by tasks.
·
Designing: This stage is the most imperative in the entire
process. This is where extensive consultation is conducted. This phase of the
development involves the transformation of the requirements (derived from
understanding problem stage) into a technical implementable format. This
process can be initiated by the selection of the relevant technologies that
will be appropriate for the development. Interoperability must be put into consideration
as most programmers usually have predefined technologies to use even when there
are better options. The design includes tasks like UML and Data flow
illustration and software components (interface, database connectivity,
transaction processing, error management, session management in case of web
based applications). The design document provides the blue print for how the
software will be developed technically.
·
Implementing: This is where the coding is conducted. This is where
the instructions and details in the design document are converted to the actual
software.
·
Testing, Evaluation and Maintaining: Testing is where the functionality of the
implementation is investigated for flaws. This task is usually concerned with
the discovery of flaws which must be fixed to ensure that the software conform
to requirements. Experience has shown that numerous flaws and let offs are
discovered during testing prompting repetitive implementing and testing cycle
in reality. Evaluating the entire development follows after satisfactory
testing is conducted. Evaluation documents the overall development process
including the usefulness of the software for the development team. The
evaluation usually involves installation for clients or commercial packaging
for off the shelve softwares. Maintaining often conducted for customized
software is the optimization of the installed software for optimal usage.
This explanation shows that ordinary coding
(Implementation) cannot produce good softwares. This also shows the problem
which numerous programmers are facing as software development involves more
steps than coding. Developing a software or application requires high level of
management thereby detailed focus on the systematic approach must be imbibed to
ensure success.
This piece is my contribution to improving the human
capacity in the Nigerian and global IT space. If you have learned something or you
have any corrections, please leave your comments. My name is Pelumi Apantaku
and my twitter handle is @Pelulomo_27