jueves, 26 de febrero de 2015

The two sides of Pi

Raspberry took the world by surprise when it first introduced the Pi; a "complete", small and inexpensive computer.

However, it was really nothing new. Maybe most people didn't realize (or didn't want to) that you do already have a fully-fledged computer on your pocket. In fact, latest ARM SoCs are as powerful as an entry level desktop PC and, in the graphics side, manufacturers like NVIDIA with its Tegra X1 are getting there with previous-gen gaming consoles. In fact, as new-gen haven't evolved that much in terms of graphics, it's most likely the gap will be closed around mid-life for both PS4 an Xbox ONE.

The fact that you have a PC in your pocket is more true when it comes to Atom-based phones. You do really have a (traditional) PC-architecture CPU in your phone!

The best thing about the Pi, from my humble point of view, is not that it's a cheap (underpowered) PC, but the development community around it, which drove a development fever.

It's not the first time we see this. We have also seen it in Arduino, mobile apps and webpages before them. From time to time it comes a new technology or a new approach in old technology that makes developers and non-developers jump on the trending bandwagon which has two sides: fast evolution of the technology is one and intrusiveness and bad results is the other. In the 90s, for example, everyone with a PC and Frontpage Express became a web-designer/developer, even if they had no idea about design, both aesthetically and technically. This helped the web to grow extremely fast, but sometime under a pretty face, a technical mess was hidden.

So, as time passed by, a part of the business was kept in hands of non-prepared "developers" that had some special interest in computers and started investigating how to do things (which is good), but never studied IT (which is not so good if that's your intended job). However, time has come when IT is so deeply bonded to our lives that some Governments and institutions want computer programming to be a subject like physics or history.

Nowadays, we have a set of great tools for this, like Scratch, drag-and-drop interfaces for Arduino, high level-C libraries for Pi... But, again fmhpov, this can make a very distorted idea of what Computer Engineering and software development is: just moving blocks around and things work magically.

We have the experience that most of the times software factories don't work. And I don't mean software development centers, but factories in the classic way, where developers have a prefect specification and thus, can even be replaced by monkeys with a keyboard. Most of the times, developers face implementation problems that are not covered in docs and tech diagrams: datetime formats and zones, database transactions, client-server communications, sessions, etc. are everyday issues that arise during development and developers must deal with in an intelligent way. At the end of the day, a developer is a problem-solver, not a code-writer.

I myself have seen code with "database results" hardcoded, because the development team had no idea how to make it work, so they did it to "buy some time". This is the danger of setting the development standard too low and undervalue what developers must be.

Coming back to teaching programming in schools, it won't teach kids neither how things are really done, nor how computers work, but paint a world where developing is like playing, devaluating even more the image of IT professionals and with the years will come the moment where everyone has "developed" at school.

It's been a long fight we, Computer Engineers, have loose to avoid intrusiveness. Maybe easily achievable first-results and the use of a single tool for creating and consuming are to blame. Most of us have lived situations where, when telling people we are Computer Engineers, someone says "my nephew does webpages". It's like saying "my nephew is a butcher" when talking to a surgeon...

Anyway, the Pi is a great device for fast device prototyping. We have used it in the Armiga Project and it helped us improve the product in a very tight timeframe and are willing to put put our hands on the new model :)