Thursday, May 11, 2023

The Paradox of Burnout: Unveiling Fear and Goodwill as Root Causes

Image credit/license: ndla.zendesk.com


Introduction

A while ago, at a conference on DevOps practices, I was really surprised and inspired by one of th speakers who brought a completely different angle to the event, by presenting how working smarter not harder, one of the tenets of DevOps, was to have an effect ont the quality of our lives in the I.T. industry. It went something like this:

Thought computer science is a very precise one. The application of computer based solutions in business quickly becomes complex and even unpredictable, That's because translating business needs and very human ideas on how to simplify the processes into technological terms and programming quickly becomes more an art than a science.

Yet, there is an expectancy to be able to quantify with a fairly high degree of certainty, the costs of implementing these "solutions".

Naturally, overpromising or underestimating costs for a project, will create demands that are difficult to to keep under control. Especially for the people that are tasked to produce the required artifacts. And as a consequence some will end up working harder and not smarter. And sometime too hard. So burnout is a real threat where it is difficult to substantiate efforts versus artifacts. At least in my humble opinion.

So.

Burnout, a state of physical, emotional, and mental exhaustion, has become increasingly prevalent in our fast-paced and demanding world. While burnout is typically associated with overwhelming workloads and prolonged stress, it is essential to recognize that its origins often lie in deep-rooted fear combined with a genuine desire to excel and contribute positively. 

In this article, I hope to expose the paradoxical nature of burnout, uncovering the interplay between fear and goodwill as contributing factors to this increasingly pervasive phenomenon.

The Nature of Burnout

Burnout is not simply a consequence of being overworked or lacking self-care. It manifests when individuals invest excessive effort into their work or personal pursuits, often driven by their aspirations, dedication, and sense of responsibility. The desire to meet expectations, excel in one's endeavors, and make a meaningful impact can unknowingly set the stage for burnout.

The Role of Fear

Fear plays a significant role in the development of a burnout. At its core, burnout is often fueled by a fear of failure, disappointing others, or falling short of personal or societal standards. People experiencing burnout may constantly strive for perfection or worry about being judged or criticized. The relentless pursuit of success, driven by fear, leads to an unrelenting cycle of stress and exhaustion.

Fear also drives individuals to overcommit themselves, fearing that they will be seen as incompetent or inadequate if they decline opportunities or set boundaries. The fear of missing out or being replaced can push individuals to work excessively, neglect self-care, and sacrifice their well-being in the process. Consequently, burnout becomes an inevitable outcome of these persistent fears.

The Goodwill Factor

While fear underlies burnout, it often arises from a place of goodwill. Many victims are individuals with a genuine desire to make a positive impact, help others, or contribute to a greater cause. These individuals often possess an inherent sense of responsibility and selflessness, which drives them to go above and beyond what is expected. Their goodwill and dedication to their work or personal missions create a strong motivation to push themselves relentlessly, making it difficult for them to recognize the signs of burnout until it becomes overwhelming.

The Consequences of Burnout

It has wide-ranging consequences that can affect all aspects of a person's life. Physically, it can lead to chronic fatigue, weakened immune system, and increased vulnerability to various health issues. Just think of the issues related to elevated blood pressure, as a consequence. Emotionally and mentally, it can cause anxiety, depression, mood swings, and a diminished sense of accomplishment or fulfillment. Furthermore, burnout can strain personal relationships, hinder creativity, and result in decreased productivity and effectiveness.

Breaking the Cycle of Burnout

To address burnout effectively, it is crucial to acknowledge the underlying fears and recalibrate the balance between ambition and self-care. Recognizing the signs of burnout early on and prioritizing self-reflection, self-compassion, and setting healthy boundaries are essential steps in breaking the cycle.

Individuals must learn to embrace imperfections and redefine success in a manner that aligns with their well-being. Employers and organizations also play a vital role in preventing burnout by fostering supportive work environments, promoting work-life balance, and encouraging open communication about mental health challenges.

Conclusion

Burnout is a complex phenomenon that stems from a combination of fear and good intentions. Individuals who experience burnout are often driven by their do their best, but their fears intensify the pressure they put on themselves to an unreasonable amount. By recognizing the interplay between fear and goodwill, we can start developing healthier approaches to work, success, and personal fulfillment. Prioritizing self-care, setting boundaries, and fostering supportive environments are, what I believe, crucial steps in curbing this modern disease.

Monday, May 1, 2023

Failure is normal. So why not embrace it?

In DevOps we like to do the right thing at the right time...that includes failing!

