JK Software Developer Inc.
Nowadays, there is a great demand for software development out there.
The world needs software solutions just about anything. From planning
and running complex business and industrial services to planning and
running your day. From execution of mission critical operations to
playing for fun, almost everything is backed by a software. There are
millions of software developers out there and yet the global need for
them is not about to be met. The world needs a lot more software
developers, but seriously, why do we need them, what is the mission of a
software developer that is so important to the world economy?
Let us analyse first how a software developer grows. Basically, there
are two major paths one may follow to be a software developer. One is
to have a formal education (be it a university degree, or a formal
training program) and acquire the necessary skills to develop software,
and the other is to be an autodidact and teach yourself using plenty of
available resources (books, online courses, articles, tutorials, etc.)
about software development.
The self learning approach is very personal and it is hard to
generalize the way one teaches himself therefore it is hard to draw
conclusions about what process is followed or what the outcomes may be.
Also, compared to the numbers, I am sure this group is the minority, and
the majority of developers come from a more formal path.
The formal path, however, has a visible indicator how one is being
trained in the field of software development. We can have a look at the
curricula of many universities and analyze them. We can get a subset of
subjects that are covered from most universities, or so to say core
subjects, and they are programming languages, databases, data security,
algorithms, maths, web development, etc. (I am not focusing here on
training programs as usually they tend to have a narrower focus on one
technology or one aspect of it, and rarely on a complete process as
universities do). Some universities offer also non computer science
complementary courses such as on entrepreneurship, preparing business
plans, biology, etc., but only as elective courses that are left on the
will of the student if he or she wants to take it.
From the university curricula I have seen, I can draw the conclusion
that most of the universities prepare the software developers as pure
technical persons who are supposed to solve technical problems related
to software development. But is this the reason the world needs the
software developers that much? Personally, I do not agree with this, and
I keep asking myself the question:
What is the mission of a software developer?
Let us try to answer this by trying to find the answer to this
question: What does a software developer do after graduation? I can
think of several answers to this:
- Industry path: He or she is employed by a company
who needs software solutions for their business needs (be it a software
developer company, a bank, an engineering company, a distribution
business, whatever…) and he/she works there trying to create software
solutions for the needs of the company.
- Academic path: He or she may decide to pursue
further studies and be a researcher who continues to contribute to
academia by teaching and to the knowledge by researching unknown
solutions for existing technical, real life or business problems.
- Entrepreneur path: He or she creates a solution
for a real life problem or a business problem, makes a business out of
it, and creates an enterprise which runs a business by providing a
software solution for a business problem.
Of course, it is not easy to sum up all available paths to follow,
but in my opinion these three cover the major available paths to follow
for a computer science graduate.
Now what can I see from these choices is that, none of them are about
solving technical problems purely. What I can also conclude is that,
solving a real life or business problem is what turns out to be the real
reason why we need so many software developers today. From this, I can
confidently say that
The mission of a software developer is to solve real life and business problems.
You may say that is something we know and it is obvious, what is the
problem about this? Well, I have a lot of contacts with different
developers, experienced ones and want to be ones, university trained and
autodidacts. I am teaching programming courses myself on a university
level and professional level for over 6 years now, and I have had the
opportunity to deal with over 1000 students up to now. What I can see is
that, software developers see themselves as technical persons who are
there to solve technical problems and they do not care about the
business world. All they are interested is that how a technology or a
framework works and how they can use or advance it. That is it. They
care about code quality, they care about unit testing, they care about
code reuse, and lots of other technical characteristics of the software,
but rarely they discuss about how usable their applications are, or how
efficiently they optimize a business problem their software is
addressing or what business value they have delivered with the software
they have built. I am not saying that technical characteristics are
unimportant, far from it, we should always strive to write the best
quality code we can, according to best industry standards, using best
practices, and best patterns we know. I am just stating that the most
important thing is we deliver value with software. If there is no value,
there is no point having unit tests, most clearly written code, or bug
free code, as it will not be used.
But perhaps this is not their fault as the education system they are
following is not preparing them to think in that way, and that is where
our duty as computer science teachers come to a focus. It is us,
everybody who teaches a computer science related subject, be it a
university course, an online course, or tutorial series, we should
communicate the idea that technology is there to solve real life and business problems. I
do think that we should not grow technical persons who write code, but
we should teach them to be problem solvers who provide value with their
solutions.
Shirt Design
|
| | |
| | | | |
|
|
|
|
|
|