Freitag, Mai 14, 2010

Superhacker

Es gibt dieses wunderbare Bild der Hacker! Ich meine die Geeks, nicht die Kriminellen. Hacker leben mit dem Computer, sie scheinen eins mit ihm zu sein. Computer und Hacker gehen eine Symbiose ein. Hacken ist Leben, Leben ist Hacken. Menschen und soziale Kontakte sind eine wunderbare Sache -- sofern man mit ihnen im Chat oder in anderen virtuellen Welten kommuniziert und sie dort trifft. Hacker sind mindestens 10x produktiver als normal sterbliche Programmierer. Und Hacker sind nicht nur produktiver, ihr Code scheint nicht von dieser Welt zu sein. Kein Mensch versteht die Kryptik und die Gedankengänge im Code eines Hackers.

Kurzum, wir bewundern die Hacker. Ein bissel hätten wir gerne von ihnen "vererbt" bekommen, wir, denen das Programmieren nicht ganz so locker von der Hand geht.

Gibt es die Hacker überhaupt? Oder sind sie ein Mythos? Ja und nein.

Es gibt Menschen, die das Bedienen ihrer Maschinen gründlich erlernt haben. Die 1000 Tastenkürzel kennen, mit Emacs arbeiten, alle Unix-Befehle kennen und im 10 Finger-System schreiben. Die Arbeit geht rasend von statten, wenn man diesen Tastaturakrobaten zuschaut. Fenster wechseln so schnell, das man glauben könnte, der Monitor habe einen Wackelkontakt. Das so ziemlich überflüssigste Interface für sie ist die Maus.

Dann gibt es welche, die mit den vielen kleinen Helferlein und Tools umzugehen wissen. Da wird Windows rasch gescripted, ein Makro programmiert, ein Makefile konfiguriert, im Hintergrund laufen inkrementelle Backups. Das sind die Automatisierer. Denn wozu von Hand machen, was eine Maschine besser, alleine und vor allem viel schneller erledigen kann. Für sie ist Linux die Idealwelt. Aber sie ziehen auch eine Freude daraus, dass sie dieselbe Magie auch mit Windows hinkriegen. Und mache von ihnen haben sich auf die Zauberkunst mit Excel spezialisiert.

Und es gibt die, die das Programmieren als Handwerk gelernt und verinnerlicht haben. Design Patterns sind für diese Menschen ein Klacks. Standardalgorithmen und -probleme können auf Zuruf während eines Telefonats runtergezimmert werden. Die Handwerker kennen ihre Bibliotheken und APIs in- und auswendig. Für sie ist Eclipse eine mächtige Schaltzentrale und die vielen offenen Fenster sind auf mindestens zwei Riesenmonitore verteilt. Sie haben mindestens genauso viel im Blick wie Börsenmarkler.

Kennen Sie die Sammler? Sie sammeln Programmiersprachen und konzentrieren sich natürlich auf die exotischen Exemplare. Java und C# hat schließlich jeder. Sie Sammler sind oft auch liebenswerte Spinner. Sie können einem stundenlang begeisterte Vorträge über ihre neueste Entdeckung halten. Die neueste Sprache ist immer eine Steigerung zu dem, was letzten Monat noch aktuell war. Sie schreiben immerzu kleine Programme, manchmal auch etwas größere, und zwar in Sprachen, die keiner versteht. Aber sie kennen sich aus. Im Grunde gibt es für sie keine Probleme, sondern nur falsche Programmiersprachen.

Tastaturakrobaten, Automatisierer, Programmierhandwerker, Sammler -- sie alle können etwas, was der Otto Normal-Programmierer nicht kann. Es sind Künstler, Handwerker, Besessene. Sie sind zweifelsohne jeweils auf ihre Art produktiver. Sie lösen Probleme geschickter, schneller und überzeugender als Andere. Manchmal nennen wir sie Hacker, besonders dann, wenn sie mehrere dieser Fähigkeiten vereinen. Aber sind das wirklich die Hacker?

Ich habe ein ganz anderes Bild vom Hacker; ich will sie mal "Superhacker" nennen. Manche von ihnen sind Tastaturakrobaten, manche Automatisierer, alle beherrschen das Programmierhandwerk eher besser als schlecht, und einige sammeln Programmiersprachen. Aber keines dieser Talente ist entscheidend. Superhacker denken! Das ist ihr eigentliches Talent, ihre eigentliche Stärke. Superhacker durchleuchten Probleme von verschiedenen Perspektiven. Sie skizzieren mögliche Lösungen. Diskutieren Ansätze und Vorgehensweisen. Sie brauchen dafür ihre Zeit. Manchmal findet sich eine elegante Problemlösung in einer exotischen Sprache begründet. Aber von Sprachen sind diese Menschen im Prinzip unabhängig. Sie kombinieren für eine Lösung Altbekanntes und Neues.

Und das Ergebnis: Brillant kurzer Code. Code, der verständlich ist. Code, der verblüfft ob seiner Offensichtlichkeit. Code, dessen Genialität seine Einfachkeit ist. Code, der wartbar ist und andere Designer und Software-Entwickler inspiriert. Code, der Zukunft hat und klare Entscheidungen für ein Design trifft.

