the Adwar

This week I got 2 links that explore both sides of the adwar. The war on advertisement exists on the web since it became popular enough to attract advertisers. There are no acceptable ads takes the side of the users, while A Never-Ending Story On Ad-Blockers seems to defend and advise the publishers.

Some media already have blocked the blockers. It’s forbidden to escape ads? This position may appear not to be sustainable. And pushing towards content sponsoring could have really bad ill effects on the long term. Is there any escape? Honestly I have to say that I’m partial in that debate. I don’t like ads on what I read, and I don’t like ads on what I publish. I even go edit my /etc/hosts with some custom domains to resolve to sometimes.

So it there was to take sides, I would say advertiser, go to hell. But I’m a realist. They won’t go away. We live in a society where shit has to be bought. Yes even if you don’t need it. Otherwise the system will collapse. That’s how things are. I get some crazy dreams about some basic income system, currently in experiment in various places over the globe. Such setup would defeat part of this situation, even if it would have border effects that are unpredictable. But that would not change much for the big corpo, it would only save the small people. Hmm. Sounds good enough to me, I won’t lie.


The thin line between chaos and harmony

In the long road of my developer life I had the chance to experience a very wide variety of organizational models. The most pleasant was in the context of very large open source projects, where actions are not planned but still organized, and things fall in their place seemingly naturally. Of course there is nothing natural in that. There is a category of people, that can be called catalysts, working as gardeners and building the pathways to collaboration. But because there is no predefined hierarchy, I thought chaos had some virtues.

In other hierarchical models, there is so much waste following the rule rather than its essence. It’s like there was an abstraction layer for efficiency and the staff follows the abstraction, paying no respect to the efficiency. Because after a time the set of rules is not making sense anymore. The environment moves fast and habits are hard to change. It’s taking long time for an organization to change its own internal rules.

But I also have seen non-hierarchical model totally fail. When you try to apply an open-source kind of organization inside a company, it cannot be done half-way, but it cannot be done fully.

For example the volatility of contributors is an essential part of the open-source organization model. Things are working the way they do because people are free to leave and join at will, or stop working when they decide. This is totally different in a company, even if you can get some approximation, leaving and joining is a more complicated process, and has a different set of motivations. And let’s not talk about the freedom to stop working at will.

This single factor leads the free-formed communities to get various incentives for contributors to feel good about their interaction in the community. The ones that don’t play well along other people just end up either in a leadership position because they are geniuses, or just leave because they don’t fit in. Or they stay and kill the project because everybody else leaves. But most likely they are the reason why forks exist.

But in a non-hierarchic company, those cowboys may end up hurting the whole process of collaboration by capturing some processes, getting very good at them, and give hell to everybody else for a time, under the privilege of the Power of the Bottleneck. It’s very hard to get those people to share knowledge because their position depends on it. If nothing is done, the situation will become uneasy and awkward at best.

Certainly in that type of situation, if there is some power in place to mitigate this danger, all can be good and well. But from my experience such power is hard to come by. Especially if the non-hierarchic aspect of the organization depends on him/her/it. Maybe there is some way to have some kind of catalyst role, but where I have seen such role in a company, it was informal and not an official position.

That’s too bad because I would love to experience again some real collective intelligence in the workplace the same way I have experienced it in some open source communities. I think maybe there are some companies out there that are doing that well, but most of the time it’s not going to be structural. Most likely it will come from a specific set of people that do real good in collaboration. I still wait to see a company that includes in its genetic code, in its fundamental principle, the seeds that make it possible to be efficient and still instinctive.


Code in the dark, perl 6

My attention was brought this week to Code in the dark events. It seems pretty cool. A 15 minutes race in html and css with no preview. But the thing that brought my attention to that format is the special editor used for those events with a special effect on the cursor. It seems to add a really dramatic effect on the competition. We need more ideas like that for pure geek fun.

First look at perl 6

For many people, Perl sounds like trauma. Because it didn’t move for a while, when I hear something is perl code, it sounds like it’s legacy code, old and dusty. Well, Perl 6 is going to come out for christmas and the situation may change. Perl 6 is in the lab for 15 years now, it’s more than time to get it shipped.

At first glance, they seem to have tried to ‘modernize’ the language, make it more idiomatic. It even seems it looks more like ruby, with the replacement of arrow by dots, the optional parenthesis, better exception handling. Well, overall, it feels cleaner. But it also seem to have some potential to mix functional and object-oriented in an interesting way.

