Freelance vs employee

"We think an employee would be more engaged in the company and in the project than a freelance". And also: "would you consider an employee position?"

These are sentences I hear nowadays, as I am looking for a new gig in the software development field. Probably a nice long-term project will catch my eye. In some cases, my freelance status will become the number one hindrance. Not my skills. Not my attitude. Not my way of working. My administrative status.

How odd is this, in a market where experienced software developers are in very short supplies?

The situation may be specific to Belgium. For some reason, the vast majority of my fellow senior colleagues are freelancers rather than employees. In my experience, it is not the case in the financial sector for instance, where there is also a strong shortage of available (wo)manpower. But that’s a reality.


A colleague will be a good fit if they have the right mindset and skills, and if your company is true to its values. They will be dedicated if they are motivated individuals and if the project is honest and worth it.

This has nothing to do with a freelance or an employee status.

Some good reasons

  1. We get subvention for an employee, not for a freelance

  2. Employees are taken into account to value the company, not freelancers (important for investors)

I hate it when it is the case, but these are valid reasons for startup at an early stage. Investors are wrong but I’m not arguing with you.

Some less good reasons

Or at least reasons for which I want to offer a rebuttal. Reasons to avoid a freelance worker usually fall in one of the following categories:

  1. A freelance will be less "engaged", "involved" or "committed"

  2. A freelance is way more expensive

  3. A freelance will have a hard time integrating with the team and accept the company culture

  4. Freelance contracts are for short-term missions only

But they hold after analysis.

Dedication - Like any serious IT professional, I value my reputation. I would not be in a good position if I had not been truely dedicated to my previous jobs, or if I had left customers hanging because I was busy working on something else. The Belgian IT world is a small world. Only a fool would ruin their street cred for a few bucks. To a freelance, reputation is everything. And you cannot keep it by being distracted, inconsistent or not caring about your customer.

Cost - A freelance seems more expensive at first sight. Beware not to compare apples and pears though. If you account for eveything, you’ll find out that the apparent cost is not all. On top of the gross salary for an employee, you have paid holidays, training (you pay for the conference and for the salary at the same time), extra legal pension plan, hospitalisation insurance, social charges, meal vouchers, laptop and screen (plus the IT support for it, including system restore and repairs when needed), payroll processing costs, company car (including contract management and the overhead when it sits idle in the carpool). You support the risks in case of sickness (up to one month), have asymetrical notice period in favour of the worker, and a rigid legal framework to dismiss the employee. And plenty of other things I’m sure I have overlooked.

These are all good things, don’t get me wrong! I’d ask you every single one of them in writing signed in blood if I were to become your employee. The point is that you don’t have to cover those costs with a freelance. All in all, the remaining difference is small and accounts for the increased flexibility and the drastic reduction of the risks.

Culture - A freelance has typically seen many places and can bring you new expertize and ideas. By nature, I enjoy discovering new ways of thinking and different work cultures. I’d be a very unhappy freelancer if I was not open and ready to embrace something different and something new each time I started a new contract - as long as it suits me, of course, and this is regardless of my status. The only reason I would feel like an outsider is if you treat me like one.

Short-term -Freelance contracts were maybe intended for short-term missions at some point, and they still fill that niche very nicely. But that is simply not the case anymore.

Check the candidate’s background. Find out how they work and how they think. Don’t dismiss her or him based on assumptions.

Advantages are overlooked

There are obvious advantages for a company to hire a freelance.

Flexibility - I push the freelance game to the max. You want zero notice period, as opposed to a legal several months for employees? Fine (but it will go both ways). You might need to reduce my workload for some period? I can live with that. Granted, not all freelances accept to go that far. But the engagement is typically à la carte.

Batteries included - As a freelance, I come equiped with full metal jacket. There is no need to discuss all the expected advantages listed earlier and to enter somewhat painful negociations. There is no risk that the one-size-fits-all compensation package will get in the way, as I’ve made my own already. No need to discuss or negociate anything other than a rate and payment terms. What a refreshing feeling. If need be, I’ll take on my personal time to get up to speed with some technology.

Cost of opportunity

Considering that most (or at least many) experienced developers are freelancers, you deprive your company from perfectly valid candidates by simply discarding them. In a market where there is a huge shortage, ask yourself if this is a sound business practice.

Just like a slow or clumsy recruitement process puts you at a disadvantage in a fast-moving market, there is an enormous cost of opportunity for ignoring future collaborators solely based on their administrative status.

Blurred lines and convergence

