Showing posts with label job. Show all posts
Showing posts with label job. Show all posts

Wednesday, January 03, 2018

New role: Software Engineer in Tools and Infrastructure

After working on eLife's testing and deployment infrastructure in 2016, in the last year my responsibilities in the technical team have shifted towards the domain of engineering productivity. Testing is one phase of the development process that is often a bottleneck, but there are many more areas like code reviews, monitoring and infrastructure itself (being it servers or services):
In summary, the work done by the SETs naturally progressed from supporting only product testing efforts to include supporting product development efforts as well. Their role now encompassed a much broader Engineering Productivity agenda. -- Ari Shamash on the Google Testing Blog
Moreover, the team starts from a high level of coverage and design on many projects, to the point that my focus has always been on the provisioning and automation of testing environments, and on large-scale end2end testing.

What seems just a letter on a job title (from SET to SETI) is in fact an alignment of responsibilities so that I am not accidentally mistaken for "the QA guy" but always seen as a problem solver instead.
https://en.wikipedia.org/wiki/Pulp_Fiction
Solving problems and propagating the solution, so that you don't have to solve them over and over again
Roles are always an approximation in a team of generalizing specialist that also distributes and collaborate on some roles such as that of architecture. But it's helpful in a cross-functional team to have someone dedicated to the task of productivity, whether it is reached through automation, tooling, or continuous improvement.

Sunday, March 03, 2013

If you're a programmer, you don't need Alta Scuola Politecnica

TL;DR: as a software developer, you can successfully ignore Alta Scuola Politecnica and pursue a career on your own so that you can be happy when you get up in the morning.

What's this ASP

The ASP in the title is not some form of programming language such as ASP.NET, but it's the acronym of Alta Scuola Politecnica, a joint program of the two major technical universities in Italy which attempts to select the top tier of master students.

With the official brochure words:
The ASP cultural project is aimed at complementing the MSc education (120 credits) with 30 additional credits, equally subdivided between courses and projects, so as to expose its students to a multidisciplinary way of managing complex problems and treat them in an innovative way. While the MS studies gives them extensive, deep, high-quality skills in focusing on a specific discipline, ASP studies broaden student's competence through interdisciplinarity and team-working. 
In my words: you work for two years on a project that usually never sees the light of day with people from other backgrounds, unless you count "it works on paper" as a deliverable. I heard ASP alumni defining this activity as "project simulation".

In the other half of ASP, you are sent for three weeks a year in seminars where you can get wasted at the evening and then sleep with your fellows during the day while economics and innovation concepts are explained compressed in some hours.

I've had this post for like months in my drafts, but never got to speak out loud. Let's dive into it: I hope this can serve as a note to the next computer engineer in PoliMi and PoliTo which will google about ASP when he is contacted to enter in it. I speak from personal experience (been there, done that) about the computer engineer role in Alta Scuola Politecnica, which has been for me using Prezi and Google Docs.

Who pays this?

The source of funds for paying teachers, trips, hotels, speakers, and so on, comes partly from the public education budget and from private companies sponsoring.

However, and here's the catch, these companies are famous in the Italian communities (communities such as Grusp and XP User Groups, to name a few) to be the ones you don't want to work for. Why?

Because they see programmers as a commodity of factory workers more than as capable designers of software systems. Basically, trying to pay as little as possible for as much hours as possible, possibly body renting you to another company. A developer role in these companies can usually be filled by postman and philosophy graduates that took a two-week Java course.

The companies that you won't see in ASP: Google? No, of course, they're not even in Italy with technical people. Github? Etsy? Connextra? Sourcesense? Thoughtworks? You're dreaming. You will see however, companies that are the dream job of management engineers, just not of computer engineers that actually like to code.

From inside PoliMi

While I googled for ASP, I found this gem by Dino Mandrioli, former president of the Consiglio Corso di Laurea Ingegneria Informatica. Which means: a computer engineer.

His summary: "yet another piece of paper with some credits on it that we give to people that do not need it, because if someone's really good, he doesn't care about supplements".
The piece was written when ASP was first proposed inside PoliMi.

Courses and projects