In the world of software development and deployment, it's important to have principles and practices that guide the process. One such principle is the concept of "fail forward," which refers to the idea that when a failure occurs during deployment, it should be used as an opportunity to learn, adapt, and improve the process going forward.

At its core, "fail forward" is about embracing failure as a natural and necessary part of the software development process. Instead of viewing failure as a setback, it's seen as an opportunity for growth and improvement. By analyzing what went wrong and why, developers can identify the root cause of the problem and take steps to prevent it from happening again and lessening the impact of such failures, by isolating critical environments from trial ones.

There are several key principles that are associated with "fail forward," including:

  1. Continuous Improvement: This principle is all about constantly learning from failures and using that knowledge to improve the software deployment process. It's important to view each failure as an opportunity to learn something new and make the necessary changes to prevent similar issues from happening in the future.
  2. Rapid Iteration: When a failure occurs, it's important to quickly iterate and make changes to the software deployment process. This allows developers to implement fixes and improvements in a timely manner, which can help minimize the impact of the failure.
  3. Collaborative Approach: "Fail forward" requires a collaborative approach, where developers work together to analyze failures and identify the root cause of the problem. By working together, they can pool their expertise and come up with solutions that address the underlying issues.
  4. Embrace Risk: Embracing risk is an important part of "fail forward," as it requires developers to be willing to take risks in order to improve the software deployment process. This means being open to trying new things, experimenting with different approaches, and accepting the possibility of failure. Fail when and where you should!
  5. Focus on the Future: "Fail forward" is about looking forward and focusing on what can be done to improve the software deployment process in the future. Instead of dwelling on past failures, it's important to use them as a learning opportunity and move forward with a plan to improve.

So, implementing the "fail forward" principle can be challenging, but it can ultimately lead to a more efficient, effective, and resilient software deployment process. By embracing failure and using it as an opportunity to learn and improve, developers can create a culture of continuous improvement that drives innovation and success.

Remember: the only people that never fail, are those who never try anything. 

Thursday, April 27, 2023

How can DevOps make my company more green?


TLDR; Optimize energy use, reduce waste.  Efficiency!

In today's world, where environmental sustainability has become an increasingly important issue, organizations are looking for ways to reduce their carbon footprint and become more "green." One approach that has gained popularity in recent years is DevOps. DevOps practices can make your organization more "green" by improving the efficiency and sustainability of your IT operations.

One of the key ways DevOps can help is by promoting automated deployment processes. With automated deployment, IT teams can reduce the amount of manual intervention required in deploying software updates, thereby reducing the time taken to deploy and minimizing the chances of errors or downtime. This leads to optimized resource utilization and lower energy consumption, as it eliminates the need for manual intervention in the deployment process.

Another way DevOps can help is by encouraging the use of Infrastructure as Code (IaC). With IaC, IT teams can define infrastructure in code, allowing for automated and repeatable provisioning and configuration of IT resources. This leads to a reduction in energy consumption by eliminating the need for manual intervention in infrastructure management.

DevOps practices like Continuous Integration (CI) and Continuous Delivery (CD) can also contribute to making your organization more "green." By enabling faster and more frequent software releases, CI and CD reduce the need for manual processes and minimize the time it takes to get new features or fixes into production. This results in lower energy consumption by reducing the amount of time spent waiting for manual processes to complete.

Another way DevOps can help is by promoting the use of cloud computing. Cloud computing provides on-demand computing resources and allows for optimized resource utilization, which reduces the amount of energy consumed by idle resources. It also eliminates the need for large data centers that require significant amounts of energy to power and cool.

Finally, DevOps practices encourage the use of monitoring and optimization tools to continuously monitor the performance of IT resources, identify areas of inefficiency, and optimize resource utilization. This results in better resource management, reduced energy consumption, and improved sustainability.

To summarize, DevOps practices can help organizations become more "green" by improving the efficiency and sustainability of IT operations, reducing energy consumption, and minimizing waste. With automated deployment, Infrastructure as Code, Continuous Integration and Continuous Delivery, cloud computing, and monitoring and optimization, DevOps practices can make a significant contribution to reducing an organization's carbon footprint and promoting environmental sustainability. As organizations continue to prioritize sustainability, DevOps practices will become increasingly important in driving sustainable IT operations.

Tuesday, April 25, 2023

Pourquoi les équipes DevOps, sécurité et conformité devraient-elles se soucier les unes des autres ?



C'est pas tant de se soucier les uns des autres mais que de bien collaborer!

