I've decided to leave this page up for historical reasons and to show people how i found my current job.
Thanks to everyone that retweeted this, contacted me and so on. Very much appreciated.
you probably arrived here because you either know me, or someone that does sent you here. So that's the deal:
I'm currently looking for my next job, starting October 2012, and put up this page to give people a quick overview of what I am looking for and what you can expect from me. Give it a look and let me know if you think we should talk :)PHP Quality MySql Testing CI Deployment Jenkins Devops Linux Agile - About me About you Get in touch
Creating and growing maintainable code bases that allow change at a steady pace is one of the things our Industry is struggling with a lot and something I find really interesting. Working in the area and figuring out what helps people to ship is something I really enjoy doing and talking about.
QA is also something that keeps me with PHP as I'm very found of the amazing tool stack we have. I'm trying to promote those tools as much as I can. For example by trying to make them more approachable..
If I'd have to name one thing that fundamentally changed my way of programming in the last 10 years than I'm going to answer "Automated Testing". Maybe growing older and growing as a person had even more impact but from a technical perspective it definitely was testing. I don't want to go back to trying out things in a web browser or by clicking though.
Ant, Phing, Make, Bash, Maven, abc, Scons, Paver, Travis... in the end it doesn't really matter. What matters is having a documented, understood and known to everyone way of creating a build. That means running the QA tools, running the tests and the best case the ability to create a shippable version of the source tree(s).
Many people consider CI to "hard to get going with" when actually the hard part is the build automation. Once you got that done all you need to do is set up the most amazing cron job definition and runtime environment of all time, which is quite easy to do for PHP and you're set. You might have guessed by now that I'm a big fan of Jenkins and all I can say is that it's not called "The Swiss army knife of automation" for nothing. I do enjoy working on and with CI environments, improving them and making them do stuff I'd need to do by hand to help create one continues flow of "value" to the customer.
Speaking of continuously delivering value: The time it takes to get your software into production is time it should make you money or sit on a developers machine waiting for the next release that is scheduled for the next quarter.
The web has fundamentally changed the cost of "shipping a fix" because we don't need any interaction from our customers anymore. The ability to do software updates 20 or 50 times a day is incredibly exiting to me.
When we are shipping software 20 times a day how can we make sure to now break the site at least 5 times a day?
The easy answer is "By writing automated tests for everything" but the real problems comes from "How do we actually get all those tests written" and it took our Industry quite some time to figure out that "Test driven development" seems to be the way to go. I've been using TDD on and off for about two years now and the times where I was able to where the ones I was happiest with the results. For me it just works and allows me to focus on building good APIs and having the implementations come natural.
With all the previous praise for Agile and Continuous things comes one challenge: You have to actually get that stuff on the production machines and roll out software updates all the time. Getting stuff done means getting operations on board and changing the way monitoring and "releases" work. To me it felt like a natural progression to do more "Sysadmin" stuff when moving to a more Senior role. When the issues during development are somewhat taken care of most of the really bad stuff happens when rolling code out into production so I went to the place where the issues where. I don't have as much puppet experience as I'd like at the moment but I've worked with systems shipping from svn, git and using Linux packing tools like .rpm and .deb.
While i grew using Windows and still use it as my main Operating System (mostly for gaming purposes) all my professional work happed on Linux based systems. I'd describe myself as a competent LAMP dev and admin but where possible I'm moving towards LNNP Solutions dropping Apache for Nginx and MySql for $whatever_works_best.
MySql was my first database and the one I did most optimizing and Administration on. I love query optimization and my lack of knowledge in ORMs like Doctrine is one result of that. I really like Doctrine but I also love hand tuning SQL statements. The most fun I had with a single (slaved) MySql 5.1 server with >1TB of Data in >6000 tables serving 30k request per second. It wasn't the sanest choice but the application architecture forced us to go into that direction and while having more servers would have been better tuning up the MySql was a lot of fun.
I've done some work with Postgres, Mssql, Oracle 11g and CouchDb but I'm nowhere near as competent with them, especially regarding administration. Doing some more work with Postgres and Couch is something I'm currently interested in.
Where there is PHP there is legacy. Sometimes there even is Vintage code. I've worked with php codebases >500kloc and ways to wrap them their value into something new and maintainable. Silex, Integration testing and Refactoring have proven to be a good options. I don't mind working with legacy code, especially if there are clear boundaries and people have agreed on plans to change, modularize, rewrite, refactor into the future.
While I still have a lot to learn I'd like to think of myself as being able to communicate clearly and cleanly. I've been practicing NVC on and off for a couple of years with some good results but I'm not able employ constantly where necessary and I'm striving to improve in that regard.
A good social structure and trust in a a team are not replaceable and will help immensely and I'm willing to do what's needed to help create an environment where that trust can grow.
While I've spent a lot of effort trying to learn all the "rules" about picking the right elements and using the right tags for the right purpose I'm extremely bad when it comes to layout, color composition, spacing, "look and feel" and deciding what "looks right". If anything I can suggest some UX problems but for your own good don't have me create a Corporate Identity, style guides or anything that requires design skills.
I have opinions and I try to think of the user when creating systems but I can only really point out when i don't like something, not suggest how to improve it. It plays along with my inability to do aesthetically pleasing frontend work.
Maybe my favorite language outside of PHP. I love creating little snippets that automate some desktop task that is too complex for Autohotkey and I've done some web development with Python. I'm currently spending my time learning other things but when the chance to do some more Python comes along I'm not going to complain.
The thing that I realized over the last two years is that I need to interact with other people to get stuff done. I enjoyed all the pair programming I was able to do so far and I tend to work more and quicker when I'm frequently interacting with someone else. Depending on the task I tend to get sidetracked or bored a lot quicker when working alone. I'm not sure if that is going to change in the near future but something for you to consider, dear potential future employer.
I suck at writing. I need to reread everything that isn't a method name a couple to times to fix all the spelling errors and even then I miss things. It's even worse in German as I tend to make a lot of punctuation mistakes and while i worked at it enough to be able to write good API docs, emails and the like it's definitely not good enough to produce good worded technical manuals.
I've mostly worked with legacy code bases and back when I was young and started with PHP wasn't the stability and quality that modern frameworks can offer.
Silex and Zend Framework are the two frameworks I've got commercial experience with. While I like what ZF offers in components and functionally the only framework that I'd currently consider in regards to "MVC" is Symfony2. Apart from Silex it's the only Framework out of the +50 options the PHP world currently offers that allows me enough freedom to still satisfy my needs for testing, quality, separation and independence. I don't have as much experience with it as I'd like to so I'd be willing to pick that up anytime.
You can contact me at firstname.lastname@example.org
I'm on Freenode under "edorian" usually idling in #phpunit, #jenkins-php and on euIRCnet on #phpug.
What's not visible there is that in addition to my own projects I have commit access to most of the PHPUnit repos
My personal blog
My answers on Stackoverflow where I'm currently the "top user" on PHPUnit
Apart from twitter have a rather inactive G+ account and no Facebook account.
My german online CV
My english online CV over at Stackoverflow showing my reading list and a couple of my Stackoverflow answers that could give you an idea of how i communicate.
I enjoy attending and speaking at conferences. You can see my speaker profile at joind.in and if you scroll down on that page you'll see most of the conferences I've attended too
Apart from programming my native language is German, I speak fluent English and thats it. I'm willing to pick up another language if needed but of course I can't (or won't) do that before the job start
I'm looking for a Job that allows me to stay _somewhere_ in Europe. I have a working permit for Germany (and hence for the EU) and for Switzerland. To give you a general idea I'm currently thinking about cities including Zurich, London, Berlin, Hamburg and Cologne and Dublin. I'm willing to relocate to pretty much anywhere and being in a big city is a plus for me but I'm also considering other options.
I'd rather work on site together with a team but depending in the location and how far away it is from my home, Augsburg (near Munich), the option to work remote for a week or two every couple of month would be favorable.
I could maybe bring myself to write a couple of nice things about me and how I'd like to see myself but It's your Job to figure out if I'm a match for your company anyways and as far as I can tell that only works when talking anyways. So everything I'm going to say on the subject is that I'm going to be as honest with you during the Interview process as possible. I'm not looking to "source" a good sounding or super well played job but to find a place where I can stay and enjoy working.
Are you doing something fun, useful, interesting, revolutionary? Can you make me care about your cause? You don't have to solve world hunger (even so let me know if you plan to) but doing something you and your company believes and having a vision where you want to go with that would be something I'd like to hear about.
I've spent some time preparing this trying to give you an impression of what I want and what I can bring to the table and If we're discussion options I'd like you to also have an idea where I'd fit in your organization, what you want me to do and which people I'm going to be working with.
I'd like to work in a team with people that challenge me to learn new things, be it new technologies, processes, happiness or just how much fun it can be to solve problems.
The main goal of including this point is that I wanted to state that I'm looking for a team where i fit into socially and skill wise and as communication is such an important part of our jobs I'd rather spent my time with a group of people that i like and that likes me.
From personal experience I can say that I work best when I'm able to practice TDD and that without unit testing I tend to loose track of "the goal" or get sidetracked rather quickly. Of course I'm able to work with legacy code and things that are not tested at all but If you don't have a migration plan and don't care to create one I might not be fit.
Kanban, Scrum, XP, the best of all world. I don't care as long as you live it, care about it, adapt it and use it to help you create your product(s). I've introduced Agile concepts in one of my jobs and while I was quite happy with the results I'd like to experience a well running and working process behind the development. With the current state of the web and how we develop software I strongly believe that constant measuring, adapting and iterative building of software is what is best for the business, the developers and the whole company.
My whole career is build on using stuff other people gave away for free and if you're giving back (or paying forward) thats something I'd like to participate in.
I enjoy visiting and speaking at Conferences and I'd like you to support me doing so. You don't have to pay everything (even so it might have tax benefits over giving me the money to do so) but helping me with travels, days of or anything else would also be appreciated. Things like in-house trainings, Workshops, knowledge exchange between teams and coaching are also quite interesting.
You should be able to answer all the questions of the Joel Test, be able to explain why you don't do something and elaborate on how you do those things.
Code, Processes, Quality and Company Values should be something your people share and care about. It might be a little redundant to state this when Agile values are already mentioned but I felt the need to express that people taking action in improving the whole company is something I value.
I'm not going to bullshit you during an Interview and I expect you to be as open with me. You might be able to sell me on a Job thats actually not what I want but after a while I'm going to figure that out, quit and we both wasted a lot of time and effort.
I like money, it allows me to eat, pay rent and do fun things. I don't really care how much you pay me exactly, by switching Jobs, chances are I'm going to earn less than what i currently earn anyways but I have a couple of things I'd like to be able to do. For once my girlfriend is currently studying and I'd like to be able to help her with that, pay for my own rent, good food and still have enough left to be able to help out my family and just not worry about my financial security. How much that is in Euro I can't really tell you as it depends heavily on the location and additional benefits you offer.
It should go without saying but to be complete here I'd like to say that I expect to be working with sane hardware. A well designed desk that allows for pairing, a chair that helps me with my back problems, a workstation that is fast enough to not get on my nerves and more than once screen.
I don't care about the OS. I take a Linux, Mac or Windows machine without complain about it as long as it has sane specs. For Linux/Windows that would be a Core i7, +8gb ram, a ssd and two 21+'' hd screens.