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.

Sunday, February 3, 2008

Software Development Process Automation

Few days ago I attended a session here in ITWorx called Engineering Processes. It was a very good session by an excellent speaker Alyaa Ali from the process improvement team.

I confess that before the session I wasn’t know enough and clear information of the CMMi and its parts and how we apply it, which have changed – thanks for Alyaa – after attending this great session.

But what I want to talk about now is a different thing. I got an idea during the session and I can’t stop thinking in it, so I’m writing it now to know your comments about it.

Let’s start with a simple question,
why clients want software at all? Why they pay a lot of money in it?
As the question is simple, the answer is simple too. In abstract, as we learned in faculty, clients need software to automate their current ordinal paper based system. I know that this is a very abstract answer – which may you have comments about it - but can you put it in mind just for a while.

Back to the Alyaa’s great session about Engineering Processes or exactly about CMMi.
She shows us many documents that are used during the software development phases.
Shoe also mentioned a lot tools that is used through different phases by different members having different roles.

This led me to think about the software development from a little different perspective, which can be summarized into the following points:

  • Software development all in all is an industry like any of our clients’ industry.
  • We use a lot of documents in our work.
  • We have many roles in the software development process, having different view points, having different activities in the process.
  • Software development is a complicated process that is hard to manage.

    All these and many other – which I can’t list all of them now – have led me to a final big idea.

Software development process needs an automation system that automates its activities, and achieves the goals that any automated system targets in its life environment.

I know it looks a crazy idea and unfeasible. But I think it worth thinking and worth a trail of us.

Finally remember that all human achievements, begin with ideas that looks unfeasible and some times begins with dreams

Friday, February 1, 2008

The birth of a new blogger

This is my first blog post, and I have many things to say but I will talk about one thing which is how this blog have started
But before that let me confess that I have different ideas about blogs in all.
These ideas have been accumulated over the time and extremely affected by the blogs that I have seen and read in my daily internet use.
These ideas can be summarized into few points:
  1. The blog should not have only my personal information and memories
  2. In the blog I should represent myself to the world, represent my ideas and opinions.
  3. The blog should be different of other blogs.
  4. The blog should aciqure reader and interest them, and if it fail in that, it should stop and leave the space for the capable people.

This was my own ideas and it make me think too much each time I think in making my own blog.
And every time my thinking led me to the same result, I'm not capable to make a good blog which meets the above mentioned ideas. But I always have ideas and make researches, which I want to share it with other people but there were only one man who I was sharing all my ideas with him. He was the victim of a long years of friendship (True he is my best friend, he called Khaled Mahmoud ). I was always sending him my latest research ideas to discuss it with him. But three days ago I sent one of these mails - I share with Khaled - to another great man called Mohamed Karam.
All my words can’t give you the true picture about Mohamed Karam, but I think it is enough for now to say that Mohamed Karam is the Lead Technical Architect of ITWorx, the biggest professional software services company in Egypt.
Mohamed replayed to my mail with one main thing, he said that my ideas are interesting and I must have a blog containing these ideas.
This replay has beaten my old idea that I’m not capable of writing a good blog. And this blog is the result
This is the story of this blog.
Finally I would to like thank Mohamed Karam for his encouragement that give me the courage and confidence to start this blog. Of course I would like to thank Khaled Mahmoud for his support and patient to read my mails all during our long years of friendship.