Pages

Thursday, 19 May 2011

A great career in Software Engineering!

Is Software Engineering a great career?

Answer is Yes, but it depends on you, it depends on how you make it. If you are prepared for what it takes to make it big in Software Engineering, you can truly make it big.

How to prepare for Software Engineering career?

To know that, we need to see what makes Software Engineering as a great career! Let us take a closer look.

For many outsiders, it might be charm of global work environment or magic of making a dump machine come alive. For many newcomers, it is often technical challenges and financial benefits. For practicing Software Engineers in the world of software development business, it is much more.

Software Engineering definitely involves software development, and software development involves programming when we look from a technical perspective. But business of software development, and experience of a typical Software Engineer, is not just that. It involves dynamically balancing various forces that comes into play in software development business. That include Technical Complexity but it is only a proverbial tip of an iceberg.

A closer look reveals much more.

1. Technical Complexity 
There was a time when programming was considered to be synonymous to software development. It might be so, for many outsiders even now. However, those who are actually in software development business would vouch that it is only part of the story.

We deal with multitude of technologies like database, application server,etc, knitting them together everyday. Irrespective of all learning done beforehand, in isolation, the real challenge is in  actually working with these technologies, knitting them together

2. Changes in Technology 
Many of technologies that we work with now were not existing a decade back. For instance, smartphones are popular but these were not in popular existence.  Again, Software as a Service (SaaS) is a relatively new concept and many of software development now are on these lines. Interestingly, many of these are themselves evolving and many more are yet to come

3. Domain Knowledge
As we get into Software Engineering career, we realize soon that technical knowledge alone is not sufficient. For instance, a programmer  developing software for healthcare industry is expected to have basic knowledge of healthcare business, to have any meaningful discussion within the team as well as to develop something of value.
 
4. Requirements Churn
Another reality that one can hardly ignore in software development is that requirements keep changing. Quite often, we end up revisiting design and making changes to software. These changes are critical for customer to use software effectively and must be incorporated within specified time.

5. Changes in Perspectives
Software  development is a team work. That is, different people work together to develop and deliver software to customer.  Different people play different roles. For instance, someone in the role of Business Analyst is responsible for interacting with the customer, understanding their requirements,  and communicating back to the team. Programmers are involved in doing necessary programming,  which is required to construct software. Project Manager is responsible for overall progress of software development project. There are many more roles involved in any non-trivial software development project.

Software is a construction in mind, and different people like customer, end user, Business Analyst, Project Manager, etc have different perspectives. Work can progress smoothly when all of them work together, communicating with each other and balance difference in perspectives for overall good of the project

6. Collaboration in Context
Days are over when software development is done by one or two people. Many of the software development project undertaken these days involve tens, hundreds or even thousands of people working together. In fact, many projects involve people physically located in different locations across the globe. There may not be any other industry that calls for collaborative teamwork of people of diverse skills to the scale that software industry demands. This is possible, and accomplished, as web technologies in its present state helps people across the world to communicate effectively with each other, in the context of project.

7. Inherent Complexity
It may not be obvious to an uninitiated but its importance can be guaged from the fact that complexity inherent in software development is discussed many times over in the industry and academia. It was discussed by Frederick Brookes in his classic paper 'No Silver Bullet - Essence and Accidents of Software Engineering' decades back. It still remains a formidable challenge, much more formidable than technical complexity

8. Software as a Business
It is no longer required to assert that software development  has emerged be a major profession, and a serious business. It is a reality that we find in our everyday life. Important point here is that, it is the strong base of satisfied customers, rather than the technical excellence in dealing with technical challenges, that leads to successful business. Obviously, this cannot be responsibility of only Project Manager who is overall responsible for project success, Business Analyst who interacts with customer, or software quality and testing professionals. It is a collective responsibility of every one in the software development project

Can one learn in advance, or can we need to learn the hard way. It comes, by experience. It comes, working with the right team. It comes, learning by practice. Interest? Visit ASSIST Academy Career Courses.

Wednesday, 18 May 2011

