PHP
Ich setze seit 15 Jahre Projekte in PHP um, davon 13 Jahre in Vollzeit – zwei Jahre habe ich in erster Linie JavaScript bzw. C# programmiert und PHP nur am Rande. Viele dieser Projekte waren komplette Neuentwicklungen, daher hab ich viel praktische Erfahrung in der Architektur von Web-Applikationen. Aber ich habe auch Projekte auf der Basis von Frameworks umgesetzt (u.A. Zend, Symfony, yii, CodeIgniter), habe Online-Shops erweitert (Magento, OXID, OS-Commerce), sowie mit Content-Management- (u.A. Typo3, eZ Publish, Joomla) und anderen Systemen (u.A. Stud.IP, MediaWiki, DokuWiki) gearbeitet. Ich habe viel Schnittstellen-Programmierung gemacht, z.B. mit PayPal, HeidelPay, Warenwirtschafssystemen, Buchhaltungssystemen, Versandsoftwares, Facebook. Ein Projekt über 1 Jahr war ein verteiltes System, bei dem ich unter anderem die Schnittstelle der einzelnen Komponenten (Gearman Job-Server) konzipiert habe, sowie ein Tool zur Verwaltung der verschiedenen Software-Instanzen auf den jeweiligen Servern.
JavaScript
JavaScript war bei vielen Projekten Thema. Dort vor allem mit jQuery. 2013 - 2014 habe ich 1 Jahr lang eine Web-Applikation auf der Basis von AngularJS entwickelt. Benutzt habe dort u.A. Grunt, Karma/Jasmine, OpenLayers, D3.
C#
Von 2014 - 2015 habe ich 1 Jahr als C#-Entwickler gearbeitet mit WPF, Prism, Unity, Fody, NUnit.
Datenbanken und -formate
Bisher habe ich zumeist mit MySQL gearbeitet, jedoch auch mit Sqlite, MSSQL und mit der NoSQL-Datenbank MongoDB. Ich habe viel mit JSON gearbeitet, mit XML und XSL(T) und anderen Formaten.
HTML/CSS
Ich beherrsche (X)HTML und CSS
Entwurf
Ich habe mich sehr intensiv mit dem Thema Software-Architektur, insbesondere mit den verschiedenen "Interpretationen" von MVC im Web. Auch andere Entwurfsmuster sind mir vertraut und Bestandteil meiner täglichen Arbeit. Derzeit schreibe ich gerade ein kleines Applikations-Framework neu, das quasi ein Applikation-Bootstrapper mit Dependency-Injection-Container. Ein Teil davon ist bereits auf github zu finden: http://www.github.com/tueena/core.
Tests
Ich habe Erfahrung im Test-Driven-Development (TDD), sowohl mit PHP (PHPUnit), als auch mit C# (NUnit). In Javascript habe ich auch mit Unit Tests gearbeitet (Karma/Jasmine), jedoch noch nicht testgetrieben entwickelt. Neben Unit-Tests setze ich auch andere Test-Methoden ein. So habe ich z.B. für den Test der Integration einer Oberfläche eines Payment-Providers ein eigenes kleines Testing-Framework geschrieben, mit dem die Mitarbeiter im Team diese halbautomatisch testen konnten.
Web-Security
Besonderen Wert lege ich auf das Thema Sicherheit von Web-Anwendungen. Dabei kenne ich die bekannten Angriffsvektoren, wie z.B. XSS, CSRF, SQL-Injection, Session-Hijacking, Session-Fixation etc. und berücksichtige ihre Abwehr sowohl im Entwurf, als auch in der Entwicklung und in den Tests.
Dokumentation
Ich habe Code bereits auf verschiedenste Weise dokumentiert. In der Regel dokumentiere ich die Methodensignaturen etc. mit PHPDoc, kommentiere nicht gleich verständliche Code-Passagen und schreibe ggf. kurze Dokumentationen, um einem neuen Entwickler einen Einstieg in ein Projekt zu erleichtern. Darüber hinaus lege ich Wert auf Lesbarkeit des Codes. Durch die Wahl von sinnvollen Variablennamen etc. und z.B. durch das Auslagern von Prozeduren in eigene Methoden mit entsprechenden Namen kann man Code sehr gut verständlich machen.
Versionsverwaltungsprogramme
Ich arbeite täglich mit Git und in einigen Projekten auch noch mit Subversion. Ich arbeite ggf. mit Git Flow.
Internationalisierung
Einige meiner Projekte habe ich in internationalen Teams durchgeführt, einige Projekte waren an internationale Zielgruppen gerichtet. So konnte ich z.B. Erfahrungen in der Speicherung von internationalen Adressdaten sammeln. In einem Projekt habe ich eine chinesische Lokalisation umgesetzt. Ich kenne bereits viele der Tücken im Umgang mit unterschiedlichen Sprachen, Schriftsystemen, Zeichensätzen, Zeitzonen, -formaten, Zahlenformaten usw. und weiß, wie man damit umgehen kann.
Performance und Skalierung
Ich habe Erfahrung mit unterschiedlichen Cache-Technologien, u.A. mit Memcached, mit der Verteilung von last- oder zeitintensiven Routinen mit Gearman.
E-Commerce
Ich habe bereits einige Online-Shops umgesetzt. Sowohl kleine, die ich selbst programmiert habe, als auch größere mit Magento, OXID und früher osCommerce. Einen Shop, den ich mit Magento umgesetzt habe, habe ich an die FiBU-Software des Unternehmens, die Lagerhaltungssoftware, sowie zwei Programme für den Versand angeschlossen. Für einen größeren Shop auf der Basis von Oxid habe ich Teile der Anbindung an ein Warenwirtschafssystem umgesetzt (SOAP/WSDL). Ich habe für ein SAAS-Projekt für den internationalen Markt die fortlaufenden Zahlungen mit Kreditkarte und PayPal über einen Payment-Provider umgesetzt, sowie kleinere Projekte an PayPal und das Sofort-Gateway („Sofortüberweisung“) angebunden.
SEO
Ich habe für mehrere Kunden OnPage-Optimierungen durchgeführt und für Kunden an SEO-Tools mitgearbeitet, z.B. einen auf mehrere Server verteilten Web-Crawler umgesetzt, der das Google-Pageranking ausliest und Backlinks überprüft.
Facebook
Ich habe einige Facebook-Apps erstellt und viel mit der Facebook-Graph-API gearbeitet.
Server, Betriebssysteme
Ich arbeite seit vielen Jahren mit Linux (fast ausschließlich Debian) und dem Apache Webserver. In den letzten beiden Jahren habe ich jedoch auch auf Windows gearbeitet und darüber hinaus habe ich Erfahrung mit OS-X.
Gestaltung, Bildbearbeitung
Ich gestalte auch Websites und habe Erfahrung in der digitalen Bildbearbeitung. Der Umgang mit Corporate-Design-Handbüchern ist mir vertraut.
Sprachen
Ich spreche fließend Englisch, programmiere ausschließlich in Englisch und erstelle auf Wunsch auch Handbücher in Englisch. Daneben spreche ich etwas Spanisch, aber nur die absoluten Grundlagen.