Software Education in the 21st century


It is unfortunate that today’s software practitioners are put at such a disadvantage by spending four years of their lives studying things that are totally irrelevant to creating software (i.e. a BS in Computer Science).  I have yet to use any calculus in my career.  Discrete Mathematics was also a total waste of time.  P = NP is nifty, but not really relevant to my profession.

That is why there is such a brazen turn against the term software engineering.  This is where things such as the Agile Manifesto come from.  It is the pent-up frustration of software developers finally saying “ENOUGH”!  I want to get things done, I don’t feel like studying so much theory that I forget why I started Computer Science in the first place.

This era in time is analoguous to the late 1800′s in which established universities such as Harvard, et. al. were still teaching Latin and other useless subjects.  What came out of this was MIT, all the A & M schools, Virginia Tech, Texas Tech, etc.  Universities that actually prepared there graduates for the real world.

The big universities are so large that they cannot be turned quickly and today’s software profession changes every month.  A new model of education needs to be developed lest these big university programs are replaced.  There is a vacuum right now for certifying and educating software developers.  Either universities need to change, and change quickly, or the industry will find another way.   But time is running out….

About these ads

About Leonard Woody
Software Engineer

3 Responses to Software Education in the 21st century

  1. Yaser says:

    That’s an interesting article actually and I agree with. I remember during my M.Sc. in 2007, I had a question on the Software Engineering course exam (Comprehensive Exam) that says: “Put a complete plan/syllabus for B.Sc. students?”
    At first I said that’s an easy one and I started writing. Once I finished, I looked at my answer and I saw that I have written the same thing that has been taught over the 10 past years and I asked myself, is this what Software Engineering is all about? My was no, and I had to twist things a little, so I added another Section and I called it “Modern Software Engineering” which included the following subjects:
    1- SOA.
    2- Component-Based Architecture.
    3- Mobile Software Engineering, at the moment I finished writing those, I realized, that’s no modern Software Engineering, but couldn’t put another name having limited time to finish the exam.
    Can I also consider Cloud Computing as part of Modern Software Engineering? How it will be handeled? Client side (End User) or Server side (Partner) ?
    After a while, I realized that there is no such a thing called Modern Software Engineering, because from what I see and my experience, the Software Engineering Tactonic Plate is shifting all together to a different world where we deploy our experience and lessons learned from past projects. This means that the shift will continue to happen and maybe never stop as there is always a need/way to improve every aspect related to Software Engineering, taking into consideration the rapid changes in technologies.
    That’s a really good topic you have mentioned it and I would like to hear your opinion if you don’t mind.
    Thanks
    Yaser

    • Yaser,
      Thanks for your thoughtful response! I agree with you, to an extent. I think there is a kernel of best practices that all software engineers should know. Things like….

      Wow, you might just be right! I was going to say the Gang of Four patterns, but to be truthful, even those have changed; especially since some (e.g. iterators) are already incorporated into programming languages. The SEMAT group is trying to define a kernel of best practices and I am eager to see what they come out with. Having participated in the definitions track of SEMAT, I can say that it is not an easy task.

      I recently bought a book entitled, Landmarks in American Civil Engineering. It is interesting to note that many of the great early civil engineers had no formal education and learned everything they needed to know from being an apprentice on past projects. It took 50-100 years before formal programs started to pop up, the first being at West Point around 1820. In fact one of the biggest projects, the Erie Canal begun in 1817, is often call the first American school of Engineering (Schodek, p. 13).

      So, in conclusion, maybe we have to wait for more best practices to evolve over time. But, I am impatient and hope to be part of the pack that leads software engineering into a more definable, respectable profession in the near future.

      • Yaser says:

        Leonard,

        Thank you for your reply. I agree, we need a kernel of best practices to help us drive through the software world and I appreciate the work and efforts the SEMAT Group putting to draw such bold lines that for sure will help alot. And I can see how such bold lines can help, for example,take the works of the “3 Amigos” in the Object Oriented field, it just provides solid building blocks and concepts that help us make software.
        But, still, there is a huge gap between such building blocks and the technology. Yes I know that technology is built on top of these building blocks but the technology is growing much larger and faster, leaving aside, vendor-specific technologies and standards.
        I can think of one example, related to Internal Software Quality Attributes. In the Software Engineering, we have many Software Metrics for the internal attributes, but we it comes to practically applying them to C#, we would face alot of issues, my concerns would be something like:
        1- LINQ, how to measure it’s complexity? how much they affect maintainability?
        2- The introduction of dynmaic and late binding, maybe new mechanisms to measure the metrics?
        3- Software Factories, Still not adopted well, do they actually do what they are supposed to do?

        However, as you said, we have to wait until the kernel is well crafted. Maybe then we can see where do we stand from a software engineering perspective.

        Thank you for listening!

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

Follow

Get every new post delivered to your Inbox.

%d bloggers like this: