Do you remember: software development is engineering?

Preamble:


Nevertheless I don’t have desire be “old man who is grumbling constantly” I have to say several things regarding software development. From my point of view today’s major problem - engineering is disappearing from the development. Many modern projects skip analysing and designing phases. Designing is replaced with selection one of well known technology: Spring or/and Web Service or/and EJB or/and Servlet or/and Hibernate, whatever. What happens if medicine service will follow the same way? Are you satisfy if a doctor open a thick Patterns Tutorial to find a right pattern to be applied in you case skipping individual investigations or examinations ? What about Aspirin as a kind of medical generic solution ? :)

Process of development is more and more like tax counter work: big amount of specifications and other factual information. Projects are garbage of all known technologies and patterns. Just to be. Projects papers say identical words: flexible, generic, highly configurable. I think well known “Hello World” application has to be implemented as an EJB deployed in distributed environment to be up-to-date current tendency. Does it change “Hello World” application nature ? :)


Let’s take a quick look at “magnificent” Eclipse platform project, as an instance:


  • Eclipse is significant step towards new pluggable architecture ruled under OSGI. Sounds good, before you dig it dipper. Have you ever try to take Eclipse and cut it to your needs? I have tried to do it, everything I would like to have is Java source code editor (editing, auto completion, code navigation). It was impossible to decompose plugins to aim my purpose since pluggable is just a word which costs nothing. JDT (Java Development Tools) plugins are not plugings. Basically its are parts of one big system bound by cyclic dependencies. As rule removal of a part makes whole system unworkable.
  • Another core thing of Eclipse is SWT (Standard Widget Toolkit). The purpose is to have alternative to beat Java SWING/AWT. The result is primitive Windows-like API. As a “bonus” you have to care about resources releasing ! Of course hight level SWT JFace makes life much better, but it likes somebody tries to vanish terrible sport on the wall hanging a pretty picture. Nonetheless the “pretty picture”, it kills famous Java features:
    • It is not easy to port to another system. Written once to be run everywhere is not that case.
    • You loose garbage collector and have to care about system object releasing even if a created object is primitive SWT Color class.
    • Loose OOP paradigm. SWT is procedural programming around Win32 API where clasees are just wrappers (who remembers Microsoft Foundation Classes can catch my complains easier).

From historical point of view Eclipse is successor of IBM Visual Age project which failed. One of the reason why it failed was IBM tried to bring own terminology and methodology for well known and shaped Java World. People just could not understand why the ordinary things had to be renamed and repacked under new IBM standards.


Eclipse is just one of the popular project which is good to illustrate situation. There is nothing personal. Eclipse can be replaced with JBoss (or software nuclear bomb MySQL + JBoss) or WebSphere or something else. For sure some of you have been irritated reading criticism of these “holy products”. Eclipse is pretty thing just don’t dig too deep. Sometimes the best option is to be free from knowing what you are eating and trust to what vendors have promised you:


What was suggested

What we are eating in reality :)