Skills for a successful Software Engineering career

Software Engineering is a much sought after profession. It is also a profession where changes are drastic and competition is getting to be very intense world over. In this context, it is interesting to what it takes to have a successful Software Engineering career. As we takes a closer look, it emerges that Software Engineering is a profession that requires multi-dimensional skills for a successful career.


What is obvious are technical skills. These involve programming languages, technologies involved, Software Engineering tools used in the peoject, etc. These vary specific to project, and therefore it is important to have very good technical skills on popular languages, technologies and Software Engineering tools

However, these may help you to get going but in itself are not sufficient. You need to gain domain knowledge as well. For instance, it is important for developers working on a healthcare software to be familiar with healthcare business.

While importance of technical skills and domain knowledge are somewhat clear, there is yet another dimension which may not so obvious but very critical. That is, software development is a teamwork. Work delivered with a good domain knowledge and technology skills get consolidated only when it is complemented with soft skills; it helps to knit together the team and ensure that customer actually gets value delivered. This is largely a greenfield, an area which is not given sufficient attention, in general. There are plenty of 'generic' soft skills trainings but these do not help much in reality as it depends heavily on individuals to translate and adapt soft skills to software development business.

Can one acquire technical skills, domain knowledge and soft skills all in one go? That is one of the a unique value proposition of Career Courses offered by ASSIST Academy

Monday, 16 May 2011

Importance of Training, in Software Engineering!

You would have noticed that critical skills that helped you excel earlier in your profession, no longer does. This happens, time and again. Technology is changing rapidly every day. That is all the more true in case of a profession like Software Engineering.

Well, we all know that. It is not that we do not want to learn new skills. We are also aware that it is critical to learn. Fact is that we hardly get any time to learn a new skill as we are busy with daily work pressure.

How do we bridge the gap? That is a good training would help. The challenge here is to choose the right one. The white paper 'The value of training' from IBM helps in making the right decision

Sunday, 15 May 2011

Skills for 21st century

Everyone would like to excel in their chosen line of specialization.

Often, it is your skills that make a difference. The right skills help you excel in business and work environment.

It is elementary, and everyone knows. Yet what makes it complex is that key skills that help you stand out changes. What worked earlier no longer does, or rather does not reward as it used to. Well, world is changing even as we are seeing it.

What are they for now?

Thomas J. Bittman, VP Distinguished Analyst, Gartner Inc, has identified seven skills as below in his blog Skills for 21st century

Technology Skills
1. Information Literacy
2. Media Literacy
3. Information Technology Literacy

People Skills
1. Global Literacy
2. Flexibility & Adaptability
3. High-Level Knowledge Skills
4. Communication & Collaboration

An interesting video on Software Engineering Career

Saturday, 14 May 2011

Getting to know Collaborative Application Development

Ever wondered what is Collaborative Application Development is?

Listen to this presentation on IBM Rational Team Concert to know more about it.

Wednesday, 11 May 2011

Process + People + Tools = Success

Success! A word makes all of us feel comfortable and thrilling.

In the current software development world, unfortunately, it is happening very less. It does not mean that the software development activities that we are doing is waste or without success. There are lots of over runs by means schedule and money. If would like to correct this we should have the right formula in the place.

Right people doing the job with the Right Process using the Right tools. It is very nice to listen. Many a times it is very difficult to follow where we go wrong. We often give undue importance to one of the three elements. Or otherwise, we use to have a blind conviction to be successful with only having one of the three elements. But in the real sense, only a perfect combination of the three can bring success.

Though the software development industry is so matured, still we live with the myth that tools can bring sea of change to the environment. Yes. It is partially true, if it is properly identified and used to automate the right activity in the process. The expectation levels of automation has to be controlled by a real deep look into the tool as well as in the process element (activity) which is getting automated. When we does this, you will come to see, very significantly the methodology behind the tool is more important.

Success is assured only if we are able to choose the right set of process elements, identified activities which can be automated with the right set of tools. Of course, the right set of people enabled with the process and methodology along with every tool and automation.