Employment contract finds its root in a distant past, where the company or the boss was a provider and a caretaker for its workers. People would stay for a extended period of time at the same place. If was not uncommon for some persons to work their whole careers for the same company. Often a factory shaped the social landscape. Hiearachies were strong. There was a strong sense of deference to the boss. Even before WWII, history is filled with social progress gained from social fights as workers were trying to shift the balance towards greater respect of their condition.

The strict legal framework we find nowadays comes in straight line from that era.

Freelancing on the other hand is derived from free enterprise.

How both types of workers managed to eventually perform similar tasks in a similar team configurations remains an open question (really, feel free to shed some light). Both contracts seem to have converged a lot in practice, while remaining so opposite in their nature and design.

It is a sign that we have not collectivelly figured out a modern, unified framework for work relationships yet.

In practice, mature and modern companies allow for flexible schedules. Working remotely once a week is not unusual anymore. There is still the essential element of "control and surveillance" imbued in the employement contract. But it certainly does not mean much for senior staff that should benefit from a large autonomy in their work organization. And on the other hand, the freelancer is subject to justify its work. If not legally, at least in practice. The lines are blurred.

If your company is keen on enforcing the "command and control" aspect, then indeed a freelance contract is not for you. Whether this approach is healthy is a question left to the reader.

On the other hand, if you don’t, is the freelance vs employee status relevant?

Care for an employee contract?

It will not come as a surprise that, for me, today, the answer to this question is "no". I have organized my "legal" life in a certain way, and my company is a key part of it. Changing for the sake of it would be a huge hassle - specially if I were to restart it at a later stage.

On the other hand, hiring me as a freelance would not be that hard for you so I’ll ask instead…​ Would you consider hiring a skilled and dedicated freelancer for the job?

Avoid recruitement agencies

Oh yes, one last thing. As much as possible, avoid recruitment agencies. They bring limited added value. Most of them turn out to be an impediment for both parties. Seriously, I’ve stopped counting how many times the recruiter had little to no clue about the actual job. This should concern you way more than the freelance status itself. Hiring is the most important thing your company can do and outsourcing it may not be the best way to do it.

Looking for passionate developers? Check us out.

 Participation citoyenne à Ottignies-Louvain-la-Neuve

Le billet sur la démocratie publié par la majorité dans le BCO 04/2019 de OLLN est encourageant pour les citoyens. Mais Ecolo avance à reculons, comme hanté par le spectre de la démocratie directe incarné par Kayoux.

Pas la panacée

Au début, j’étais optimiste en lisant ce passage éducatif.

"Différents outils participatifs existent. Passons en revue les principaux, leurs avantages et leurs limites. Une assemblée tirée au sort. Il s’agit de tirer au sort une quarantaine de personnes dans la population. On remarque que ce type d’assemblée est sociologiquement plus représentative et des expériences ont montré que cela peut bien fonctionner pour prendre certaines décisions."

Cool. Cette approche est en phase avec la déclaration de politique faite par la majorité après les élections d’octobre 2018 et elle va dans le bon sens. Mais la phrase qui suit refroidit fortement l’enthousiame.

"Notons qu’une assemblée tirée au sort ne résout absolument pas la question de la participation de tous et régulièrement : on reste dans une délégation du pouvoir à un petit groupe !"

Curieux argument, comme si Ecolo y allait à reculons plutôt que de plonger franchement. En répétant l’opération de tirage au sort fréquemment, sur le plus de sujets possibles, les citoyens deviendraient tour à tour gouvernés et gouvernants. On pourrait parler de "démocratie représentative aléatoire" (D. Van Reybrouck, Contre Les Elections, p. 84). Cette rotation assurerait entre autres une large prise en compte d’une diversisté d’opinions et neutraliserait l’influence personnelle.

Surtout, cette délégation est d’une toute autre nature que celle issue du suffrage, car elle laisse à chacun la chance d’exercer à un moment donné un morceau de pouvoir, sans avoir à convaincre autrui de voter pour soi, dépassant ainsi les limites du système représentatif (conflit d’intérêt à être ré-élu, consignes de vote des partis, désalignement avec le citoyen, politique rebuttante pour la plupart etc).

Donc, en effet, cela ne résout pas la question de la participation régulière de tous. Et alors? C’est déjà terriblement mieux que de concentrer le pouvoir communal entre les mains de quelques personnes (un peu plus de trente si vous êtes optimiste, une demi-douzaine selon moi). Le fait que cela ne soit pas la panacée à notre crise démocratique n’est pas pertinent alors que cela améliorerait déjà sensiblement la situation.

Tout ou rien

Autre bémol de taille :