So, maybe there is going to be a second life for the old perl. It’s a breaking version, old perl code will certainly break on the new version. So it’s almost like a new language. For sure I will still keep ruby as my preferred language, but I like multilingualism, so maybe I will give it a try .. again (last perl app I wrote was 12 years ago).


More about bullies

This week I read the reaction of Avdi to the rant of Linus last week. He proposes a short but insightful angle by just naming it ‘bullying’. It rejoins the damage that I consider the coder-hero culture brings to our industry.

Certainly the creative process of writing software attract creative people. They have strong personalities, some have tendencies to mild autism. They move mountains and their pride make them work day and night to achieve unbelievable things.

This is good and well, but on the long run, now that we are passing 2 generations of coders, we know that it’s not sustainable on the long run. Plus, it has a disastrous impact on team building. No pyramid was built by a single hero.

Incidentally I also read an interesting article about Why computer programmers need to stop calling themselves engineers already. Even if I can’t clearly explain how this is related, I have the feeling it’s talking about something that is in the same area.


Sexism and competition

The ruby community is quite blessed in the way that there are very vocal activist promoting diversity, especially on gender parity. It’s not exclusive to ruby I noticed the same intention in other communities (like the pyladies in python).

Anybody that spent some years in IT cannot avoid to notice that there are mostly guys. The ladies are either frowned upon or very special cases. For ages I have been wondering why. My sister is a sysadmin at a university, there is nothing shocking about that and she does a damn good job.

So I paid attention on what are the people responsible for that. I identified various categories of people that I consider are responsible of our lack of parity. Well, not them directly but the behaviors they perpetuate are certainly part of the problem. If we could find a way to correct those behaviors, it would lead to a natural change in the group.

In all those people I know, and in all their behaviors, I think I detected something that is related to the Religion Of Competitiveness. Those people are believers that knowledge is power and they are not gonna share it more than necessary. They will find anything to avoid more people reach their level of knowledge. And if they can find some kind of reason to discard other people, either trivial and socially acceptable in the given group reason to discard other people, they will do. Gender is the first victim in such a schema. What is socially acceptable is a self-perpetuated meme.

Talking to those people is pointless, they are in denial. They see nothing wrong. You can’t change them. You have to change their environment, that will be the only way.

So it means that in a competition context, there are still ways to win, by playing the competition game and winning it. But to break the competition paradigm, there is a lot to do. Companies policies are not enough to enforce a more open mindset. But I believe that there is ways to organize the information in a way that keeping it for oneself devaluates it. And from the eradication of the tyranny of knowledge, we shall reach a less competition-based culture in IT. And all discrimination pretexts may vanish by themselves.

Rather than fighting for diversity, we should fight against the spirit of competition. It’s kind of not easy, I reckon, because our society tends to push people to be competitive. That’s what capitalism is all about. But IT population already has proven that the established system don’t take hold on them. Geeks and techies are educated people (often self-educated, but it’s the same) and they can think on their own, chose the path to follow. If you can find a way, in your context, to change the environment towards less power for the competitive type of people, that could deserve a try.

Well, that’s just a rant, a wild thought. Such a topic would deserve more space for development. But that’s what I wanted to share this week. Anyways I doubt there is that much people reading those line hahaha.


Digital Generations

I enjoyed very much watching the keynote from Grady Booch at ICSE last week. He retraces the whole history of computing and software engineering in a very talented way.

Later on I also watched the keynote of Stephen Bourne at BSDCan, which also talked about history, but on a specific topic of the creation of Unix and the shell.

Usually, I have to say, I consider myself as an old geek. But I’m a kid compared to those guys. It made me wonder what are generations based on the computerized world. In the physical world it’s easy, there are births and generations are around 20-30 years long. But in our accelerated time frame in the digital age, what is the measure for generations and where are the gaps ?

We could consider that some breakthrough are the base of generational shifts. On the top of my head I would say:

  • the dinosaurs age, before 70, where computing was just emerging
  • the university age, appearing with the interconnectivity between universities between 70 and 80
  • the personal computer age, between 80 and 94, with various evolutions of pc available to larger audience
  • the hypertext age, between 94 and 2002, start of the public internet, the bubble, the web
  • the online age, from 2002 to 2012, with consolidation of big companies, web 2.0 and all
  • the mobile age, from 2012 to now, even if mobile appeared previously, it dominates since recently

So I can see an average of 8-15 years in the generations that I feel create disruptions between each others. People that jump in at one age will suffer a gap between their age and the next one. Many won’t evolve. Few brave ones will constantly update and jump on the next train.