Les équipes DevOps, Sécurité et Conformité doivent se soucier les unes des autres car elles jouent toutes un rôle crucial dans la livraison de produits logiciels. Ceci pour qu’elles soient de haute qualité, sécurisées et conformes. En collaborant efficacement, ces équipes peuvent s’assurer que les organisations atteignent leurs objectifs commerciaux tout en atténuant les risques et en respectant les normes réglementaires. Voici quelques raisons pour lesquelles ces équipes devraient travailler en étroite collaboration :

  1. Délai de mise sur le marché plus rapide : Implémenter des pratiques DevOps, telles que l’intégration continue et la livraison continue, aident les organisations à déployer des logiciels plus rapidement et plus efficacement. L’intégration des contrôles de sécurité et de conformité au début du cycle de vie du développement garantit que le code est sécurisé et conforme dès le début, ce qui réduit le besoin de révisions approfondies plus tard.
  2. Amélioration de la sécurité : lorsque la sécurité est intégrée dans le pipeline DevOps, les vulnérabilités peuvent être détectées et résolues plus rapidement, ce qui réduit le risque de violations de données et d’autres incidents de sécurité. Cette approche collaborative, connue sous le nom de DevSecOps, garantit que la sécurité est une responsabilité partagée entre toutes les équipes.
  3. Conformité accrue : La conformité est essentielle pour les organisations qui exercent des activités dans les industries réglementées. En travaillant en étroite collaboration avec les équipes DevOps et Sécurité, les équipes de conformité peuvent s’assurer que les exigences réglementaires sont prises en compte pendant le processus de développement. Cela réduit le risque de non-conformité, de pénalités et de dommages à la réputation de l’organisation.
  4. Réduction des coûts : il est plus rentable de résoudre les problèmes de sécurité et de conformité au début du processus de développement que de les résoudre après un déploiement. En intégrant des contrôles de sécurité et de conformité dans le pipeline DevOps, les organisations peuvent économiser du temps et des ressources.
  5. Meilleure collaboration : Une culture de collaboration entre les équipes DevOps, Sécurité et Conformité favorise des objectifs communs, une meilleure communication et une meilleure compréhension des rôles et responsabilités de chaque équipe. Cet alignement aide les organisations à répondre plus efficacement aux problèmes de sécurité et de conformité, ce qui conduit à des produits logiciels de meilleure qualité.
  6. Confiance accrue : en répondant de manière proactive aux problèmes de sécurité et de conformité, les organisations peuvent établir la confiance avec les clients, les partenaires et les parties prenantes. Cette confiance est essentielle pour maintenir une solide réputation de marque et favoriser des relations d’affaires à long terme.

En résumé, la collaboration entre les équipes DevOps, Sécurité et Conformité est cruciale pour fournir des logiciels sécurisés et de haute qualité qui répondent aux normes réglementaires. En travaillant ensemble, ces équipes peuvent réduire les risques, réduire les coûts et améliorer l’efficacité globale, contribuant ainsi au succès de l’organisation.


Why Should DevOps, Security and Compliance Teams Care About Each Other?


It's not so much that they should care, than they should collaborate!

DevOps, Security, and Compliance teams should care about each other because they all work to deliver high-quality, secure, and compliant software products. By collaborating effectively, these teams can ensure that organizations meet their business goals while mitigating risks and adhering to regulatory standards. Here are some reasons why these teams should work closely together:

  1. Faster time to market: DevOps practices, such as continuous integration and continuous delivery, help organizations to deploy software more quickly and efficiently. Integrating security and compliance checks early in the development lifecycle ensures that the code is secure and compliant from the start, reducing the need for extensive revisions later.
  2. Improved security: When security is built into the DevOps pipeline, vulnerabilities can be detected and resolved more quickly, reducing the potential for data breaches and other security incidents. This collaborative approach, known as DevSecOps, ensures that security is a shared responsibility across all teams.
  3. Enhanced compliance: Compliance is essential for organizations operating in regulated industries. By working closely with DevOps and Security teams, Compliance teams can ensure that regulatory requirements are addressed during the development process. This reduces the risk of non-compliance, penalties, and damage to the organization's reputation.
  4. Reduced costs: Addressing security and compliance issues early in the development process is more cost-effective than fixing them after deployment. By integrating security and compliance checks into the DevOps pipeline, organizations can save time and resources.
  5. Better collaboration: A culture of collaboration between DevOps, Security, and Compliance teams fosters shared goals, improved communication, and a better understanding of each team's roles and responsibilities. This alignment helps organizations to address security and compliance concerns more efficiently, leading to higher quality software products.
  6. Increased trust: By proactively addressing security and compliance concerns, organizations can build trust with customers, partners, and stakeholders. This trust is essential for maintaining a strong brand reputation and fostering long-term business relationships.