"Peut-on se passer des représentant·e·s, élu·e·s ou tiré·e·s au sort, en faisant négocier toutes les décisions par l’ensemble des citoyen·ne·s? L’ordre du jour des conseils communaux compte en moyenne une cinquantaine de points tous les mois…​ On perçoit vite que ce système appliqué à la lettre serait totalement inefficace et chronophage."

Attends un peu. Cela ressemble à un faux dilemne. Ce n’est pas parce que plus de participation est demandée ou souhaitable qu’il faut que tout se fasse de la sorte.

Les décisions sur les sujets essentiels à l’avenir de la commune devraient être prises par un grand nombre de personnes, dans un processus à plusieurs étapes. Les points moins importants peuvent être décidés à mon sens en petits comités, car la confiance va dans les deux sens. Mais à condition qu’il y ait des mécanismes équilibrés de contrôle, d’invalidation et de révocation qui font cruellement défaut aujourd’hui.

Plus fondamentalement, le nombre importants de points à traiter lors de chaque conseil communal est une conséquence du système représentatif. Parce qu’il fonctionne sans participation, ou avec une faible participation, il peut se permettre d’enchainer les dossiers sans (trop) demander l’avis du citoyen. On fonce, on avance. C’est privilégier la quantité à d’autres critères, dont justement l’implication du citoyen, qui demande du temps mais est de nature à produire des décisions plus adaptées, mieux acceptées et plus légitimes. Et qui suppose surtout de laisser les commandes aux autres. Dur dur…​

Une fausse voie médiane

"Reste la voie du milieu : soumettre les décisions les plus importantes à l’avis de chacun·e."

Dans l’esprit de la majorité à OLLN, il s’agit de participation consultative, et non pas décisionnelle. Les citoyens ne sont pas aux commandes et leurs "décisions" ne sont, dans le meilleur des cas, que des indications laissées à l’appréciation du pouvoir en place.

Une voie médiane serait plutôt une parité entre citoyens tirés au sort et élus, peut-être dans deux assemblées distinctes, faisant jeu égal dans la prise de décision. Ou bien d’autres formes à expérimenter, ce ne sont pas les idées qui manquent. Même en y allant progressivement.

Se contenter de demander l’avis des citoyens dans des cas limités, c’est de la participation citoyenne d’apparât. Un ersatz de démocratie. Arrêtez d’être frileux, bon sang!

Le spectre de Kayoux et le fatalisme d’Ecolo

Pour ceux parmi vous qui connaissent Kayoux, les références implicites au projet de ce collectif citoyen (dont je fais partie) transpirent du billet d’Ecolo ("élus comme porte-parole" qui est le coeur de projet de Kayoux, et abordé sur 2 paragraphes de leur billet, rien que ça). Même si cela ressemble à une justification ou à une réaction épidermique, je trouve ça amusant.

Comme quoi, les idées de Kayoux commencent à faire leur chemin, à percoler, à chatouiller - ça tombe bien, c’était le but recherché : être un cailloux dans la chaussure des partis traditionnels pour les pousser vers l’avant.

Enfin il y a dans ce billet d’Ecolo une grosse proportion de fatalisme : "…​ ne résout absolument pas la question de …​", "dans le cadre légal actuel…​", "la difficulté liée à la récolte de l’avis de l’ensemble des citoyens", "cela [la consultation populaire] ne permettrait pas au citoyen·ne de négocier"…​

Ah beh ça alors, vous pensiez que cela allait être facile de se défaire de plus d’un siècle de système représentatif bien rôdé, de mauvaises habitudes, pour le remplacer par quelque chose qu’on n’a plus vu depuis l’Antiquité et qu’on devra sans doute fabriquer de toutes pièces (durables)?

Retroussez vos manches. N’ayez pas peur d’expérimenter. Demandez de l’aide dans la salle, vous en obtiendrez. Apprenez à faire confiance et lâchez prise. Vous ne pourrez pas échouer de la sorte.

Réf: Bulletin Communal d’avril 2019, "Pendant 6 ans, entretenir la flamme de la démocratie!", p. 45.

 Le gouvernement impossible

Constituer un gouvernement fédéral semble une fois de plus compliqué après les élections. Il se dit qu’avec les "exclusives" des partis, cela pourrait même être impossible.

Pour y voir plus clair, votre serviteur a écrit un simple programme qui affiche toutes les combinaisons possibles de gouvernements, en tenant compte des sièges obtenus par chaque partis, de leurs incompatibilités, et de ne pas dépasser une certaine proportion de francophones ou de néerlandophones.

