Welcome to the software development process and methodologies course.
Kevin and I will be teaching this course.
My name is Praveen and I am very excited to be one of your instructor for this course.
I am an adjunct professor at University of Minnesota,
and I have been in the software industry for more than 20 years,
currently working as a consultant in the industry,
helping organization and teams get better developing software.
I also want to welcome you to our course.
My name is Kevin Wendt and I am a teaching specialist in
the Department of Computer Science and Engineering here at the University of Minnesota,
and I am currently working on my doctorate in Software Engineering Education.
I have worked in the industry but now I am in my dream job, teaching Computer Science.
Well, before we learn about software development process and methodology,
Kevin why should anybody learn about software development process and methodology?
Well, that is the big question.
Software Engineering is one of our most complex things that humans have ever done,
and that includes all other types of engineering.
Civil Engineering is hard.
Civil Engineering in software is harder.
Think about building the Hoover Dam.
It is an incredible thing. It is an incredible amount of work.
But if they got half way through building it,
and they saw a huge crack in the concrete,
they would be able to identify and fix that.
And if it was completely done and water were flowing straight through the middle,
people would know it is not working.
The thing about software is that, it is intangible.
We cannot see it, we cannot see when we have made mistakes;
and it is hard to see for sure that it is not working right,
especially at the grand scale.
And just to make it a little bit harder.
Anything we do to help us see that it is working right,
could be wrong itself.
If the program is wrong and the tests are wrong,
we do not even know there is a problem.
That is what makes following engineering process so important.
We have a lot of what I call codified common sense.
Of course I would do that. It makes sense,
it is almost obvious.
But even if you know you should do something,
when you are dealing with such a massive endeavor,
you could still miss things.
Not due to carelessness or negligence but just because it is impossible to keep
everything in your cognitive model when dealing with something this complex.
And that is why it is so important to learn about the process and follow it.
It gives you the roadmap to success.
You will not use everything we teach you every time.
You may not follow any of the software development life cycles as we present them, ever.
What you as a software engineer will do,
is take these templates,
these plans, these processes,
and make engineering decisions necessary to adapt them to your needs,
to your project's constraints.
But that is not very "engineer" of me.
What about cold hard numbers?
Praveen, there has to be statistics on this.
Well, there are. Actually, Standish Group of Chaos,
they release a report every year,
and in 2015, they reported that about $81 billion are wasted in canceled projects.
And they have another stats like in 2015,
19% of the project failed.
That means that either the project was canceled before it could finish or,
project was finished, but people did not find use of it.
So, one in every five project failed.
And if you do not believe the numbers,
there is a website called Catalogue of Catastrophe,
and the link is here, where, by year,
they have listed all the projects that failed in those years.
And they were major project failure that everybody knows about.
And even in my experience,
I have similar experience that very few projects
really reach the business outcome that organization is looking for,
and I am sure you have a similar experience, Kevin.
Can you share your experience?
I do. Two out of
the three multimillion-dollar projects
that I was working on when I was in the industry, they have all failed.
One of them failed in requirements,
but the other one did not fail until Beta rollout,
where it was actually with customers.
A multimillion-dollar project failed once it was in the customer's hands.
So hopefully, you understood the importance
of learning about software process and methodologies.
Hopefully, this will help you,
your team, your organization, and the industry.