In summary, the collaboration between DevOps, Security, and Compliance teams is crucial for delivering secure, high-quality software that meets regulatory standards. By working together, these teams can reduce risks, lower costs, and improve overall efficiency, ultimately contributing to the organization's success.


Friday, September 23, 2022

 You have been hacked.

This isn't a joke. If you have any measure of success in your area of business, this is an eventuality. So you might as well prepare for it.

The following steps you take will probably set you in front of many. Don't be the "low hanging fruit". Cybercriminals always target big and easy game first.

And for those interested, you are just as likely to have been cracked than hacked. We'll make that a subject of later blog.

HOW?

But is there an even better way to address this? Yes. Re-read the title. Assume you have already been compromised or that you will be any minute. 

DevSecOps

Like it's older cousin (DevOps), SecDevOps is a collection of good practices to make sure you improve your operational security, from the conception to the everyday operations. Look it up. Learn and embrace it.
There is no single best and official DevSecOps Methodology. You must learn what is best for you.




But allow me to point out a few caveats:
  1. Just like with DevOps, be very certain that DevSecOps isn't a role.

    We don't want to insert yet another constraint, a super specialist or "guru" that can become an operational bottleneck or a single point of failure in our operational chain.

    Make it a process to improve your systems. Leverage the knowledge and technology you have and make it an ongoing and continuous learning and teaching experience.
    Your people, processes and technology are your best assets. Harmonize their use and you will always do better. 

  2. Be weary of people pretending to be the authority on the subject.

    And this my seem a bit contradictory. Since I myself am the "Chief of DevOps and SecDevOps practices" at my company. But note that I head the practices in my organisation. I help establish best practices and teach them, I coach teams and organisations on how to improve.

    But here isn't a singular "best way" to set up these practices. It just so happens that I've made a career of making my clients endeavors success stories. 

    But be sure that I am not the begin all and more importantly the end all of either practices (DevOps or SecDevOps) in my company.

    It is imperative that I make sure each team or project is autonomous and able to run their processes independently. If I get hit by a bus tomorrow. Business will continue and what knowledge I have used, is still readily available.
By the way. If you implement either of those practices and you are dependant on the knowledge and expertise, day after day, of a few key individuals, you might as well consider that you are suffering from a "soft fail" and that brings us to the next point. (and subject for a later blog)

Zero Trust

The basis of this proposition is simple but not necessarily easy to manage. We can look at it as a 5 pronged practice:

Your barriers are porous:

The basis of any system, of even a simple secure "box" with a lock and key, is that there must be a way to access it's contents, for it to be operational. I mean, who wants a box that can't be opened?

So assume people will open it, that's normal. Assume that the lock and key is insufficient to protect your sensitive stuff. So, as good as is any firewall, it was meant to be penetrated be someone. And once someone is inside, who is to say things are going to go as expected? So, assume that your barriers have failed, but lets make that failure a bit easier to mitigate.

(That's what I call a "soft fail". One that won't necessarily lead to a disaster, because of the following approach)




As simply as I can put it.
The prongs:

Identify

Ensure that in the design of your applications, you continuously and at every step you validate the identity of the person using the system. This is critical in order to maintain the rest of the security of the system. What is someone manages to steal your credentials? That's why we have more prongs.  
And don't just use the "who" to identify, use that "where" and "when". So again, assume identity has been usurped.

Authorize

Perhaps this is a bit of a misnomer: maybe I should say restrict access. Authorize only what is minimally necessary for the identity previously given. Be sure you don't have any "super users" or "super admins" with accounts that are always useable in your production environments. Make sure that any of these "highly privileged" accounts are disabled or expire after their intended use. So, a normal user or a stolen identity can't do too much damage. So now assume that the "penetrated box", has been accessed with an identity that CAN use the system.

Analyze

Use signals to detect unusual activity. Use the who, what, when and where previously locked in. First record all activity. Second, leverage your technology to analyze and discover (Machine Learning?) the patterns of usage that may be "unusual". Define policies of usage that are expected, and when usage becomes different than what you expected use some measures or metrics to calculate a threshold that defines usage is abnormal. Again, assuming someone is in the system and deleting/obfuscating all kinds of data, be sure you know exactly what was being done. Best way to reverse/mitigate the damage later.

Alert

