Skip to main content

· 8 min read
Bruno PC
The engineer term would drive Jackie Chan crazy

Here's the description of a job I was offered recently:

SDETs: Typescript / Cypress.io, JMeter (performance testing), Selenium. Used to working as automation engineers in stride with development.

Problem with that? Contrary to the U.S., the Engineer term is strictly regulated in Canada. If you call yourself an engineer, you risk fine and injunctions.

Engineer term in the US

In the U.S., "engineer" is more loosely used, in the sense that it can be included in a job title name. On November 18, 2022, the IEEE - Institute of Electrical and Electronics Engineers - published a position statement where they clarified the use of the Engineer title in job description:

Generally, the public interprets the term, “Engineer,” more broadly than is represented by the protected titles. […] It is the IEEE-USA position that:

Individuals who have graduated with an engineering degree from an ABET/EAC accredited program of engineering education should not be prohibited from using the title “Engineer.”

The protected titles “Professional Engineer,” “Licensed Engineer,” “Registered Engineer,” and variations thereof, should be reserved for those whose education and experience qualify them to practice in a manner that protects public health, safety and welfare -- and who have been licensed to practice engineering by a jurisdiction.

The leading software companies are in the U.S. The term Enginner is used widely there to clearly state the conceptual and implementing challenge of the job:

  • Software engineer
  • Data engineer
  • Automation engineer
  • SDET (Software Developer Engineer in Test)
  • DevOps Engineer

Engineer term in Canada

In Canada, the term "Engineer" is strictly prohibited, even from engineering graduates.

Job postings: Advertising an engineering related job without requiring licensure from the engineering regulator in the province or territory where the work will be taking place may have legal implications. Requiring eligibility for licensure in the job posting is a a first step, but the newly hired person must be licensed before practicing engineering.

Fun observation, a simple search on LinkedIn proves that it doesn't prevent companies from posting "Engineering" roles.

Illegal Engineering job postings

It prevents people from using the official job posting of the company in their own resume and online profiles. Hypothetically, what happens if they want to publicize this experience to apply for a U.S.-based job? Are they allowed to use the term Engineer then because it implies a different regulation? What if a Canadian citizen goes in the U.S. for a couple of years to work as a Software Enginner role and then comes back to Canada? Is he allowed to use that job title, since his past experience was in the US?

Misconceptions on expertise

Data Enginner/Data Analyst

As the term is strictly regulated in Canada, the job title often gets wrote as an alternative term. For example, to replace the "Data Engineer" title, engineerscanada recommends the term "Data Analyst" as the first replacement choice.

Problem with that? As they are not the same job, someone doing data engineering will most likely be misinterpreted as someone doing Data Analysis, which will get misconceptions from the hiring teams.

Is There a Difference Between a Data Engineer and a Data Analyst?

Yes. A data analyst combs through quantitative data to glean patterns and report them for strategic decision-making. A Data engineer, on the other hand, formulates tools to help with data transfer, data analysis, and other workflows that are peripheral to the actual data itself.

SDET/QA

Another example is the term SDET - Software Development Engineer in Test. I was personally executed multiple SDET roles in my last jobs, including a SDET Tech Lead mandate. My job was pretty much the same as that of a Software Development Tech lead: I was performing conception, design, technical leadership/optimization, coding, deployments, and training for my team.

However, because SDET term may have legal consequences in Canada, I often get referred as a "QA". A QA often refers to someone manually testing software.

QA tester would just use the Application/System under test as any normal user/customer would use but with a focus on more minute details as well as edge scenarios by trying different input combinations, etc.

