Monday, February 4, 2008

Software engineers self-development

When I was in faculty my image about my future was that I will be a software developer in some company. I think it was the image of the most of us. But most of who work in software development when hired, find that the job title is software engineer (I talk about other job roles in undergraduates vision about their future).
Fresh graduates when hired have different reactions about this new job title which was not in their mind during the faculty. Some of them do nothing and consider that software engineer is just another name of software developer, which was the reaction of the majority of us. Some of them who are more smart, noticed that the job interview focuses on some areas of knowledge, so they enhances themselves in these areas after the interview. But the intention of this self-development is to do better in the next interview.
This may make some of you ask, so what is the difference between software engineer and software developer? Which I discussed in Software Engineer or Software Developer.
Back to fresh graduates, after they hired and get into work, then all self-development plans are gone and the main concern will be to keep their current job.
Some of you may say that the work experience enhances our knowledge.
Yes, you are true. But let me add to your answer a common forgotten part and say your answer again which will be, the work experience enhances our knowledge only in what our current job and company concerns about and apply.
My added part looks ambiguous?
Yes, I confess.
But let my explain my point. As we know not all the software companies have the same size, not all of them work with the right processes, not all of them work in all the types of application development.
This extreme difference with the previously mentioned behavior of software developer in self-development led the software developers experience and knowledge to be only the accumulation of what he worked in, see, heard about during his years of work.
But what about the other areas, approaches, methodologies that you are not forced to work with in your company?
The concept of “Learn what get me in” make the developer pause his self-development activities in the times that he is not preparing for a new interview, which are the majority of his time. This concept in behavior of developers wastes most of their time in ordinary work tasks and make their learning and enhancement process very slow.
This behavior implicitly naked the targets of most of us, which are only better job, better salary. Shame on us if these is our only targets. We should as a software engineers – not software developers - have a nobler targets and ethics.
Also this behavior led to some of outcomes which are:
  • Most of us only use the technologies that is introduced to us by the others, we use not innovate.
  • Even in using the technology, we know what make us accomplish our task, not to expert to technology.
  • We always fight to win positions in the operational levels – I talk about who worked in big companies like Microsoft, IBM, ORACLE, etc – we not get to higher positions or research departments.

Conclusion:
Software engineers’ self-development in Egypt has the following Characteristics:
Path: Very slow and my stop for long periods.
Motivations: Better job, better salary.
Targets: Better opportunity.
Outcomes: Developers in the operational levels with medium knowledge in technology and no innovative ideas.

This is with the developers is the main concern. There is more to say if we talk from a national perspective and our role in aiding our country to compete in the international economy.

This is my opinion; hope to know your comments so we can change these conditions.

Data Mining & Software Engineering

So many efforts have been done in data mining field from thousands of researchers and developers both in academia and enterprise. This can be rationale due to the following reasons:
  1. The vast ways in collecting and storing data in all aspects of life.
    The huge data collected in the enterprise lead to overwhelming information workers.
    This lead to one fact, which is “We rich in data but poor in information”. So we seek the solution in the area of data mining.
  2. The data mining serve any field in the enterprise in uncover valuable information that is hidden in its data bases. This information can help enterprise greatly in its enterprise business and will give it a competitive advantage in understands the behind scenes information.

Due to these reasons, the data mining interests a huge numbers of customers approximately in all fields of the enterprise.

But as software engineers what can data mining provide to us? By us I mean the software engineers themselves in their work.

Let say it in other words

given the predefined target of data mining which is uncovering the hidden valuable information in the data bases, which was represented by the old, uncommon name of the data mining field, Knowledge Discovery in Databases.

This led us to another question which is what are the data bases that we as software engineers use for our own work?

These databases called software repositories such as source control systems, archived communications between project members, and issue tracking systems used to help manage the progress of software projects. Hidden information in these repositories can benefit

  • The maintenance of software systems.
  • Improve software design/reuse.
  • Empirically validate novel ideas and techniques.
  • Predictions about software development.
  • Planning of future development project.
  • Understand software development in real practice.

The field that concerns with this area called Mining Software Repositories.

But, is this the only way data mining can benefit software engineers in their work? No, there is another way called Software Mining. Which I will talk about in a later post.