But the overlap in digital generations is also different than in traditional generations. We still have a lot of legacy in our current systems inherited form the university age. And they don’t seem to die, like the TCP stack or the C language.

The next age may be the one of the Internet of things and the massive required switch to IPv6 as default. Which will include automated and autonomous systems, because they will be things and not part of a contained system. In something like 3 to 5 years, if I follow the same rough pattern I drew above. Unless next gap will come with VR and immersive technologies ?

But I suspect that my simplistic characterization misses all the multi-layered aspect of the digital age, between the hardware advancements, the software improvements, the usages evolutions, the protocols modifications, the data models transformations, etc. I’m sure a more complex generational matrix could be designed if some more thought was given to it. But the gaps are real.

It feels to me that people that predict that machines are going to take over the world are actually late, it already happened 40 years ago. It was just having a limited impact on people lives. Each digital generation dragging more human in its trails.

Don’t let yourself enclosed in a generation. Our computer overlords won’t make any effort to include you if you drag your feet.


The yin and yang of software development

The topic I talked about last week led me to think about it more widely. And I ended up with the thinking that many problems in software companies are a clear problem of balance between their yin and their yang.

This old chinese principle is documented in a very old-fashioned way, opposing genders and principles. But actually it sums up in the fact that many dynamics are to be based in a balance between two opposing principles. Otherwise they fail.

The way I see it, software developers are a nurturing kind. This profile has to consider long term. It decides actions for later outcomes. It’s about giving life and growing it. It feels closer to the Yin principle.

On another hand, the business people are bound to a shorter time frame. And I don’t talk about the entrepreneurs and the rare visionary people, but the real business work force. They are competitive, aggressive, fighters. That really feels to me like the Yang concept.

And all occurrences where I saw software companies failing, I think it was because there was a lack of balance between those 2 principles. Either the management was too soft and not aggressive enough towards its market, either it was too aggressive and nurturing was not considered enough in their equation.

I don’t think that this balance requirement applies to everything, to be honest. But in a constituted body of a software organization, considering the current (questionable) market economy, it feels that the Yin and the Yang have to be in balance to grant a chance of survival to the organization.

One may have the feeling that the dominant Yang (business side) is the more common case. But they are just more noisy. Many projects stay silently in the darkness just because there was no real business consideration (or even refusal of it).

The keynote of Grady Booch (linked in the video section) confirmed me in various ways in this opinion. Engineers have the duty to fight for the balance when they can. They have to understand that it’s not a one-way deal, as well. If you want to exercise programming in a nurturing-only context, win a lottery and dedicate your time writing free software (where market requirements don’t apply). But in the usual case, you may have to consider if you are in a balanced context, and if not, try to work on balancing it.


A word about project gardening

In the last 2 companies where I worked, there was this recurring issue. Actually I noticed it for a while but for some reasons it became more obvious to me with time passing. The project management role is usually badly fulfilled.

But at some point, and even from the point of view of a developer, there is in projects the need for a dedicated person for doing some gardening. Yeah it’s all about daily ungrateful clearing the bad weeds, making sure the soil is rich enough, and that the seeds are all planted where they should be planted, that soil pH is adequate for this or that variety. Having someone that is just doing moderation on projects also frees the productive people from lengthly and sometimes non technical meetings. It is the occasion to have someone that keeps track of specs, sometimes gather them or (re)write them down in a central place.

The problem in the transition from waterfall to agile, is that in the waterfall model there is a hierarchic feeling in the role of the project manager. The Management word into it is misleading. It leads the developers to frown upon it. I have the impression that in agile teams, project management is supposed to be taken care of organically by the dev teams, sometimes by the scrum master or whatever facilitator is there for enforcing the agile process. Or the product owner will be technical enough to fill up that role. More or less.

But the reality is that project grooming is a full time job that may have to be re-invented. It certainly should take in account developers creativity and pertinence in the match of the objectives with the technical realities. But it’s necessary to have a person that is the reference on keeping track of the need and follow the quality process at all the stages. Well, at least when you begin to get many developers and many projects, and developers that work on many projects.

I think it’s a question of scale. Companies with less than 30 people may never face that need because there is a natural fluidity internally and not that many projects. But when you get to 100 and you still don’t have people dedicated to projects, then you can see developers burning out. Projects become lousy because nobody has time to write specs. You also can see emergence of hero coders that can by miracle make it all happen. But you will postpone the problem because heroes are not scalable and can even be toxic on the long run (as any experienced practitioner already knows).

