Do we apply Software Engineering principles?
( I don't want to get into the fight about what a software engineer is or what an architect is in this post. We can create one for another day :)
I am wondering if we are really applying software engineering principles in the industry?
I keep telling myself that there must be companies out there that are applying software engineering principles and good software development practices.
We all assume big companies like Microsoft, IBM, Google, Yahoo, Facebook,etc are hiring good software engineers that are applying good software engineering principles and practices
Then we look at companies like JBoss (Redhat), ThoughtWorks and organisations like Apache and we hope that they are applying software engineering principles and practices.
Maybe we assume that, because they are successful, that they must be applying the knowledge that have been gathered over the years.
Their software engineers must be applying what they learned at university or what they read and learned from good software engineering books.
I hope they are because I haven't experienced it in the last 12 years in the IT industry in South Africa.
I remember what my one lecturer told us in my honours year of computer science: "Remember what you have learned and don't forget what you have learned. Apply what you have learned and fight to apply it. The industry that you are going into is going to ask you to forget it" (Or something to this effect.......it was 11 years ago)
From my experience thus far he is 100% correct.
Most companies, it seems, are just interested in throwing a few developers together, giving them some requirements and hope they make the deadlines. If they don't succeed then they just try the same thing over and over and over.
What I have experienced so far is this:
Cool technologies are fun.........but for some reason I haven't been very happy the last few years.
I am frustrated with working on projects that miss deadlines or causes people to get so frustrated that they leave.
Yes, the technologies were cool on those projects, and yes, all of them have jumped on the band wagon and called it "Agile Development" and some of them started out using SCRUM..........but yet I am not happy.
Over the last year and a half I wanted to understand what is causing me to be unhappy.
I then made the mistake to read books like these:
I am wondering if we are really applying software engineering principles in the industry?
I keep telling myself that there must be companies out there that are applying software engineering principles and good software development practices.
We all assume big companies like Microsoft, IBM, Google, Yahoo, Facebook,etc are hiring good software engineers that are applying good software engineering principles and practices
Then we look at companies like JBoss (Redhat), ThoughtWorks and organisations like Apache and we hope that they are applying software engineering principles and practices.
Maybe we assume that, because they are successful, that they must be applying the knowledge that have been gathered over the years.
Their software engineers must be applying what they learned at university or what they read and learned from good software engineering books.
I hope they are because I haven't experienced it in the last 12 years in the IT industry in South Africa.
I remember what my one lecturer told us in my honours year of computer science: "Remember what you have learned and don't forget what you have learned. Apply what you have learned and fight to apply it. The industry that you are going into is going to ask you to forget it" (Or something to this effect.......it was 11 years ago)
From my experience thus far he is 100% correct.
Most companies, it seems, are just interested in throwing a few developers together, giving them some requirements and hope they make the deadlines. If they don't succeed then they just try the same thing over and over and over.
What I have experienced so far is this:
- No effort is placed in employing managers that understand software engineering.
- No effort is placed in learning from past mistakes.
- No effort is placed in getting teams to "gel"
- No effort is placed in handling conflict
- Scope creep is common and deadlines are not adjusted
- etc.
I am sure I can go on and on.
I am sure there are many blogs and wiki's out there that discuss software engineering.
For the next few months this will be the place where I rant and rave about my latest thoughts on the subject.
I have to be honest, I haven't looked at software engineering topics for a while.
So bear with me.....
For the last few years I was consumed by writing web applications and learning all the cool technologies in the industry :)
Cool technologies are fun.........but for some reason I haven't been very happy the last few years.
I am frustrated with working on projects that miss deadlines or causes people to get so frustrated that they leave.
Yes, the technologies were cool on those projects, and yes, all of them have jumped on the band wagon and called it "Agile Development" and some of them started out using SCRUM..........but yet I am not happy.
Over the last year and a half I wanted to understand what is causing me to be unhappy.
I then made the mistake to read books like these:
- Peopleware: Productive Projects and Teams by Tom DeMarco and Timothy Lister
- Death March by Edward Yourdon
- The Five Dysfunctions of a Team: A Leadership Fable by Patrick Lencioni
I also realised I was very sad.
Why are we not applying the knowledge gathered over the years in these books?
When I searched for these books I, of course, found many other books on software engineering/development (mmm....seems I cannot decide on the correct terms).
So why don't I see people applying it in the industry?
Are they scared? Is there too much pressure to deliver?
Do all the development managers have this knowledge?
Do all the developers have this knowledge and if they do, are they willing to practice it?
So what is wrong in the industry? Is there something wrong or have I just been unfortunate?
I have some theories but I won't share them now. Maybe I will share them over the next few months.....
It has also become clear to me that sometimes if one suggests that one should follow "software engineering principles and practices" that person becomes an outcast. People might look at that person strangely or say yes we are following it or that we are doing "agile" and yet my frustration is still there..............
I am starting to wonder if I am alone..........maybe I am a lunatic and should take a chill pill and just go with the flow.......
But I cannot do this. The books and my background prevents me from going with the flow. It makes me kick and scream against this..............
I tried forgetting about this subject. I tried reading more technical books like:
- Clean Code: A Handbook of Agile Software Craftsmanship by Robert C. Martin
- Effective Java (2nd Edition) by Joshua Bloch
- Practical API Design: Confessions of a Java Framework Architect by Jaroslav Tulach
but........for once the technical books didn't help my frustration....and....I found them sometimes saying you should do X and then the other book saying you shouldn't do X. Plus I found people misreading Clean Code and not allowing any comment in the code.
While the books above is great and technical it still didn't solve my frustration in the industry on projects.
I really wanted to understand my frustration.
I wanted to work in a company that valued Peopleware. I wanted to create such an environment.
But after much prompting and suggestions I am still frustrated.
So what to do?
I have decided to write a few blogs on the topic of software engineering and vent my frustration.
I am sure it has been done before so if you are not really into another one you can safely move on :)
I have decided that I will use the book that I am currently reading as my guide or template for my venting: Rapid Development: Taming Wild Software Schedules by Steve McConnell
So in the coming months I will blog about the chapters that interest me and use the chapters to present my views and experiences on them.
If you are interested and keen tune in next week for the start of my structured and focused venting :)
PS: Yes...I am more into Java, databases and open source and will still one day write my own database engine.......but for now let me vent on software engineering.
Also if you have any good blogs or web sites to share on this topic, please do.
Disclaimer: I have worked with good project mangers, software development managers and architects.........but they have only been a handful...and they are the exception rather than the rule.
Comments
Post a Comment