Sunday, February 27, 2011

As you may know, from March 1st I won't be the Software Architect for Allbus anymore, but I will remain in contact as an advisor. In fact, we're looking for a substitute for my position.
Working in Siena and via telecommuting with this team has been a pleasant experience and we will continue our collaboration through other means. The time freed by the new contract will let me pursue Alta Scuola Politecnica and maybe also write on this personal blog (I write 4 articles for DZone every week, which is quite time consuming). Do you feel articles on this blog would have an higher impact than the ones I publish on DZone? To me, there's really little difference in the end result, and that's why I have been a Zone Leader for months.

Tuesday, February 22, 2011

With March coming, my effort at Allbus will be greatly reduced. I worked here as a software architect, initially in Siena and now by telecommuting from Como. I plan to remain in contact as an advisor via the internal mailing list, by I won't have time to pair program with my colleagues due to my projects at university and Alta Scuola Politecnica.
So why am I telling you this? Because Allbus is looking for a replacement to lead the development team.

What I've done everyday (what you'll do everyday)

Mainly, pair programming with one of the resident developers, and design activity.
These are the questions that the Allbus software architect faces:

in what layer or object should we put this logic?

what classes do we create to add this feature?

how do we test that?

is this design ok, or there is an underlying smell that should be solved?

what's Agile practice X and is it viable for us?

Both programming and teaching are part of the daily work. And by the way, we are more interested in knowledge of software design than about scaling and performances.
I think one of the interesting things about this job is that it is more focused on working on scalable approach for the development process, instead of on putting hacks in just to make a new feature work. The question to answer is always How can we reliably handle this case in 20 different places inside the application, and sleep at night knowing that we could maintain it for 5 years? and not What is the the shortest and most convoluted code that will work for this particular functionality?

People

Michele (first from right), is our enlightened boss. He favors clean code over technical debt, and the whole fact that he knows what these two terms mean should already tell you something. He knows how to read code, but its role is more of the Domain Expert of the project.
Francesco (first from left), Gianluca (third) and Elisabetta (missing in the photograph) are PHP and JavaScript developers. What I have done up to this day is to pair program with one of them all the time, which we think is one of the best ways to teach design and coding skills.
And I'm that guy with the light blue t-shirt. :)

Technologies and enviroment you will work with

PHP application, currently developed with Zend Framework and Doctrine 2.

PHPUnit (and recently Behat) for testing

Currently transitioning from plain old PHP to Domain-Driven Design approach. Everything is object-oriented.

The team is mainly Italian, but all the application's code and interface is in English.
Your expertise is needed on the server-side, as the company is already well-covered with JavaScript expertise.

Terms

The job is about telecommuting for pair programming and analysis/design sessions with the team (usually with one or two people at the time). No relocation is needed.

There is the opportunity to set up a flexible schedule during each week. The time required is from 12 to 20 weekly hours (the amount of time will be established at the start of the contract).

Medium/long term contract.

You'll have the responsibilities of a software designer and developer, and of a teacher for the rest of the team.

Communication will be in English or Italian, according to your language, but knowledge of Italian language is preferred.

Contacts
In case you're interested, contact us to get to know more about this position, or for an interview.
Write to team@allbus.com
Phone to +39 0577 208024 (9-13, 14-18 CET). +39 is the international prefix for Italy if you call from abroad.

Sunday, February 20, 2011

I have been accepted for speaking at phpDay 2011, the one and only Italian conference on PHP. I hope to do a good job in teaching the audience new things and entertaining them with my two talks (which have been accepted in the Italian version).Inseguendo le pratiche di Domain-Driven Design in PHP, in which I share my studies and real world experience on how to conjugate DDD and PHP technologies. For example, how can you maintain a persistence-agnostic Domain Model? And how can you store it in a database when it contains classes that do not correspond 1:1 to tables, like Value Objects? The word inseguendo (pursuing) is there because I do not aim to be your DDD guru (that's @ziobrando), but I am the guy that given a DDD prescription gets a working PHP applicaton. By the way, this talk will also be presented at the Dutch PHP Conference 2011.Pomodori tutto l'anno, on the Pomodoro Technique and my year-long experience with it as a freelancer, and for a period in a team. Time management isn't only a topic for braindead self-help books.

Sunday, February 13, 2011

No, not Active Server Pages, but Alta Scuola Politecnica, the joint program of Politecnico di Milano and Politecnico di Torino. I returned yesterday from the first event in Turin, where courses and projects were presented. We'll see what will come out from it.

Sunday, February 06, 2011

It's not official yet, but I will be speaking at the Dutch PHP Conference in May, with a 3-hour workshop and a regular talk. The schedule will be published next week. Looking forward to meet my telematic friends who will be in Amsterdam.