These courses always have innovation in the title; they compress lots of concepts in an intensive week, and lets you work as a team on presentations.

You know, when I submit a talk to a conference, is the by-product of several months of my workday activities. Why are we teaching students how to conjure up presentations from nowhere in the space of several hours is a mystery to me, but it may be a sought-after skill.

About the projects, they range from designing satellites to helmets to mobile applications (since it's such a buzzword these days). Keep in mind the design verb: I never got to write code in a year. Imagine going to work and not write code for a year; what kind of position are you pursuing?
If the answer is "I don't want to write code" and you're not a hardware guy, stop reading now, quit Computer Engineering and pivot to philosophy.

The students

But I've been there; I'm no journalist or teacher, I'm a former ASP student who dropped out after the first year to pursue an interesting job with an Italian company, which lasted after graduation and became my full time occupation.

So here's some anecdotes on what really happens inside Alta Scuola Politecnica, mainly during the 1-week seminars:
  • Everyone singing the Italian national anthem at dinner, because it was the 150th anniversary of Italy unification. In retrospect, seem like we were part of Comunione&Liberazione, but with a different religion.
  • Dozens of students late for the morning lesson because they were trashed from the previous night in a disco; event followed by mega-punishment of writing an additional paper about the week for everyone that was more than 30' late.
  • Ericsson speaker asking if someone had heard of Goldratt and being alone in raising my hand. Really, management courses do not name Goldratt and the Theory of Constraints even for a minute?
  • An high percentage of the students getting food poisoning at the former Olympic villages we were staying into. Twice. Maybe it was the cold mountain air.
  • Projects where there is no code or architecture to write. What contribution can a computer engineer make apart from wasting two years?

Your career and job

If you get to the point of entering ASP, you're likely to be bright enough to excel at practically anything they can make you do: presentation and slides, researching papers or tools. This is a problem because since you do not fail you continue to do work which is not meaningful to your career: the projects of the 10-credit Distributed Systems course in Milan are alone worth more for your personal experience that the whole of ASP. If, during a job interview, someone prefers to hear that you are good at teamwork because of ASP rather than the fully distributed application you wrote in Erlang, I suggest you to leave immediately.

Moreover, if you again are entering ASP, you're still bright enough that you do not have problems in finding a programming job, even in Italy, even in crisis. What matters to your happiness and personal growth is which job you choose, and ASP does not serve you well in providing opportunities of which you can say "this company does cool stuff". Forget about Agile, TDD, Domain-Driven Design, ye who enter here.

In fact, there is a large selection bias at work: ASPers are successful because the commitee selects people who is already likely to be successful, not because ASP teaches them anything more than the location of discos at Sestriere. That's a spurious correlation between attendance and results.

For example, statement like "graduated ASPers find a job/enter PHD in less than 2 months after graduation" are not a surprise: probably all the people who are selected for ASP but do not enter or drop out still find a job immediately. They'se selecting the top 7.5% after all.

This is like the old saying: it's getting into Harvard that matters, not finishing it. Other than Mark Zuckerberg, there's plenty of people that dropped out of Harvard, but in the case of ASP we are not even talking about a degree: it's just an additional program for a master's degree.

You can reply with: the connections made in such a college matter, the same goes for Alta Scuola Politecnica. I argue that the best connections you can make in Italy, as a computer engineer, are not inside Alta Scuola Politecnica.

Here's who you should get in touch with if you want a job that does not involve Cobol or legacy Java that runs in the cellar of some bank:

When I get inquiries from companies that found me through PoliMi I almost never reply, as it's always the same offer: you are a Junior, come here with an entry level position so that we can sell your hours to some other company that we made a big contract with.

The people from these groups that I got to knew in the last years are the real heart of the programmer's community in Italy. They are what helped me select a sane, well-paid, fun job 6 months before graduation. Beat that, ASP.

Tuesday, February 22, 2011

We're looking for a developer

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.

Maybe we'll work together in the future. :)

Featured post

A map metaphor for architectural diagrams

It is a (two-dimension) representation of a pipe. The map is not the territory , but in software engineering terms they are models of it....

Popular posts