Difference between revisions of "SoftwareEngineering"

From SourceWiki
Jump to navigation Jump to search
Line 11: Line 11:
  
 
=What's in it for Me?=
 
=What's in it for Me?=
 +
 +
Why should you care about extensible and maintainable software?  why should invest time in creating robust and reliable code?  Well, for better or for worse, software tends to hang around.  Once a group of people have some software for doing a job which surpasses some modest level of usability for doing a job, it will tend to get re-used, regardless of whether there is a better or more efficient way of getting the same job done.  An even worse fate awaits software which fails the usability test.  It will be discarded, only to be re-invented in a myriad of time-wasting ways.
 +
 +
* If you are a PhD student or postdoc, sooner or later you will be tempted to write a quick-and-dirty hack to get a job done '''right now'''.  However, unless that job is a one-off (and hindsight gleefully points out that they rarely are), the ad-hoc nature of that quick-and-dirty hack will soon become apparent.  However, since you invested the time already, you'll persist, trying to retrofit additional functionality.  As time goes on, however, the pain inexorably increases and you will end up wasting more and more time.  [http://en.wikipedia.org/wiki/Boiling_frog| The story goes] that a frog will jump out of boiling water, but will die if the heat is increased gradually.  All of this is an obstacle to progress.  What counts is the amount of research done in a three year period.  The argument is that if you adopt a software engineering approach from the outset, you will have more to show for your time come the end of your project.
 +
 +
* If you are a PI, you will be rewarded for adopting a longer-term perspective.  You will get more bang for your buck if the tools developed for your research enterprise can be used by more than one student or postdoc and you don't end up re-inventing the wheel during each successive funding round.
  
 
=Summary=
 
=Summary=

Revision as of 14:19, 27 June 2013

The road to follow if you don't want spaghetti code!

Introduction

The name Software Engineering can mean different things to different people. Rather than enumerate all those nuances and perspectives, it's probably more useful to emphasise areas of consensus.

Probably most would agree that the enterprise of software engineering advocates the design and crafting of robust and re-usable code that is extendible and maintainable.

This is to be contrasted with software that evolves without foresight invariably resulting in ad-hoc and fragile solutions that are difficult to extend or maintain.

What's in it for Me?

Why should you care about extensible and maintainable software? why should invest time in creating robust and reliable code? Well, for better or for worse, software tends to hang around. Once a group of people have some software for doing a job which surpasses some modest level of usability for doing a job, it will tend to get re-used, regardless of whether there is a better or more efficient way of getting the same job done. An even worse fate awaits software which fails the usability test. It will be discarded, only to be re-invented in a myriad of time-wasting ways.

  • If you are a PhD student or postdoc, sooner or later you will be tempted to write a quick-and-dirty hack to get a job done right now. However, unless that job is a one-off (and hindsight gleefully points out that they rarely are), the ad-hoc nature of that quick-and-dirty hack will soon become apparent. However, since you invested the time already, you'll persist, trying to retrofit additional functionality. As time goes on, however, the pain inexorably increases and you will end up wasting more and more time. The story goes that a frog will jump out of boiling water, but will die if the heat is increased gradually. All of this is an obstacle to progress. What counts is the amount of research done in a three year period. The argument is that if you adopt a software engineering approach from the outset, you will have more to show for your time come the end of your project.
  • If you are a PI, you will be rewarded for adopting a longer-term perspective. You will get more bang for your buck if the tools developed for your research enterprise can be used by more than one student or postdoc and you don't end up re-inventing the wheel during each successive funding round.

Summary