Tuesday, February 21, 2012

The Assignment and MIT Sloan Tech Review

Neary 6 years ago I was tasked with implementing CMMi with one of the organizations. I know for most tech people, it sounds idiotic - but i believe discipline in any area is essential to succeed repeatedly & keep learning continuously. If we approach CMMi with that perspective, it becomes an aid rather than an impediment.

Most of the places, the process guys are non engineers who want power over engineers who have brains 100s & 1000s times better than those process guys. To feel superior process guys end up creating constitutions in the name of process improvements that mandate laws to measure times the engineers spend in taking leaks.

Anyway the current thing is not about that. Since previous post was about what is good software, possibly it is nice to know how to build good software.

I had the pleasure to work with one of the most brilliant guys (Sanat Pai Raikar -almost 6 years junior to me). To get him upto speed following was the assignment i gave;

"Please do read the following:

Software Engineering a Practitioners Approach – R.S. Pressman
OOAD with Applications – Grady Booch
Mythical Man Month – Fredrick P. Brooks
Age of Spiritual Machines – Ray Kurzweil (to understand law of accelerating change/ returns, entropy in system etc.)
The quotes at the beginning and end of each of the chapters in the Java Programming Language book – James Gosling and Ken Arnold

All assignments will be done individually first, then revised if necessary with consultation/inputs from Anuroop and Krishna. Then these will be presented to general audience.

Assignments:

1. Software
What is software?
What is good software?
What are the characteristics of good software?
What does it take to build good software?
What are the measures to tell whether software is good or bad?

2. Software Engineering
Overall perspective and Answer the following

What do we mean by software engineering?
Who does software engineering and what are the general roles?
What are the general myths and how can we overcome those myths?
Why should we focus on “engineering aspect”?

3. Software development lifecycle models

What are SDLC models?
Why should we have these models?
What are the different SDLC models and what are their characteristics?
What is the applicability of these models? Or when should each model be applied?
How can we determine which model to be applied?
What are the stages in each of these models?

4. Focus on various stages in SDLC
a. Planning and Project management
b. Requirements Gathering and Analysis
c. Design
d. Implementation
e. Testing
f. Maintenance

5. CMMi Focus
Understand CMMi and its applicability to software development process.
(Read the CMMi spec for this)
"

Incidentally today I was reading an article MIT Sloan Tech Review

http://sloanreview.mit.edu/the-magazine/2012-winter/53208/winning-the-race-with-ever-smarter-machines/

It's always nice to understand the fundamental forces that drive evolution.

Will the exponential growth in computing power continue?
What are the limits of the computing power in terms of problems it can solve?

Think.

Friday, February 10, 2012

Good software & a Good software engineer

1. What is good a software?
2. Who is a good software engineer?

I asked these to a set of guys who had wanted to learn about software project management. The simplicity of the answers is similar to the one about happiness. Thus it also resonates with the idea that the most important/fundamental things are most simple; yet, many of us are unaware of those answers.

If I don't know what good software is; how could I develop good software?