Software Engineering Vs Programming

[Original post by Anil Maurya is here – posted here with his permission]

When I was growing up, Software Engineer and Programmer seems same term to me.

Now after working a couple of years as a Software Engineer I think I can distinguish between the two terms.

Programming is a small part of Software Engineering.

Software Engineering include

Understanding Requirement
Designing Software
Organising code
Testing Software
Collaborating with other software engineers

Writing good code is essential skill for being a Good software engineer but you can not neglect others skills as they are equally important for building good product.

I read something similar in Software Engineering subject during my graduation, but none of the above make sense than. I think reading about software engineering is not the great way to learn about it instead build a lots of software and you will get a grasp of software engineering.

What text books do not tell you about Software Engineering is :

Understanding Requirement:

Understanding requirement is easy but always keep in mind that its going to change in future.
Question everything, until it make sense to you.

Designing Software & Organising Code:

People don’t pay much attention about organising code when writing software but its not healthy for software health. When Software grows old, non-organised software is difficult to take care off.

Keep It Simple

To check if you are doing it right, think with perspective of a person who does not know anything about your software. Now if you can still navigate through the software without anyone’s help than you are doing it right else you need to step back and make your software simple enough to be understood by all.

Testing Software:

Nobody can teach you the importance of testing until you realise it and it may be too late when you realise its importance, therefore its important to learn from the mistakes of others.

Like all other engineering department , software engineering is also about building product. Civil engineer design bridges, buildings and then act upon and make it happen. Similarly we design software and write code to make it happen. But the main difference is the change in requirement we get every now and than. People take it for granted that changes in software is not a big deal.

If your software is not automated tested than your software will surely break in future with all the inevitable change in requirements coming.

Collaborating with other software engineers:

Text books don’t tell you that you will be working with other people on same software. Collaborating with others is essential and you can not run away from it. Collaboration helps deliver better product if people working together are passionate about the product.

Its always better to have different opinions and healthy discussion on possible solutions.

To all Software Engineer out there, lets collaborate and make something awesome. cheers 🙂

Advertisements

About Gautam Rege

Rubyist, Entrepreneur and co-founder of Josh-Software - one of the leading Ruby development shops in India.
This entry was posted in General. Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s