Be sure to have probes that allow you to be alerted when unusual activity happens. Be informed as quickly as possible about breaches, stolen identities and unusual activity. This already part of common practices but tie it in with our previous prongs. And adapt the probes when you add new features to secure your application.

Automate

I cannot overstate this. Automation may very well be what saves you business in case of a serious breach.

I myself have been hacked some time ago. Someone managed to break in and access my stuff because of a notorious problem with Microsoft's remote desktop protocol. They encrypted all my network shares. Locking me out of terabytes of data.

But because I had automation in place, I managed to delete all corrupted/encrypted data and simply replace it with a known good copy.

Now, the admin account on my windows box can't access shares, and when he logs on, I get a notification on my phone. So, when I tell you these things, I speak of experience, not as a "some kind of guru/know it all".

But where you can benefit from my professional expertise, is rather in the first aspect. How to include this in your day-to-day designs and operations.

Good automation makes systems resilient.

In conclusion

We know nothing is perfect. But behaving as such is a bit more counterintuitive. If you start thinking and designing things in your system not only to resist failure, but to cope with eventual ones.

Make improving your systems with proper security practices as much part of it's initial design as it's daily use.

And you may very well manage to avoid a catastrophe.

Friday, April 22, 2022

The DevSecops Manifesto / Le Manifesto DevSecOps

We have agreed and hold these ideals as our own:

We strive to do the right thing at the right time. And the wrong ones too.

We want to improve: our work, our customer satisfaction and indeed our lives.
We live by the ideal of: work smarter and not harder
We are collectively responsible for our success. Which means we are collectively responsible for everything.
We do not need unanimity to have an agreement. We seek a consensus, but not at all costs.
It is better to make steady slow progress than being late for the sake of perfection.
_____________________________________________
 
There is no point in blame for failure. Failure is expected and it is part of the process.
We put safeguards that so that each step taken is a step forward. Measured and secured.
We agree that we must find an or some objective metrics to measure our success.
The determination of these measures will be ours but also accepted by our customers or representatives.
We think that transparency and visibility of our progress, are necessary allies.
 
_____________________________________________
 
We are slave to constraints and cannot and will not encourage bottlenecks
We try to understand our coworkers as best we can, roles, ambitions, expertise and all.
We design our work and processes to avoid single points of failure.
We believe that security is quality and there is no quality without security.
We accept that security is everybody's responsibility as we are responsible for everything.
 
_____________________________________________
 
This is our guide, this is our convention. If these ideals change it will be because we agree.

 

 
Nous avons convenu que nous tenons à ces idéaux comme étant les nôtres:

Nous avons la volonté de faire les bonnes choses au bon moment. Les mauvaises aussi.

Nous voulons nous améliorer: notre travail, la satisfaction de nos clients et en effet nos vies.

Nous croyons que bien travailler ne veut pas dire travailler plus.

Nous sommes tous responsables de notre succès. Ce qui veut aussi dire que nous sommes tous responsable de l'ensemble de notre œuvre.

Nous n'avons pas besoin de l'unanimité pour arriver à un accord. Nous désirons un consensus, mais pas à tout prix.

Il es plus important d'avancer un peu assurément, que de tarder pour le bénéfice de la perfection.

 

_____________________________________________

 

Il ne vaut rien de blâmer. L'échec fait partie du processus et est prévu.

Nous sécurisons nos processus pour qu'ils soient robustes et adoptés en fonction du progrès mesuré.

À cette fin nous convenons d'être mesurés de façon objective et quantitative.

Les métriques qui nous mesurent seront personnalisés à nous, mais acceptés par nos clients ou représentants.

La transparence et la visibilité de notre progrès, sont des alliés indispensables.

 

_____________________________________________

 

Nous sommes tous esclaves des contraintes. Nous ne sommes ni tenus ou n'encourageons pas de forcer une limite contraignante.

Nous voulons bien comprendre nos collègues, leur rôles, leurs ambitions, leurs expertises et tout.

Notre travail et nos processus sont réfléchis afin d'éviter les points de défaillance uniques.

Il n'y a pas de qualité sans la sécurité. Un produit de qualité a, la sécurité à sa base.

Nous sommes tous responsable de la sécurité. Étant dit préalablement que nous étions tous responsable de tout.

 

_____________________________________________

 

Ceci est notre guide et notre convention. Si ces idéaux changent, ils l'auront fait par accord commun.


A response to Michelle Rempel Garner's "Debunking Critics of Maduro's Arrest"

Debunking the Debunk. RE: Member of Parliament for Calgary Nose Hill. King's Privy Council. Shadow Minister for Immigratio...