A ce stade, ça semble jouable 🙂🇧🇪

Government with 6 parties and 78 seats: (PS (20), CD&V (12), PVDA+/PTB (12), Open Vld (12), sp.a (9), ECOLO (13))
Government with 6 parties and 75 seats: (PS (20), CD&V (12), Open Vld (12), MR (14), sp.a (9), Groen (8))
Government with 7 parties and 86 seats: (PS (20), CD&V (12), PVDA+/PTB (12), Open Vld (12), sp.a (9), ECOLO (13), Groen (8))
Government with 7 parties and 80 seats: (PS (20), CD&V (12), Open Vld (12), MR (14), sp.a (9), Groen (8), cdH (5))
Government with 7 parties and 77 seats: (PS (20), CD&V (12), Open Vld (12), MR (14), sp.a (9), Groen (8), DéFI (2))
Government with 7 parties and 79 seats: (PS (20), CD&V (12), Open Vld (12), sp.a (9), ECOLO (13), Groen (8), cdH (5))
Government with 7 parties and 76 seats: (PS (20), CD&V (12), Open Vld (12), sp.a (9), ECOLO (13), Groen (8), DéFI (2))
Government with 8 parties and 88 seats: (PS (20), CD&V (12), PVDA+/PTB (12), Open Vld (12), sp.a (9), ECOLO (13), Groen (8), DéFI (2))
Government with 8 parties and 82 seats: (PS (20), CD&V (12), Open Vld (12), MR (14), sp.a (9), Groen (8), cdH (5), DéFI (2))
Government with 8 parties and 81 seats: (PS (20), CD&V (12), Open Vld (12), sp.a (9), ECOLO (13), Groen (8), cdH (5), DéFI (2))
Government with 8 parties and 75 seats: (CD&V (12), Open Vld (12), MR (14), sp.a (9), ECOLO (13), Groen (8), cdH (5), DéFI (2))

Résultat des élections

Crédit image : La Libre

 Smart City OLLN et contrat bancal

La Ville d’Ottignies-Louvain-la-Neuve mène depuis près d’un an un projet pilote de commune dite intelligente, ou Smart City selon l’appelation anglophone communément utilisée. Pour ce faire, elle a passé un contrat avec Proximus. Et bien qu’il ne s’agisse que d’un pilote, et que le projet soit déjà bien engagé, cela vaut la peine de jeter un oeil sur la convention qui lie les deux parties.

Un contrat déséquilibré, rédigé largement à l’avantage de Proximus, avec des clauses d’exclusivité, de limitation de responsabilité, et lui conférant la propriété des données, laissant la Ville au bon vouloir de son "partenaire", si on peut parler de partenariat dans de telles conditions. Avec en plus des clauses de confidentialité à la fois inquiétantes et ridicules.

En espérant que la Ville, si elle décidait de conclure un contrat au-delà du pilote, ne s’engagerait pas à nouveau sur une base aussi défavorable.

 Fritz!Box DSL monitoring in Python

Let’s start off the year with a small home project. I have a Fritz!Box 7430 DSL gateway (wireless router and VDSL modem). After I ran into degraded performance, I wanted to record how my line performs. The box has a web interface with mighty functionalities and it exposes nerdy data - although I’m still looking for the obvious "disconnect DSL" button, dude please. The interface is surprinsgly clear compared to the standard market crap (bbox I’m looking at you). It’s more expansive than a Sagem counterpart but it’s well worth it.

DSL Summary screen

So you can get info like:

  • Current throughput

  • Maximum attainable throughput

  • S/N ratio

  • CRC error count

  • Approximate cable length

and much more that I can imagine a usecase for.

DSL Info screen

But it does not record historic info, so I have no way to nag my ISP about reduced performance over the long run. And an error may be present long before I realise it (for instance after I started playing an online game or after I elected to Netflix and chill).

The obvious geeky thing to do was to write a tool that collects the relevant data. Python was the tool I needed for the job.

The main obstacle was to figure out how to simulate the login screen. For some reason (maybe an illusion of security by obfuscation?), the login process relies on a javascript md5 encoded challenge. After I figured out what was going on, I found code emulating that process on GitHub and re-used it.

Too bad the FritzBox firmware is confused about how to handle data. On some pages, you can see JSON served by the box. But unfortunally, the info I need where stored on a page fully generated in HTML. So I went for good old ugly HTML scraping.

I still have to figure out how to interpret data and how to act on them. Probably I’ll add simple alerts for obvious cases.

In the meantime, here it is, licensed under GNU GPL.

Happy hacking

Older posts are available in the archive.