Because my last role is often put in then QA bucket, I currently have several marketing problems:

  1. Following my SDET technical lead mandate, I keep getting invitations for manual QA roles, which I keep refusing.
  2. Some people interpret my refusals as a no-go for all QA roles, which is a shame because it all depends on the mandate: some QA mandates (as they won't be called SDET) are conceptually challenging and therefore well suited for me. Some people also interpret SDET and QA as synonyms. QA is a department or a role, but it's not a job profile or job title like SDET is. A proper job title would be "Manual tester" or "QA Operator".
  3. Having done several SDET mandates, I sometimes get refused by some companies that don't properly read my resume and think I lack technical capabilities for a developer position. This is ironic, because a Software Development Engineer in Test requires expertise on top of the Software Development skills.

Court case: APEGA vs Jobber (Octopusapp Inc)

A current court case may precisely rules on the use of the Engineer term within the software industry.

The Association of Professional Engineers and Geoscientists of Alberta (APEGA), has asked a court to order one of the province’s leading software companies, Octopusapp Inc., known as Jobber, to stop using the term “engineer” in job titles and postings unless it gets a permit from the regulator.

That has caused an uproar in Alberta’s tech sector. On Friday, the Council of Canadian Innovators (CCI) published an open letter signed by chief executive officers of 32 Alberta tech companies, including Jobber’s Sam Pillar, calling on Premier Danielle Smith to stop “regulator overreach” by APEGA.

“The term ‘engineer’ has been used in software for decades,” said Dax Dasilva, executive chairman of Montreal’s Lightspeed Commerce Inc. “I don’t believe more regulation around terminology is suddenly necessary.”

While I don't agree with the word "overreach" here - this is not an additional regulation; the APEGA just applies the rules of Canada as they've always been - I agree 100% with the fact that we should synchronize our regulation with the U.S.

Remote American jobs as the next Northvolt?

Governments are very proud of local, cutting-edge technological jobs. My local governments just announced up to 7,3 billion dollars in investment for a battery mega-factory. That factory should create 3000 well-paid jobs. Per job, that's an investment of... 2.5 million dollars. Profitability will be far, far away...

To create 3,000 well-paying jobs, can we do better? Canada has around 10,000 software creators. With the labor quality being equal, and as the cost of living is way cheaper in Canada than in the U.S., I wouldn't be surprised if the U.S. tech industry were interested in engaging thousands of remote workers from Canada in the next years.

However, the current mismatch between the Engineer term is a setback for Canadians as they can't publicize themself as "Enginner" on LinkedIn. They won't appear in "Software Engineer" searches from job hunters. It's unfortunate because it's the most accurate job title for any software generalist builder that can tackle all tasks from the client's requirement to maintenance and all the steps in between.

Conclusion

The reserved engineering term made sense at the time. I want my local authorities to have the power to forbid someone to build a bridge, a plane, or a car if they don't respect the safety of people. That was the goal. With that said, I have trouble understanding how permitting someone calling himself a "Software Engineer" will threaten public security.

Having a required "P. Eng." for any job that pose a risk for human safety like in the U.S. would be a good compromise. You write software for a production self-driving car? You'd be required to be P. Eng. Otherwise, simply requiring an Engineering degree to use the word "Engineer" would be fair to me.

Also, in a world where Banks and payment methods rely more heavily on software every year, where financial institutions can be affected with data theft that affects 4,200,000 people, I would like to see more Software engineering jobs requiring the P. Eng. title. I also hypothesize that P. Eng. obligation could be better when sensitive data is managed like when storing social security numbers, or for the software built for telecommunication networks. Remember the 2022 Rogers Communications outage?

· 13 min read
Bruno PC
Woman cycling with mask

Summer 2023, wildfires are terrible in Canada. Air quality deteriorates: Montreal becomes temporarily the worst city in the world for air quality. This is the most direct effect of climate change so far. It is in our face.

With the effects of global warming increasing every year, I suspected it marked a turning point. In the future, we won't enjoy the constant freedom of breathing in fresh air whenever we step outside. We'll have to pick the moments, like during Canadian winters when snowstorms hit: we'll need to stay indoors, close windows, and wait for conditions to improve. Or do we?

This is when I began searching for a specific and detailed model of what to do for different outdoor air pollution levels. Unfortunately, all the advice I found was binary "Exercise is ok in the orange zone (100-150) but not ok in the red zone (150-200)" or was extremely vague "You can wear a N95 mask, but don't stay outdoors too much". I wanted to know: could I still train outdoors? Could I exercise if I wear a N95 mask? Should I minimize my exposure time? For how much, exactly?

Here I try to answer that question, as I believe I can contribute with my analysis.

caution

There's a lot of assumptions in that model - explained the best I could - but it's still far from being perfect.

I am by no means a medical professional. Don't ask me for medical advice: I won't answer you. I just like to aggregate data the best I can for myself, and share it with others.

This model was built to be as generic as possible, but I used my context as the baseline - your context may differ.

Model context

For building the present model, I considered only the PM2.5 pollution level in the air. This is the type of pollution mostly affected by wildfire & the metric that almost always dictates the air quality where I live here in Montreal. Know that there's a lot more (PM10, O3, no2, etc.).

This model is targeted for athletes. That means two things:

  • Athletes are already doing 10+ hours of intense physical activity per week. Skipping a day (or even a week) of training won't decrease the global, long-term health benefits they get from exercising. When the air is polluted, day-to-day outside exercising then becomes an all risk, no benefit scenario, as the health gains are already mostly maximized.
  • The increased PM2.5 exposition from increased breathing need to be taken in consideration. When you're just walking of traveling by bike, your breathing rate doesn't increase much. However, when you're doing proper training, it will increase much more.

Health benefits from exercising

If you're not doing enough physical exercising to maximize the health benefits, this model will probably be too cautious for you, as it doesn't account for the health gains you'd benefit from more exercise. For example, a health gain for active transportation via cycling is present up to 5h a day at PM2.5 of 50 (AQI of 137).

Health effects training at PM2.5 of 50

Even in the most polluted cities in the world, it's healthier to exercise outside than it is to not exercise at all:

Even with a reasonably high PM2.5 concentration level (e.g., ∼180 µg/m3), it would still be safe for the majority of people, except for those aged 60 years and older or with existing chronic conditions, to engage in MPA outside for at least 2.5h per week.

180µm/m3 (AQI level: 230) is considered a super high level here in Montreal. It is basically the peak level when Montreal reached the most polluted city last summer (239). And even at that point, it's healthier to exercise 2.5h per week outside then to not exercise.

I fear that the advice "don't exercise outside today" will be misleading the majority of the population. Non-athletes need to understand that they still benefit from a dog walk or a bicycle commute outside.

You don't believe me? Know that having an athlete level "elite" VO2max - the maximum level of oxygen consumption - is associated with a 5-fold reduction in all cause mortality, which is more than smoking. And smoking is much more harmful to you than any level of pollution.


So if you never exercise right now, tackle that habit first. You'll be able to optimize your pollution level later.

Breathing rate

Breathing rate has been studied to be proportional with oxygen consumption. Exposition to pollution is also proportional with exposition time outside.

Personally, my average power for a proper cycling workout is around 210 watts.

Using the Zwift hack MAP and FTP Calculator, I figured a power of 210 watts is approximately 45 ml/kg/min VO2 - 60% of my estimated VO2max. Breathing rate can increase by a factor of 5 during exercise, so I estimated a proportional breathing rate: 60% * 5 = 3.

That means that 1 hour of a proper cycling workout outside is the equivalent of being outside for 3 hours.

For running, I used a breathing increased rate of 4 as VO2 (oxygen demand) is measured to be ≈30% higher for running then cycling for the same energy expenditure.

Finding acceptable baseline

What does acceptable risk means?

We need a risk baseline, or an acceptable outside air pollution level. The general consensus if that healthy individual should start taking precautions over an Air Quality Index of 100, or a PM2.5 concentration of 35µm/m3.

Air quality level advice table

I also found the AQI to Cigarettes Calculator from Jasmine Webb. There, I learned that a 24h exposition of a 22µm/m3 PM2.5 concentration roughly translates to the health effects of smoking a cigarette. I'll use this metric because I think it's much more understandable for me and most people.

If we divide the "safe" pollution level of 35µm/m3 by 22µm/m3, we get a maximum daily cigarette dose of 1.6. That's gonna be the acceptable baseline. At 1.6 cigarettes or more, I'll be looking to reduce pollution exposition.

As it's a maximum daily exposition, we need to subtract the pollution dose that will occur outside of training.

Advice here, to lower that amount, that day:

  • Avoid cooking - it is the most common PM2.5 source at home. Even if you use a fan to exhaust cooking fumes outside, the risk is still to create a low-pressure zone in your house, which will make your home suck the bad air from outside.
  • Use a good, powerful enough air filter. The air filter level should be increased with ambient pollution - if AQI level is high, put it at high.

If you follow this advice, I hypothesize that the level of PM2.5 exposure will be pretty low.

To calculate how much to subtract, I used the average outside PM2.5 concentration for the past year in Montreal - 8.3µm/m3. That number divided by 22 get us an "ambiant" dose to subtract. I could have subtracted the time from training - let’s say multiply this dose by 19/24 for a 5-hour training. However, I don't know if it's possible to get a PM2.5 level that low during a pollution wave, even with the use of an air filter. I guess I will have to buy myself a PM2.5 monitor to confirm.

Let's carry on. The acceptable pollution dose from training should be no more than 1.6 - (8.3/22) = 1.2 cigarettes.

The efficiency of masks for air pollution

Masks (even N95) aren't perfect. N95 are certified to 95% for particulates as small as 0.3 micron. Yes, they will protect you significantly, but they may still make you breathe even smaller particulates. I'm sure these particulates exist, it would be naïve to think the opposite. That's why my intuition tells me we should look deeper for the effectiveness of masks for such scenarios.

I found out that N95 masks lower the pollution exposure to a factor of 14, and lower the hospitalization risk by a factor of ≈3.2. The latter result seems to be more relevant to us. As I suspected, they are not perfect, as the risk is still increasing with pollution rates. The curve is just less pronounced.

Relative risk with or without mask

For the current model, I will use a 3.2x dose reduction ratio to estimate the effect of wearing a N95 mask.

Sport specific AQI limits

Because every sport has its own context, we need to estimate limits for each.

🚴‍♂️ Road cycling

For road cycling, pollution from cars has to be taken into consideration. Training on a high-traffic road doubles the amount of PM2.5 exposition from ambient levels.

This is the scenario most likely occurring if you exercise on the road, with a lot of traffic. This is a worst-case estimation as it's rare that 100% of training time will be in a very traffic dense area (if you do, I feel sorry for you).

AQI limits for road cycling

For road cycling on a high-traffic road, the AQI Index limits would be

  • 144 for a 2-hour ride / 220 with N95
  • 99 for a 3-hour ride / 181 with N95
  • 81 for a 4-hour ride / 166 with N95
  • 70 for a 5-hour ride / 157 with N95

🚵 Nature cycling (Gravel/MTB/CX)

Here we assume we are away from any close source of pollution (cars, factory, etc.)

AQI limits for nature cycling

AQI Index limits:

  • 177 for a 2-hour ride / 387 with N95
  • 160 for a 3-hour ride / 275 with N95
  • 144 for a 4-hour ride / 219 with N95
  • 118 for a 5-hour ride / 192 with N95

🏃‍♂️ Running

We consider that running is done away from pollution, in a low-traffic area.

Running limits can be considered for other sports like soccer, but also for less intense activity like hiking or walking. AQI limits would be higher for these, so if you're safe to run, you'll be safe to walk or hike.

AQI limits for running

AQI Index limits:

  • 316 for 30 minutes running / No restriction with N95
  • 208 for 1h running / 500 with N95
  • 163 for 2h running / 304 with N95
  • 143 for 3h running / 219 with N95
  • 111 for 4h running / 188 with N95
  • 92 for 5h running / 174 with N95

Dashboard

Let's say we have an AQI of 166. Here's what an advice dashboard may look like:

Time🛣️🚴‍♂️🚵🏃‍♂️
0.5h🟢🟢🟢
1h🟢🟢🟢
2h😷🟢😷
3h😷😷😷
4h😷😷😷
5h🚫😷😷
6h🚫😷😷

I'm planning to implement this dashboard on my weather report app, so stay tuned!

What about intensity?

The fact is that intensity will increase your breathing rate, but it's not the most important factor. Take running: at worst, it will worsen your dose by 25% (the current model is already considering you will be at 80% breathing rate). Time is much more important here: in fact, the more it's polluted outside, the more you should considerate shorten your workout and make it count by going more intense. Let's say you choose to do a quick, 20 minutes all-out effort: your pollution dose will be equivalent to someone doing a 25 minutes moderate run.

Moreover, higher exercise intensity may even be less harmful than low intensity:

Surprisingly, “there is some evidence that shorter high-intensity exercise bouts are less harmful than longer low-intensity ones,” Hull said.

For a 2014 study, Koehle and his colleagues tested the lung function of cyclists while they alternately rode slowly or intensely in polluted air. Unexpectedly, the riders experienced more difficulties breathing while riding gently than when they pedaled all-out.

The reasons are not altogether clear, but the practical implications are, Koehle said. If smoke hangs in the air, keep your workouts short and sharp, rather than long and slow. The fitness benefits will be about the same, but your “air-pollution exposure” will be much less, he said.

Outro

Whatever the air quality is (within the AQI model), there's some physical activity you can do outside without catching a massive pollution dose. Even with a 500 AQI, there's the possibility for a 60 minutes run with a N95 mask. From what I see, while air quality is a serious concern for the following decades, it's pretty manageable with simple adaptations, even for serious athletes.

That being said, there's another factor in air-related health problems: inside air. This is the thing with air pollution as I understand it: it's like radiation, in the sense that it depends on the total dose received. Wherever you go, the localized pollution will add up to your total exposition. The World Health Organization (WHO) updated its air quality guidelines in September 2021: the annual average shouldn't be over 5µm/m3 to prevent most pollution-related problems.

Deaths from pm2.5 concentrations

As I wrote this article, the trailing year average for Montreal (2023-09-26 to 2023-09-25) is 8.3. Not much over the limit, you'd say. However, as it's an annual average, a tiny change can affect a lot on the total dose received. Reducing from 8.3µm/m3 to 5µm/m3 would be like a reduction of 55 cigarettes a year. That's also the equivalent of 46 training doses occurring in a polluted area from the current model. I'm not an expert, but it seems to be a significant amount to me.

Moreover, and counterintuitively, the smaller the concentration, the higher the impact of a pollution reduction is. In other words, a reduction from 10 to 5µm/m3 will have more positive effects than a reduction from 100 to 95µm/m3.

It looks like reducing the average indoor PM2.5 concentration from 8.3µm/m3 to 5µm/m3 will have even a bigger impact than 46 training doses within the current advice model. I already have a powerful air filter, but this analysis has convinced me to buy an air quality monitor for my home.

Take care of your air, year-long.

If any of my assumption, source, or deduction is wrong, I'd be pleased if you share that to me, as I'm eager to develop my knowledge on the topic.

Spreadsheet for AQI limits

Thumbnail image from Nasirun Khan

· 11 min read
Bruno PC

I'm currently reading a fantastic book from Peter Attia: Outlive - The Science & Art of Longevity. The book emphasizes the fact that traditional medicine - Medicine 2.0 as he calls it - is shaped around the notion of healing at the very end of a disease lifespan, like the crew of the Titanic tried to save the ship at the last minute, even after being warned hours before the incident.

Titanic crew realizing the shit

Unfortunately, attempting to eliminate a rampant, evolving disease in its advanced stages significantly reduces the chances of recovery. Moreover, even in cases of complete healing, patients often find themselves in a state of suffering for the remainder of their lives. This is because the body, having deteriorated over decades, lacks the resilience to fully recover.

Peter Attia questions the relevance of healing someone in the late stages of life if it only prolongs a state of pain for several years. What's the purpose of being alive if you can't pursue what you love? Is the achievement of extending life by another five years considered a medical success if it means enduring prolonged suffering confined to a bed during that time?

Outlive - The-Science & Art of Longevity

Traditional medicine has embraced a proactive approach in some of its practices. For instance, it advises people not to smoke at all rather than suggesting they quit smoking only after reaching 50 years of age, which would be rather absurd. However, there is still ample room for improvement by extending this philosophy to other diseases such as diabetes. Dr. Attia, who refers to this as Medicine 3.0, advocates for a significantly more proactive approach. In essence, it strives to prevent encountering icebergs altogether before there's a need for a catastrophic course correction.

A lot can be done to help you live longer and, more importantly, live better for as long as possible. Exercise, nutrition, medications, and supplements are all covered in this cutting-edge book, which presents the latest medical evidence on how to stay as youthful and capable as you can. In other words, it explores how we can be the best version of ourselves for as long as possible.

How does this apply to software engineering?

Successful software projects are still a minority. More than half of the projects hit at least one iceberg.

There's a lot of "icebergs" in the software engineering world. Today, I will talk about two of them:

Strategy absence

Strategy without tactics is the slowest route to victory. Tactics without strategy is the noise before defeat.

-- Sun Tzu, author of The Art of War

Software engineering is an optimization problem. You need to balance multiple software variables. Here's a list of the most important software qualities, that need to be considered:

  • Maintainability - Defined by the easiness of code editing over time
  • Performance or execution efficiency - Defined as resource usage or execution time
  • Reliability - Defined as the availability (uptime) of the application
  • Accuracy - Defined as returning the best result/answer to a request
  • Usability - Defined as how simple it is for a new user to use the software without any guidance
  • Security - Defined as its difficulty to hack
  • Compatibility - Defined as how easy it is to connect it to another software/system

Every use case is different, and it's impossible to have all the best qualities in a product at once. A Ford GT is not built to be convenient, a Dodge Caravan is not built to be fast. You could have a sports car more comfortable than the others, or have a minivan model faster than other minivans - but you'll never have a car faster than a sports car and more convenient than a minivan at the same time.

You have to choose. Choosing not to decide will result in reality imposing a mediocre standard all across the board. Therefore, the focus from the development team must align with the business requirements of the product built.

Are we building a payment app? Availability will be the #1 factor, as being out-of-service would have tremendous consequences.

Are we building a video game? Execution performance is critical.

You get the point, these are easy answers. However, for a lot of products, the strategy is a lot more nuanced than this. It will depend on the marketing strategy of the company and the marketing strategy of the product. Do you sell cutting edge technology? I would prioritize performance. Social status? Look at Apple products: prioritize usability. Peace of mind? Make reliability and security #1 on the list. Durability? Emphasize on maintainability and compatibility.

The development team needs to understand all that, because how you define your product will have impacts on how the software should be built. In a lot of businesses, there's absolutely no communication between the marketing team and the software development team. Without guidance, everyone has a different idea of what qualities should be prioritized. The team will lack cohesion: at best, work done by some developers will be unuseful. At worst, developers will be counterproductive with each other.

It's like health. What does "healthy" means? It depends so much on the context. Even a Coca-Cola can be healthy - for example, if you're giving it to someone having a hypoglycemia crisis.

A good health strategy should be personalized. Like Dr. Attia wrote in his book:

This is where most people make a wrong turn. They want to take a shortcut, right to the tactics: this is what to eat (and not eat), that is how you should exercise, these are the supplements or medications you need, and so on. [...] Instead, I believe this is exactly where we need to hit pause and take a step back, lest we skip the most important step in the process: the strategy.

Yes, there are good coding practices and conventions, but everything has downsides. "Good practices" are not absolute, they make sense only for a particular context. For example:

  • Adding security for a threat that doesn't exist is throwing money out of the window. This could in itself prevent you from adding security for a threat that is very likely to occur.
  • Emphasis on "perfect code" for a temporary MVP will delay time to market, for a codebase that will most likely exist for a couple of weeks at worst. If you put too much time into the best practices at this stage, you may delay the time to market and sink the ship.

Does your team has a clear strategy?

Technical Debt

In most engineering fields, there's execution wear involved. Let's take a car motor: carbon deposits, rust, friction, metal wear will make the mechanical parts less and less efficient, until the motor dies. Because of this, motor maintenance will prolong the lifespan of the car.

Let's say you change spark plugs or replace oil on your car. You are improving its execution (better ignition, better fuel economy, etc.). Moreover, because you put new parts, the lifespan of the motor is extended by your actions. There's less risk involved in replacing the spark plugs or changing the oil then there is to not do it. If you do it regularly, motor can last 200,000+ miles. If you don't do maintenance, it could blow up after 40,000 miles, or worst.

Software engineering is unique in the sense that code doesn't wear out. Computers are digital: therefore, results are either exact or wrong. Code never lies: it will execute exactly how you wrote it. If the code stays the same, the result and the execution cost will be the same from the 1st to the 1,000,000th execution. No need to clean or to replace parts. Contrary to other fields, time will not change the quality of the result.

Every time you edit the code, you have to change the already existent codebase that is, by definition, describing an exact behavior. So every time you're touching it, you pose the risk of completely ruin the end result of the algorithm. That's why developers are often afraid to edit the code. If they have to implement a new feature, they will often do it outside of the existing codebase. The problem with that? Duplicated logic, exponential code growth: the code will complexify more and more as time pass. This is our second iceberg: technical dept.

Shipping first time code is like going into debt. A little debt speed development so long as it is paid back promptly with a rewrite... The danger occurs when the debt is not repaid. Every minute spent on not-quite-right code counts as interest on that debt. Entire engineering organizations can be brought to a standstill under the debt load of an unconsolidated implementation.

-- Ward Cunningham, co-author of the Manifesto for Agile Software Development

The complexity can become so high that it can eventually freeze the entire project, where no one can understand what's going on anymore.

In summary, we can conclude that:

  • In most engineering fields wear naturally increase with time
  • In software engineering, wear (or technical debt) comes from human

Multiple solutions can resolve this problem:

  • The software team need to understand the importance of "cleaning the house" every time a feature has been done, even if it's not sexy. Shipping the feature in production, more often than not, doesn't mean the work is done. The code also requires a cleanup after that.
  • Automated tests act like an insurance. If something breaks, it will be caught and it will be shown where it's breaking. That way, the team will be far more comfortable cleaning the house. Automated tests prevent problems on their own, but have another upside to them: developers will also be more comfortable working with legacy systems, so deeper their expertise will be. That is another reason why automated tests mean faster development time and fewer errors.
  • The business department needs to be conscious that putting pressure on the software team multiple times in a row to deliver faster will increase the technical debt. It can be done, but it will be at the expense of future productivity.

Be aware of people that want a promotion as quick as possible. Like a government that borrow money to reduce taxes, they may favor the short-term productivity of the project by sacrificing the future vitality of the project.

Have a double T-shape developper

These icebergs (strategy absence and technical debt) can easily ruin your project solvency, even to the point it can threaten your organization profitability. They have one thing in common: a lack or understanding between the software team and the business team. I've seen so many organizations with business and software departments not understanding and putting the blame on each other, and frankly, both were right in their recriminations.

This is where a project manager that knows the inside-and-out of software development AND that has a business expertise is so precious. That person will alloy the business team to communicate in business terms (marketing strategy, upcoming finance delays, etc.) without worrying about managing a software team. After that, this interpret will be able to translate these needs into a complete software strategy, while teaching the business teams on the inevitable software hurdles that will occur along the way (like technical debt).

I emphasize that it has to be one individual. Otherwise, what's the point? Having two people for this role doesn't solve the problem: it would be like hiring a duo of a French teacher that doesn't speak English and English professor that doesn't speak French to translate an English book into French. Good luck with that.

A product owner, a scrum-master or a software project manager should know both worlds inside and out. Unfortunately, this job is sometimes occupied with someone who didn't ever write software at all, or sometimes, that doesn't have any background in marketing.

Sounds familiar?

· 12 min read
Bruno PC
Fuel your passion

I was listening to a podcast featuring my friend Olivier Jean, gold medalist during the 2010 Olympics in Vancouver. Towards the end, the host asked him a question that gets asked a lot: How do I find my passion? How do I maintain it enough so I can keep going on?


Having dedicated my life to speed skating for 15 years - I can relate to that feeling of being lost after a big journey that was ended. Especially between the years 2014 to 2020, it was a very challenging time for me. Looking back now, I definitely had a depression or some sort of existential crisis at one point.

In that time I tried a lot to find answers. Since I read a lot about that topic, I'd like to write what I understand on the topic, and what worked for myself.

First, a bit of theory. Based on psychology papers, there are two types of passion:

  • Harmonious passion
  • Obsessive passion

Harmonious passion

Harmonious passion is an internal one: you're motivated about practicing an activity because it brings you joy. Here we seek progress for itself: we want to progress just for the energy it brings you back after a great session.

It is based on a paying mindset. We pursue it just because we feel better doing it, and we are more mentally energized after it than before.

People that are more into harmonious passion tend to identify themself as participants of a bigger thing. They will say: "I'm a cyclist." "I'm a hockey player."

Harmonious passion is often viewed as childist or superficial, and I'll never be able to say enough how wrong this is. Harmonious passion is the one that will keep you going when you keep improving but you can't get results. Let's say you're running with the intention in beating Eliud Kipchoge in the next Marathon World Championships. Sound ridiculous, isn't it?

You can enjoy yourself the activity for itself, for your own progress. You'll be very happy about your results in you retract 10 minutes on your marathon time, for example. That's harmonious passion.

It's the most sustainable passion because you can't always win. In fact, even elite athletes loose more then they win. Novak Djokovic, since his first grand slam in 2008, has not won the grand slam tournament 56% of the time - and I'm talking here about one of the most dominant athlete of all time.

With hamonious passion, as your focus is to play, people will be happy to practice with you, so it's the passion that will keep you engaged with your teammates, coaches, mentors, colleagues or coworkers.

Firas Zahabi, head coach of Georges St-Pierre, said at the Joe Rogan podcast that it's a joy to spare with him because he's having a lot of fun during his training. He's not trying to crush everyone to show that he's the best: that is for the fight night only. That relaxed attitude is an important factor on why he's been able to train with a lot of talented athletes all over the world, but also a factor on why he's still so healthy today, physically and mentally.


I can personally give yourself a good exemple of harmonious passion that I experienced last summer.

First karting race of the season 2023, I was absolutely flying during the race, well challenging the top ten racers. I was so fast I could make driving mistakes and catch up with the front runners, which shouldn't happen. I learned I was the third fastest on the track at that specific moment.

Then another racer hit me from behind during a fast corner. My race was over.

My reaction? I was so happy. Not about the crash, but about my weekend. I was able to extract more speed than my last race at the same track - and it was already my best track ever based on results.

I didn't care about the end result - I was happy about my improvement. It motivated even more for the upcoming races. That is the sign of a solid harmonious passion.

Obsessive passion

Obsessive passion is linked to outside stimuli. If you're motivated about money, medals, winning, success, getting famous, etc. - You're in that category. It is based on what you have to gain from society to you. It is based on a "work" mindset. As you're not doing something for itself but for what has to be gained from it, it is linked to perseverance, tenacity. People with obsessive passion will tend to continue even if the practice of the activity has negative consequences in their lives. People more into obsessive passion will also tend to confound their own value with their results - they will see themselves as champions or losers. You can understand how's that mental rollercoaster is very hard on the mental side.

Here's some talk associated with obsessive passion:

  • "No pain, no gain"
  • "This is serious"
  • "If we wanted to have fun, we would have gone skiing"

Too much obsessive passion can be detrimental for the well-being, so you have to make sure that your harmonious passion - which is positive for your well-being - is strong enough on to support your mental health if you want to crank up obsessive passion. Otherwise, you'll be trading performance at the cost of mental health. It can work on the short term, but you'll blow up eventually.

In summary, to build yourself a model, you need to:

  1. Know yourself first
  2. Find an activity that matches your personality
  3. Implement a good strategy for improvement

1. Know yourself first

How does your brain - your personality and your emotions - work?

If you are a Myers-Briggs personality test believer here, sorry, but Myers-briggs test is scientific junk.



The most advanced scientific model for personality is the Big 5 Personality model.

Basically, there are five dimensions or spectrums to someone's personality:

  1. Extraversion, the degree of how much someone gains energy from social interactions
  2. Neuroticism, the degree of how much someone tends to experience negative emotions
  3. Conscientiousness, the degree of how someone tends naturally to execute the tasks they are supposed to do
  4. Agreeableness, the degree of how much someone tends to pleasure other people
  5. Openness, the degree of brain ability to link between concepts or think about abstract ideas.

Knowing yourself is critical, because it will predict how's a particular activity is correlated to improved mood on yourself.

2. Find an activity that matches your personality

For example, lower than average agreeableness people should seek competitions. It's an activity that will reward only the best ones. As less agreeable people tend to think in a selfish "What's in it for me" way, a competition is a great carrot for them.

People high in openness will be well fulfilled in activities with high creativity involved (arts, engineering). Basically, any type of activity where you need to think outside the box will be a good fit for them.

If you're very high in extraversion, you should choose something where you'll encounter a lot of people (like event organization or sales). If you're more of an introvert, you might find individual activities more enjoyable.

Personally, I have

  • A very high openness (I like to find new solutions, discuss complex problems). That's why I love engineering, science and philosophy.
  • Over then average conscientiousness (When I have an idea, I'm very prone to work on it until I realize my goal)
  • Over then average extraversion - I need to see people to refill my energy levels
  • Lower than average agreeableness (I love competition) and neuroticism (I stay calm even in stressful situations). This is a perfect match for my sports that are dangerous racing sports - Short track speed skating, Cycling and Karting.

3. Have a good strategy for improvement

Build yourself a passion model.

Based on your personality, you need to find the right balance of harmonious passion and obsessive passion. Since everyone is different, I think everyone has to build their own passion model - and that is what is so difficult about it. For example, I would hypothesize that someone with high neuroticism won't be able to stack as much obsessive passion as someone with low neuroticism. That's a journey you have to do yourself, as both passion types have their strengths.

Harmonious passion is a great foundation for success, because you will crave the practice of the activity naturally. Without harmonious passion, you'll never be able to be in the flow - a mental state where you're so immersed into the task that everything else disappears. The flow will make you experience your greatest level of performance at that specific moment. To be in it, you have to be detached from the outcome: that means not thinking about your result.

However, this is a fragile passion as it will disappear when no progress is occurring. "Progress" here is defined on whatever you gain internally from it (competency, health, great friends).

Let's say you're in a three-month-long training phase and you don't have any way to see if you're making progress yet. You don't know if you're getting better, you don't feel if your health is better, and you have to train alone. This is what is happening to me during the winter months while I train my cycling on Zwift. It is then very difficult to rely on harmonious passion during this 3-month period because harmonious passion will just die. So I just discipline myself, even if the results are not perceptible. And to discipline myself, I'm constantly tinking about my upcoming races I'd like to win.

I won't necessarily win, I'm aware of this. I continue training in the winter even if I'm not enjoying it - this is because I know this is temporary and I know my level will eventually rise when I am able to cycle outdoors again. When that happens, seeing the results, my harmonious passion explodes in joy, even if I didn't win - just seeing my improvement is enough.

Obsessive passion greatest strength is to fill the gaps when the harmonious passion is gone. As it is the passion associated with outside stimulus, it will make you practice even when you're not feeling it as you want that result. When you have to discipline yourself, this is the type of passion that will keep you on track.

Harmonious passion will come back to even greater levels when you improve yourself. Improvement is essential, though: this is why having a working training plan is absolutely essential. Relying on obsessive passion temporarily will work as long as you're getting results at the end. Otherwise, you'll be disgusted that all this work was done for nothing - and it's very likely that you will give up.

Have a pragmatic (and efficient) plan

Listen to wise people. Have a (good) coach if you can. They will prevent you from deadly traps. If you fall into a hole (making a mistake that stops your progress), you may never recover.

The thing I learned while reading Guillaume Delude "I am a gold digger" book is that progress is the fuel you need for further practice. See, the brain knows how limited your energy supply is. He doesn't want you to waste your energy for something that's bad for you. If your brain sense that you put energy that doesn't come back one way or another (by making progress, social interaction, etc.), you will eventually lose interest for that activity. If you ignore your brain and still try to push too hard, you're on the path of depression or burnout.

You need to figure out a way to build yourself a virtuous cycle. Where practice brings you motivating progress, like having a good financial investment. This increased motivation will lead you to practice more. That increased practice will lead to even bigger results.

To build the circle, it's absolutely critical that the actions you take are good one and not lost energy. This is where quotes like "No pain, no gain" can be toxic. The mentality is great if it's balanced and if you already have a working strategy, but otherwise, you will burn yourself.

The nuance between positive and toxic perseverance? The profitability of your efforts. If you progress, it's positive. If you put in a lot and you're stagnating, it's becoming toxic.

The same way people are sometimes in toxic relationships because it gives them short bursts of intense euphoria, you can also have toxic passions (overly obsessive ones). Passion can burn you, whether it is for someone or for an activity.

Build your passions, plural

"Finding your passion" is a bit misleading, because it's a process you mainly need to build, opposed as discovered, the same way that you build love over time in a healthy relationship.

Finally, I want to emphasize that after you become good at building these virtuous cycles, you can build multiple passions at the same time. Passion doesn't mean you can't have two, or three, or four! It's up to you how many you want.

When you understand the process, you have laid out the foundation of happiness in every aspect of your life: in love, for your family, at work, for your hobbies, and more.

Good reads on the topic

· 5 min read
Bruno PC

Job description

I was recently proposed a position as a Senior Software Engineer. Whether I'll get the job or not, I want to talk to you about something that never smells good: after-hours work. This is not for a startup or a product that rarely gets deployed; I'm talking about a multibillion company that will need to deploy countless times in the future. This primitive, obsolete, and outdated approach is how many companies still operate: waiting until nobody can use our platform/service, then deploying it manually.

Why after-hour deployments are bad?

For two main reasons:

Repulsive for the best candidates

After the Covid-19 pandemic, people have more expectation about their working conditions. For example, 51% of people are hoping for a better work-life balance. And they should be: it is the reasonable reality to expect given what technology permits in 2023.

I’m sure, as a responsible employer, that you are always searching for ways to improve the work-life balance of your employees, which, in turn, will give you the opportunity to attract the most competent candidates. However, all these efforts from your organization can be thrown out the window if you ask for your employees to do overtime time and time again. Manual deployment is a mentally taxing task for your employees - it drains mental energy without any real contribution to expertise.

You’ll never be able to recruit A-grade employees that way. And if A grade employees avoid your organization, guess what? B-level employees that are looking to improve themselves will lack the guidance they need. What does employees do when they lose their momentum forward? They start looking elsewhere. So you’ll be left with barely average C-grade employees.

Recurring Fees

Let’s say you need 3 hours of work, every month, with 8 people in the team, to deploy outside of operation hours, with a mean hourly cost of $60 x 1.5 = $80 an hour as it’s overtime.

$80 x 3 hours × 8 employees x 12 deployments/year = $23,000/year.

Now let’s say you have 10 teams that are deploying like that, costs really adds up…

Of course, for some specific situation (POC, MVP, deployments 1–2 times a year, etc.), automated deployment doesn’t make sense. For the rest of the projects, the cost of not doing it is far more important.

Moreover, the more tasks the project requires, the more people you’ll need. With the labor shortage, do you really think it’s a good idea?

What are the advantages of live automated deployments?

  1. 🤑 Avoiding paying overtime
  2. 🙌 Team spirit up: you’ll have a big relief from your employees. Yes, they make more money with overtime, but do you think they really like that?
  3. 😎 You’ll be able to attract and retain the best candidates as they will be able to work at the level or their competence.
  4. 👌 Ability to roll back to the previous version in a snap if anything goes wrong.
  5. 💨 Faster deployments mean your team can ship new features quicker
  6. 🙏 More reliable deployments, as the critical human error will be out of the equation
  7. ⏰ As your deployment is not impacting availability, you can stay up 24/7

Automated deployments are one of the pillars of DevOps. If you can’t deploy automatically, you can’t pretend you’re a DevOps team.

How to get started?

To deploy live, you’ll need some expertise for the deployment techniques below:

  • A Blue-Green deployment is one deployment where you deploy the new version, without any pressure, on a duplicated infrastructure. You have all the time you need to, because guess what? It has zero impact on the real production yet. You can then run all the tests you need directly on the production code. As it is the exact same infrastructure that will be used in production, the replication will me perfect, so you’ll avoid the "it works on my machine" situation. When your tests are done, you just have to redirect your traffic - via a proxy server - to the new infrastructure. As this step takes literally a few milliseconds, it can be done live without service downtime.

It works on my machine comic

  • A Canari deployment is a even more evolved technique where you release your new production for a subset of your user base - it can be 1%, 5%, 10%, 25%, whatever you want. Basically, you’re testing the new version from a user standpoint before rolling it out to all users.

Both methods give you the possibility to deploy during operation hours. It you’re new to this, I suggest you start with Blue-Green, as it is easier to implement.

This is a big cultural shift, yes. But I suggest you calculate the upside of it. How many deployments a year you’re doing? How much does it cost you in overtime work?