15. August 2010

Entwickler Kennenlernen

Bei Startups ist das Team meistens klein. Da hängt der Erfolg des Unternehmens von jedem Einzelnen ab. Deshalb versuchen wir ein starkes Team zusammen zu stellen, das alle Entwicklungsherausforderungen meistern kann.


Am Anfang ist es sehr schwer Entwickler/innen einzuschätzen. Der eine behauptet, eine Programmiersprache zu kennen, hat sie aber nur in der Vorlesung gesehen. Die andere gibt an nur so ein bisschen rumzuprogrammieren, aber nicht richtig. Später kommt heraus, dass sie die Benutzerverwaltung für das Wohnheim als Webanwendung nebenbei gemacht hat und auch noch eine iPhone App dafür.

Und dann gibt es noch so viele Technologien. Keiner kann alles abdecken. Es ist fast unverschämt eine Web-Entwicklerin nach MFC zu fragen oder einen Hobby-Gamemodder, der gerade von der Schule kommt, nach Scrum. Trotzdem haben alle, die offen, aktiv und selbstmotiviert sind, das Potential großartige Developer zu sein.

Aber irgendwo muss an ja anfangen. Deshalb hier meine kurze Liste von Themen, die mich brennend interessieren, wenn ich jemand von der programmierenden Menschheit kennen lernen will:

1. Technologie
Wie gut würden Sie Ihre Fähigkeiten als Programmierer/in einschätzen.
Auf der Skala von:
- Thema bekannt (gelesen, gehört, Vorlesung in der Uni)
- Etwas Praxis (probiert, Übungsaufgabe, mal verwendet)
- Viel Erfahrung (Profi-Level, kenne ich ziemlich gut)
- Ausgezeichnet (Wizard-Level, könnte das Ding selber schreiben)

Vorsicht: Wizard-Level heißt die Java Runtime selbst schreiben, nicht "nur" Java Programme, den PHP Interpreter, einen HTTP-Server, einen XML-Parser, JUnit nicht nur benutzen, sondern eine alternative Unit Test Library selbst schreiben.

Java, C#
PHP, Python, Perl
andere Programmiersprachen?
MySQL
MS SQLServer
HTTP
XML
XSLT
HTML
Javascript
Javascript Libraries, jQuery, prototype, ExtJS, andere?
CSS
SOAP
REST
XMPP
Ajax
JSON
COMET
TCP/IP
Netzwerk Programmierung, sockets, andere?
Concurrency, pthread, andere Threads?
Assembler, welche?
C, C++
boost, STL
Win32, MFC, COM
wxWidgets, Qt, Gtk
3D-Engines, welche?
MS Devstudio, welche Versionen?
gcc
Eclipse
Profiling
Subversion, CVS, Git
Maven, Ant
Web-Server, Tomcat, Apache, andere?
EC2, S3, SQS
Template Engines, welche?
Web-Caches, welche?
Browser Extensions, welche Browser?
Unit Test Frameworks, JUnit, NUnit, andere?
Logging Frameworks, log4net, log4j, andere?

2. Methodik
Wie gut kennen und wenn ja, seit wann verwenden Sie:

Objektorientierte Entwicklung
Agile Entwicklung
TDD
BDD
SOLID
DRY
SoC
MVC
Refactoring
Unit Tests
Automatisiertes UI Testing
Automatisierte Integrationstests
Code Coverage Analyse
Coding Conventions
Frequent Releases, wie "frequent"?
Pair Programming
Scrum als Developer, Scrum Master, PO
Plugins für Entwicklungsumgebungen, wie Refactoring- und Coding-Werkzeuge

3. Allgemein
Haben Sie einen Computer zuhause?
Welche(s) Betriebssystem(e)?
Haben Sie DSL zuhause?
Einen Rechner oder ein Netzwerk?
Haben Sie eine Website? URL?
Bloggen, Twittern Sie oder benutzen Sie andere Social Networks?
Können Sie Linux installieren und verwalten? Welche Distribution?
Machen Sie Gamemodding oder Levelscripting?
Auf welchen Plattformen programmieren Sie? Windows, Mac, Linux, iOS?
Haben Sie Cross-Plattform Erfahrung?
Programmieren Sie gerne?
Programmieren Sie viel? wieviel? gut? sehr gut?
Haben Sie an Open-Source Projekten mitgearbeitet? welche?
Gibt es öffentlich zugängliche Projekte? URL?
Können Sie Code oder andere Arbeitsproben zeigen?