Die Superhacker sind in der Regel nicht mehr produktiv in ihrem Tagesoutput als andere Software-Entwickler auch -- auch wenn es solche Wunder-Hacker geben mag. Das Geheimnis ihrer Produktivität schlägt sich nieder im Einfluss, den sie auf andere Entwickler ausüben. Das Geheimnis ihrer Produktivität zeigt sich in der überdurchschnittlichen Qualitätssteigerung der durch sie beeinflussten Produkte. Sie sichern Märkte. Sie sichern Zukunft.

Die Superhacker, die Denker, sind Menschen, deren Produktivität deshalb hochgradig skaliert. Über den Umweg des Einflusses auf andere steigern sie die Produktivität in einem Unternehmen vielleicht um ein, zwei, drei oder vielleicht sogar einmal fünf Prozentpunkte, im Glücksfall um 10 Prozent. Ähnliches mag für die Qualitätssicherung gelten. Darüber tragen Sie zum Umsatz und Gewinn eines Unternehmens in einem Ausmaß bei, der keinen Vergleich findet zum Einfluss eines "Normalprogrammierers". Die normalen Hacker steigern ihre Produktivität -- nicht die der anderen!

Übrigens gibt es eine etwas seriösere Bezeichnung für Superhacker: Man nennt sie auch Softwarearchitekten.

Kommentare:

Christoph Hautzinger hat gesagt…

Das Wort "Hacken" kommt doch (aus deutscher Sicht des CCC's) von "Code schnell runterhacken".

Je professioneller die Softwareentwicklung ist, desto weniger hat sie in meinen Augen mit "Hacken" zu tun - oder im Umkehrschluss: Je mehr gehackt wird, desto schlechter ist der Code.

Anonym hat gesagt…

Ich denke, ein Hacker war im ursprünglichen Sinne ein tastaturverbundener Mensch. Im Laufe der Zeit hat sich gezeigt, dass man Software aber eben nicht nur an der Tastatur entwickelt, worauf sich eine negative (Zweit-)Bedeutung des Wortes entwickelt hat.

Und: Ja, es gibt sie, die Menschen die wie von einem anderen Stern codieren. Ich staune z.B. regelmäßig über Ayende Rahien, der verschiedene (große) Open-Soure-Projekte nachhaltig beeinflusst, mal schnell eine eigene Datenbank bastelt, bloggt wie der Teufel, Bücher schreibt, und nebenbei auch noch sein auch irgendwie sein Geld verdient.

In der Tat kann man vermutlich nur dann so produktiv sein, wenn man schon mit einer sauberen Lösungsskizze an die Tastatur geht und dort auch sein Handwerkszeug prima beherrscht.

Aber ich merke immer oft, dass dazu eben auch eine gewisse Mentalität gehört, eine ständige Arbeit an sich selbst, ein ständiger Wille nach Verbesserung.

Lars

Anonym hat gesagt…

Eric S. Raymond stellt in seinem Artikel How to become a Hacker zwar nicht den Brückenschlag zum Begriff des Softwarearchitekten her, doch in einem Punkt ist er sich einig:The basic difference is this: hackers build things, crackers break them.

Kennzeichend für alle Hacker ist, dass Sie Technologien kreativ einsetzen, wie zum Beispiel eine Kaffemaschine zum Aufbrühen von Tee verwenden oder der Kaffeemaschine den Apple Boot/ Startup Sound einimpfen... Kann man sich einen schöneren Start in den Morgen vorstellen? ;)

Anonym hat gesagt…

Um noch ein klein wenig Lesefutter zu der Thematik Software Architektur/ Entwicklung und Software Engineering zu hinterlassen, sei IEEE Software's 25th-Anniversary Top Picks empfohlen.

Eine Auswahl an beliebten Artikeln aus dem IEEE Software Journal und eine gute Übersicht und Einstieg, was Software Engineering alles auszeichnen kann.

dh hat gesagt…

Eine gute Idee, diesen Link einzubringen. Vielen Dank!

Anonym hat gesagt…

Um eine bessere Vorstellung davon zu haben wie Programmierer denken und was diese Programmierer unter Engineering verstehen, wirft am besten einen Blick in die Bücher Coders At Work und Beautiful Code.

Und nun: Gutes gelingen, auf dem Weg ein Superhacker zu werden. ;)

Falk Husemann hat gesagt…

Hallo,

ein sehr interessanter Beitrag, gerade die Darstellung des Superhackers. Ich konnte mir ein schmunzeln nicht verkneifen. Aber wieso wollen Sie Softwarearchitekten einen Hacker-Stempel aufdruecken?

Ich vermute:
Ihre Superhacker duerfte das wenig interessieren, maximal schmeicheln. Superhacker suchen stattdessen lieber nach der technisch nuechtern betrachtet "richtigen" Loesung und scheren sich nicht darum, ob sie in diesem Jahrzehnt Hacker oder Architekten genannt werden.

Gruesse

dh hat gesagt…

Mir sei verziehen, dass ich mich des "Hacks" bediene, Softwarearchitekten als Hacker (Superhacker!) zu bezeichnen. Ich denke jedoch nicht, dass ich ihnen damit einen Stempel aufdrücke.