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.