Personally in my technical career I never liked the project managers that I met. But that is a long time I didn’t meet any. It dates from an age where agile was not there yet. But now that I don’t see them anymore, I feel that something is missing. It certainly exists in various places. And I can bet that many of them are as bad as they were in the last century. But maybe there is a new species of project curators out there that I didn’t meet yet. I read about those in various places, but in my (small) world, this is still a mythical beast.


Thought about python from a rubyist

This weekend there was a python conference here in Taipei (pycon apac). As Gandi was sponsoring it, I went there and tried to figure out how python and ruby communities differ in my local area. As a matter of fact, I also push my python coding skills a bit. I kind of like to nurture a general polyglot approach.

It first seems that the python community is more largely supported by sponsors than ruby one. It’s more mainstream in the general engineering world, I guess. There was google, facebook, microsoft, having a table and talking about their cloud things. But the general setup was pretty similar to the ruby or rails conf I’ve been in.

The topics in this conference were maybe a little more scientific and less web-oriented than we can find in ruby world. Python has tighter bindings with lower level languages. I think it’s not a specificity of the language because you also can build C extensions for ruby. But it’s more a result of the community interests.

I have the feeling that the ruby community dedicated more efforts towards the web front and other rails related principle like testing suites, DSL and meta-programming. But my general feeling is that there is no technical reason for that. It’s just how things happened over time, mostly given the weight of rails in the ruby communities.

Actually, I also had the feeling that pythonists don’t consider ruby as a ‘competitor’. They feel closer to java, node or golang, and at various occasion I had the impression that they consider ruby to be only the language behind rails.

I also thought that the ruby community was special about its adoption of macbook laptops. Even if actually the python coder has more diversity, I evaluate around half macbooks, the rest split between ubuntu and windows. It’s less that in ruby confs where macbooks are kinda 90% and windows users are very few.

Also, I noticed a similar movement about diversity with django girls and pyladies, comparable to the rails girls, which tries to close the gender gap in the engineering world.

Anyways that was good and interesting. Geeks are the same kind, whatever language they use (by trade or by taste). I strongly advise, if you have the occasion, to wander out of your usual communities and join other circles. It gives a good perspective on you usual world.


The side effects of recruitment

Recently I had to look for a new devops for our team. I have been handling technical recruitment at many occasions, and each time I have to explain my colleagues that I have a special process. The fact is, the technical sphere is a small one, we are all linked, more or less, to a community. Well, in my case, I always have had to recruit people in companies that were hiring the kind of people that commit on github, have some kind of community activity, at least. I guess that in huge companies where people are just a set of checkboxes, things go a bit differently.

But anyways, in my case, and probably in the case of all recruiters in modern and small businesses, it’s not all about checkboxes and profiles. It’s about personality, compatibility, and mindset. So when I first get a contact with a candidate, I invite him (or much more rarely, her), to a chat online, preferably on irc or whatever real-time discussion media is more fit (for a linux geek, if you can’t go on irc, then there is a problem).

I noticed that during my past sessions of recruitment, I established contacts with very interesting people. By having an unformal discussion online, just chit-chating of what work we do and what we did before, it’s kind of easy to get an idea of what is the kind of relationship you will have with your potential future colleague. But beyond that, it’s all about making things personal. We are all unique. It cannot be computed, scripted, engineered in a way that non-technical people would be successful conducting that process. It takes a geek to recognize another geek.

At Gandi of course we have a HR person. But she usually appears at the very end of the process and not at the beginning. The peers are going to evaluate candidates, make their mind to see if they want to spend days and days collaborating with them. It matches with my way to do things, fortunately. If I have any doubt of the technical abilities on someone, I don’t do stupid technical tests, I try to find other people that know the candidate and get third party feedback. If not, then I try to use a meetup in a community related to the speciality in question, so we can discuss and be around other people where some tangent discussion can happen.

At the end, if all goes well, then the candidate is going to enter the more formal whatever the company uses as a recruitment flow. But that’s merely a formality. And after 20 years building up teams and recruiting people, I can affirm that instinct always wins, in my case. If I smell anything fishy in an unformal context, there is going to be problems. Well, the process is never perfect, it also can smell ok but stink after 3 months, too.

But the thing is that having those chats online with peers is pretty interesting. I learn a lot about how other companies work, how they handle their management, what kind of work conditions they have. Just because it’s part of the contact process. So I’m not really in hurry to make a final decision because, to be honest, I just enjoy those contacts.

It certainly takes some time, I can’t be in constant recruitment, but from time to time, it’s very valuable. And not only for the effect of recruiting someone. It creates bonds with the industry, with people, with communities.