Thought Leadership

Reinventing the wheel

I have always been interested in science and took that route through education, ending up with a science degree. I guess I am rather left-brained and certainly tend to look for a methodical way to do something, as opposed to an intuitive one. Having said that, I enjoy photography, which is something of a fusion of science and art, and I am told that I have a “good eye”. I also enjoy hearing, seeing and generally experiencing other people’s artistic endeavors.

I have often wondered whether scientists – or technical people generally – might learn something from the approach taken by artists …

A scientist doing research or an engineer designing a product follows a clear procedure. They will carefully review all the published work on the subject and/or look at existing products so as to avoid repeating work done by others – they do not want to “reinvent the wheel”. This seems to make sense and we accept it as being the right way to do things, but should we reconsider?

An artist takes a different approach. If they wanted to make a painting of a bridge for example, they would not look at every painting that they can find, in order to make sure that they were doing something different and better. They might even avoid looking at others’ work so as not to be influenced/corrupted. There is a risk that they will make a picture that looks exactly like one already in existence. But the dream is that they will produce a painting that is unique and individual to the artist.

Maybe we should develop products like this. Start from scratch and try to design a solution to the given problem. OK – nine times out of ten the result will be no different from existing products. But, once in a while, a completely original approach will emerge and something new and novel will result. Would that be worth the investment?

The idea is not totally new. I, for example, wrote a real time kernel a few years back. Its functionality was specified by the documentation for an existing kernel, so mine was a “clean room” implementation, as I never saw the original code. Was my code different? Almost definitely. Was it better? That is a good question, which was never investigated.

Novel approaches can go wrong. In the early [pre-Windows] days of the PC, a vital program was the Lotus 123 spreadsheet. The vendors [IBM by then, if I recall correctly] introduced an entirely new kind of spreadsheet, based on a new paradigm, called Improv. As users adopted Windows, they flocked to Microsoft Excel…

Colin Walls

I have over thirty years experience in the electronics industry, largely dedicated to embedded software. A frequent presenter at conferences and seminars and author of numerous technical articles and two books on embedded software, I am a member of the marketing team of the Mentor Graphics Embedded Systems Division, and am based in the UK. Away from work, I have a wide range of interests including photography and trying to point my two daughters in the right direction in life. Learn more about Colin, including his go-to karaoke song and the best parts of being British: http://go.mentor.com/3_acv

More from this author

Comments

0 thoughts about “Reinventing the wheel
  • It is true, indeed, that the idea of starting from scratch is not totally new.

    We should all do this – at least in the early part of a design; I thought, perhaps naïvely, that we all did! Starting from what you have, rather than what you need is always a big mistake.

    Re-use has its place, but nothing really new can come out of pure catalogue engineering – at least, not if we put the catalogue at the focal point of our thinking.

    In software, a component, to be viable for re-use, must:

    (a) represent a substantial of thought and/or work by its provider (i.e. a worthwhile time saving for the user – particularly one with no current experience in that area).

    (b) be sufficiently general in nature to require minimal adaption (ideally none) for its specialised use.

    (c) not be so weighed down by catch-all features (to make it general) that it unnecessarily burdens or compromises the system into which it is incorporated.

    So, to my mind, a kernel or a graphics library, for instance, can, with care, be a good candidate for re-use. On the other hand, relatively straightforward C++ classes, for example, are not good candidates, whatever the OO purists might say. It is often much less trouble to re-invent such things than it is even to search for a ready-made approximation – even without considering the effort required to understand and adapt that “solution” once it has been tracked down.

    Over several decades (possible since the Internet made searching easy), I’ve noted a trend – not just in engineering – away from creativity and proper critical thinking to an assembly-line mentality. I’m doing whatever I can, in my small way, to reverse this trend!

  • Very fair points Peter. A lot of modern programming does seem to be just a matter of stitching stuff together.

    One of the attractions of embedded, for me, was always the possibility of starting with a blank canvas, which was rarely an option in other contexts.

  • Actually artists don’t work that way. Instead we study very closely the way others have painted bridges. It always turns out to be unique even if you try to imitate. In art one builds upon the past. Art is a very technical field, engineering derives form the technical endeavors of artists and weapon makers.
    Interesting point of view, though.

Leave a Reply

This article first appeared on the Siemens Digital Industries Software blog at https://blogs.stage.sw.siemens.com/embedded-software/2012/06/29/reinventing-the-wheel/