×

注意!页面内容来自https://www.creationline.com/tech-blog/others/kaizen/78325,本站不储存任何内容,为了更好的阅读体验进行在线解析,若有广告出现,请及时反馈。若您觉得侵犯了您的利益,请通知我们进行删除,然后访问 原网页

< id="core-block-supports-inline-css"> .wp-elements-75d2d04b70515ddb0971600270a93de5 a:where(:not(.wp-element-button)){color:var(--wp--preset--color--vivid-red);}.wp-elements-734cc26b8909460fcf1ad1b2e8a31c39 a:where(:not(.wp-element-button)){color:var(--wp--preset--color--vivid-red);}.wp-elements-adf7788a9b6de06aae89b5bf0bd3b627 a:where(:not(.wp-element-button)){color:var(--wp--preset--color--vivid-red);}.wp-elements-bda04cc63107377b8cdba84ea9cd0049 a:where(:not(.wp-element-button)){color:var(--wp--preset--color--vivid-red);}.wp-elements-6de8587761acc0a4238a1efe19191def a:where(:not(.wp-element-button)){color:var(--wp--preset--color--vivid-purple);}.wp-elements-372f3d4fe3d57c8f07513511ecba9348 a:where(:not(.wp-element-button)){color:var(--wp--preset--color--vivid-red);}.wp-elements-6610031bbc1af8ad37f7c51e9905b9db a:where(:not(.wp-element-button)){color:var(--wp--preset--color--vivid-red);}.wp-elements-16db8ccabad1201c681017526d1a59f5 a:where(:not(.wp-element-button)){color:var(--wp--preset--color--vivid-red);} /*# sourceURL=core-block-supports-inline-css */

「グッドハートの法則」について社内で話してみた

毎日暑いですね!いろんな人から「やっと世界が笹さんに追いつきましたね!」と言われます。どうも、最近新しいサンダルを買ったCo-Creation Startupの笹です(主に半袖半ズボンの意味)。今回のテーマは「グッドハートの法則」です!

先日、7/3,4に開催された開発生産性Conference 2025。初日のキーノートはあのKent Beck氏による『開発生産性測定のトレードオフ 「グッドハートの法則」はもっと悲観的に捉えるべきだった』でした。タイトルの通り「グッドハートの法則」が話題の中心でした。

この記事では、分かっていてもどうしたら良いのか悩ましい「グッドハートの法則」について、クリエーションライン内で議論した内容を共有します。皆さんの指標計測や目標値設定の参考になれば嬉しいです!

グッドハートの法則とは?

キーノートの概要ではこのような説明があります。

指標が目標になることで行動が歪み、システム全体に深刻な影響を及ぼす可能性を示唆しています。グッドハートの法則は「指標は目標になると機能しなくなる」と警鐘を鳴らしますが、その影響は想定以上に広範囲です。

こちらのサイトではこのように定義されています。

グッドハートの法則(Goodhart's law)とは、「ある指標が目標になると、その時点でその指標は“良い指標”ではなくなる」(When a measure becomes a targetit ceases to be a good measure.)という法則である。

Kent Beck氏のメッセージとしては「機能しなくなるどこじゃなくて悪影響があるよ」というニュアンスだったと思います。

指標や目標値を定める時に大事にしたいこと

いつも通り、最初に言いたいことを書いておきます!クリエーションラインではこのあたりを大事にしていこう、という話になりました。

※Effortなどの意味についてはコチラを参照

指標の計測について私が理解したこと

他にも様々な観点で話されていましたが、今回の話と関連する部分だと以下のような内容だったと思います。

  • Effort / Output
    • 計測しやすいし、個人の貢献度も分かりやすい
    • 目標値にすると意図しない悪影響を及ぼす可能性がある
  • Outcome / Impact
    • みんなで同じ方向を向くことができる
    • 計測できても、個人の貢献度を計測しにくい
  • その他
    • 指標を計測すること自体は良い

https://tidyfirst.substack.com/p/measuring-developer-productivity

キーノートを聞いて考えたこと

キーノートを聞いて以下のようなことを考えていました。ざっくりいうと、話していることは分かるけどどうすればいいんだろう?って感じでした。

  • 「グッドハートの法則」を考えるとEffort/Output指標を目標値にするのは良くない
  • Outcome/Impactを目標値にするのはアライメントの観点でも良さそう
  • チーム内に閉じる分にはEffort/Outputを目標値にしてもOKなケースもありそう
  • Outcome/Impactは計測できても改善に活用するのが難しそう

指標や目標値を定める時に大事にしたいこと

社内のメンバーにキーノートの話を共有・議論したことで、クリエーションラインで大事にしたいことが見えてきました。大事にしたいことは以下の通りです。話したログはそこそこ長いので、一番最後に載せておきます。興味のある人だけ読んでもらえればと思います。

  1. 目標・指標・目標値の背景にあることを話しまくる
  2. 計測した指標は誰でもすぐに見えるように可視化する
  3. Effort/Outputをモニタリングし、Outcome/Impactを目標値にする

数値は魔力があるので目標値を設定すると、どうしても目標よりも数値に目がいってしまいます。特にEffortを目標値にした場合、達成したいことが抜け落ち、作業に集中することになりがちです。これは「グッドハートの法則」で言われている悪影響が出そうな状況です。

ではどうすれば良いか?という話ですが、シンプルに「達成したい目標とその背景を話しまくる」のが重要だと思っています。これによって目標に対する深い納得に繋がり、数値を追うだけでなく目標自体に目を向けることができると思います。

では目標を深く納得できていない主な理由を考えてみると大きく2つあると思っていて、それは「話す頻度」「一方通行な伝達」なのかな?と思っています。一度伝えたら終わりではなく、何度も今の目標について議論する場を作るのが大事、という話になりました。もう少し具体的な話については余談②で。

目標を立てること自体よりも、共通理解・ふりかえり・対話・フィードバック・適応の方が重要なのでは、という話が出ました。その重要なふりかえりや対話の基盤になるのが計測した情報の可視化です。

Googleマップで例えると、GPSがなくて現在地が表示されていない状態になりそうです。目標を決めたことで目的地は明確ですが、現在地が分からないと向かうことは困難なので、目標と可視化はセットで重要です。

改めて可視化することのメリットを挙げてみます。

  • 目標に向かって活動していくやる気が増す
  • うまく進んでいる / 進んでいないことが素早く検査できる
  • 問題を検知した場合に素早く適応することができる
  • 適応するための組織的な行動や、個人との対話・フィードバックの質が高まる

指標を決めて計測する、で終わるのではなく、計測した情報を可視化することで、情報を活かすことができる状態までしよう、ということになりました。

Oucome/Impactを目標値にすることで、組織全体で向かう先を合わせることができるということでそれはやるとします。ただ、OutcomeやImpactは遅行指標になる傾向があることや、様々な要因が絡み合った結果になるため、改善に繋げる難易度が高いです。結果としては上手くいったけどマーケティングが良かった?新しい追加機能が刺さった?どっち?みたいな感じです。

となると、素早く意思決定をしていくためには先行指標でかつ、要因が分かりやすいEffort/Outputを計測するのが良さそうです。しかし目標値にすると悪影響が…

ということでシンプルにこうすれば良さそうって話になりました

  • Effort/Outputは計測・可視化してモニタリングし続ける(目標値にしない)
  • Outcome/Impactは計測・可視化・目標値設定して全員で追い続ける

まとめ

「グッドハートの法則」を肴に指標の計測や目標値の設定について社内で議論した内容を共有しました。どんな指標を目標値にすると良いか、という話もあれば、目標値を設定する前後での運用についての話も出ました。正解はないと思いますが、クリエーションラインで議論したことや、実際にやっていることが参考になれば嬉しいです!

実際にやっていることといえば、以前発表したこちらの資料も参考になるかもしれません。モニタリング指標の話や、目標をみんなで議論する話なども載っているので興味ある方はぜひ!


記事を読んでいると「それって本当?」「ここってどういうことだろ?」など疑問が出てくると思います。何かあれば気軽に連絡もらえればと思います!

ここから先は余談や、社内でのやり取りを載せたので興味がある方は見てみてください!

余談シリーズ

伝えたいこと以外にクリエーションライン内部の話やOKRの話にもなったのでそのあたりも共有します。

余談①:社内でなんかうまくいってる目標値

「全社員が半期で一回以上情報発信を行う」という目標です。情報発信は大きく3種類あり、「登壇」「ブログ」「イベント参加」です。

「グッドハートの法則」を考えてみる「Effort/Outputを目標値にすることでプレッシャーをかけている」というあたりがだいぶNGっぽくて悪影響が出そうです。しかし、この目標に関しては、結構いい感じに機能しています。社員が90人弱ですが、この四半期で147件の情報発信、ユニークユーザー数は50人と進捗も良い感じです。

なぜこの目標が上手く言ってるのかも議論してみたのですが、要因は大きく3つありそうでした。

  1. 目標である「情報発信をする文化を作る」を理解してくれている
  2. 計測値がリアルタイムで可視化されているのでやる気が高まる
  3. 全員で協力して達成する目標値になっているので多くの人が気にしてくれる

要因1と2については、それぞれ大事にしたいこと1、2と連動しているので割愛しますが、要因3については少し補足します。データを見ると、登壇が圧倒的にハードルが高く、ブログもなかなか大変なようです。更に見てみると、登壇のユニークユーザー数は7名でした。情報発信に慣れている人はそこまで多くないのが現状です。

社内には情報発信慣れレベル3「人前でもガンガンいこうぜ」の人もいれば、慣れレベル1「情報発信のために情報収集したい」の人もいます。情報発信数を指標にするのだから慣れレベル3だけに絞る、ということもできたと思います。ただ、慣れレベルが違っていても「情報発信をする文化を作る」という目標には貢献できるはずなので、現状は慣れレベルの違いを吸収できる目標値になっています。目標に合わせて様々な人が協力できる目標値を設定できたのがうまくいっている要因なのかな?と思っています。

ソーシャルゲームで無課金勢と課金勢が同じランキングで戦える工夫と似てるかも?なんて話も出ました。

余談②:目標への深い納得のために

大事にしたいこと1に関連する話です。多くの組織では組織・事業レベルの目標は経営メンバーが議論して決めていると思います。そして決まった目標を現場のメンバーに伝える、というプロセスが取られます。その際に決まった目標だけでなく、決まるまでの背景を伝えてくれていると思いますが、大抵は伝わっていません。会社の規模によりますが、少し大きくなってくると全社員に高頻度で双方向の議論を行うのは難しくなってきます。なかなか深い納得に繋がるのは難しいです。

そこで重要になるのがミドルマネージャーです。経営メンバーとミドルマネージャーとの高頻度で双方向の議論を経て、ミドルマネージャーの深い納得に繋がり、そのミドルマネージャーが同様に現場メンバーと高頻度で双方向の議論を行う、というのが良いと思っています。実際にクリエーションラインでは2年ほど前から経営メンバーとマネージャーメンバーのミーティングの頻度を増やし、四半期毎に目標についての双方向の議論をガッツリ行っています。この時期から全体として同じ目標に向かって動けるようになってきた印象があります。

余談③OKRはよくできてる!

話している中でよく出てきた話題が「OKRはよくできてる!」でした。OとKRというシンプルな構成であること自体も良いですし、補強し合うCFR(Conversation、Feedback、Recognition)を意識しやすいところも良い所だと思います。

厳密にはOKRとCFRは別だと思うのですが、Measure What Mattersにも「OKRに血を通わせる手段だ」「OKRとCFRには相互に補強し合う性質がある」と書いているのもあり、もはやセットだと思い込んでるメンバーが多いかもしれません(私もその1人)

社内で話したこと(長いので気になる人だけ呼んでください)

キーノートを聞いて思ったことを伝えた所、以下のやりとりが行われました。

「組織における指標や目標に関しては、その背景や目的が共通理解になっていることが大事。その前提で、指標の状態が確認可能で適応し続けられる状態を保つのが大事なのかなと。」

「数には魔力があるので、目標や指標を設定するだけでなく、対話やフィードバックが重要。このあたりはOKRで言われていることかも?」

「Effortよりの目標設定でもなんかうまくいってるものがある。みんなで協力する構造にできると良さそう」

「ただ、一歩間違えば数字を追いかけるになりかねいかも」

「プレッシャーに関してもコミュニケーションの仕方次第かも」

「目標の設定と、その目標をちゃんと理解してもらうコミュニケーションは大事。コミュニケーションなので、発信側のスキルもあれば、受信側のスキルも大事。」

「OKRはよく考えられている。OとKRというシンプルだけど重要な2つが構成要素としてあって、対話とフィードバックという大事なコミュニケーションが意識されていて、透明性を高くしたらみんなで共通のものを追いかける状態も作りやすい。」

「Oの理解に関するコミュニケーションに関しては、一発勝負にならないことも大事だと思う。仕組みとしてなんどもOについて対話する機会があることが、理解や自律につながると思う。」

「対話の回数・頻度ってのがシンプルに大事だと思っている。この頃社内がいい感じに回ってきているのは経営メンバーとチームリーダーの対話の頻度が上がってるからだと思っている」

「目標は一発では伝わらないものだから何度も言うのが大事。面倒だけどやる必要がある」

「指標や目標があることによって、対話の質があがるってのもあると思った」

「数値目標は大小あれどプレッシャーにはなるはず。EffortやOutputよりはOutcomeやImpactの方がいいかも、という観点で目標設定時にチェックするのは良いかもしれない」

「遅い指標だけだとフィードバックを得るのが難しいと思うので、先行指標(effort,output)は測定する、outcomeやimpactを目標にする感じ?」

「先行指標がないとうまくいってるのか検査できず、そこへの対応・適応が遅れてしまうので必要だと思う。目標値というよりはモニタリングスコアというイメージ?」

「指標はモニタリングスコアのイメージ。KPIも目標に対する検査のためのモニタリングスコア」

「事業目標は目標とKPIという2つの構成になってますが、今見返してみるとKPIの中身が目標とモニタリングスコアが混ざっている」

「「目的」「目標」「KPI」とかにすると良いかも。」

「「目的」「目標」「指標」「目標値」とかでも良いかも。明確に目標値が空という表現もできる」

「KPIという表現は誤解を生みやすいので、指標と目標値という表現は良いかも」

追加情報

記事を投稿したところ、SNSで幾つかコメントをいただきました。理解を深めたり、新しい観点を学ぶ上で有益だと思ったので共有します!

情報①

高橋 博実さんよりいただいた情報です。「冒険する組織のつくりかた」の著者でも安斎さんの話を共有してもらいました。書籍を読んだり、fukabori.fmを聞いてもらえると良いかなと思います。

「1. 目標・指標・目標値の背景にあることを話しまくる」ですね!これは「冒険する組織のつくりかた」の安斎さんも同じこと言ってました!

fukabori.fmで安齋さん語られてました。19:30〜です。 https://fukabori.fm/episode/128

情報②

原田 騎郎さんよりいただいた情報です。まだ読めていないのですが、ストーリーで伝える・考えるのは私もやりがちなので、罠があるのなら学んでおきたいですね!

グッドハートの法則にハマるのから逃れるのは、ひたすら定性的にものがたるのが有効なのはそうなんだけど、その方向にも別の落とし穴があってな
https://www.amazon.co.jp/dp/4492444696/

情報③

Yasunobu Kawaguchiさんからいただいた情報です。ジェフパットン氏も類似した枠組み(Output/Outcome/Impactなど)で整理してくれています。指標を立てる際にもどこに着目すると良いか参考になると思います。

計測することと、ある数値で判断することは別もの。
体温計で毎日測ることと、一般的に37度越えると熱があると判断するのは別問題。
医者は総合的に判断してるんですよね。そのためにさまざまな情報を集めて勉強してる。

それはそれとしてジェフパットン
https://youtu.be/B34jOZ3r130?si=5O3zoD8hPnZdfvip
メトリクスの話が割と整理されてます

Author

Co-Creation Startup チームリーダー。
顧客と共に本当に価値があるものを作ることにコミットするために、成果報酬型のプロジェクトにチャレンジ中!本気で良いものを作ろうと思っている方はぜひ一緒に仕事をしましょう!
週末はずっと息子と野球をしているのでやや黒めです。

Sasa Kentaの記事一覧

新規CTA
<>/*category color*/.cat_chef,.cat_36{background-color:#f38b00 !important;color:#ffffff !important;} .cat_chef a,.cat_36 a,.cat_a_36{color:#ffffff !important;} .title_chef,.title_36{color:#f38b00 !important;}.cat_bluemix,.cat_41{background-color:#00b099 !important;color:#ffffff !important;} .cat_bluemix a,.cat_41 a,.cat_a_41{color:#ffffff !important;} .title_bluemix,.title_41{color:#00b099 !important;}.cat_docker,.cat_43{background-color:#2e8ae7 !important;color:#ffffff !important;} .cat_docker a,.cat_43 a,.cat_a_43{color:#ffffff !important;} .title_docker,.title_43{color:#2e8ae7 !important;}.cat_hashicorp,.cat_42{background-color:#48b4fb !important;color:#ffffff !important;} .cat_hashicorp a,.cat_42 a,.cat_a_42{color:#ffffff !important;} .title_hashicorp,.title_42{color:#48b4fb !important;}.cat_mesos,.cat_39{background-color:#004561 !important;color:#ffffff !important;} .cat_mesos a,.cat_39 a,.cat_a_39{color:#ffffff !important;} .title_mesos,.title_39{color:#004561 !important;}.cat_neo4j,.cat_37{background-color:#6cbb5a !important;color:#ffffff !important;} .cat_neo4j a,.cat_37 a,.cat_a_37{color:#ffffff !important;} .title_neo4j,.title_37{color:#6cbb5a !important;}.cat_openstack,.cat_40{background-color:#e75651 !important;color:#ffffff !important;} .cat_openstack a,.cat_40 a,.cat_a_40{color:#ffffff !important;} .title_openstack,.title_40{color:#e75651 !important;}.cat_softlayer,.cat_38{background-color:#545454 !important;color:#ffffff !important;} .cat_softlayer a,.cat_38 a,.cat_a_38{color:#ffffff !important;} .title_softlayer,.title_38{color:#545454 !important;}.cat_rancher,.cat_45{background-color:#71a99e !important;color:#ffffff !important;} .cat_rancher a,.cat_45 a,.cat_a_45{color:#ffffff !important;} .title_rancher,.title_45{color:#71a99e !important;}.cat_spark,.cat_51{background-color:#ff4800 !important;color:#ffffff !important;} .cat_spark a,.cat_51 a,.cat_a_51{color:#ffffff !important;} .title_spark,.title_51{color:#ff4800 !important;}.cat_azure,.cat_58{background-color:#0b7198 !important;color:#ffffff !important;} .cat_azure a,.cat_58 a,.cat_a_58{color:#ffffff !important;} .title_azure,.title_58{color:#0b7198 !important;}.cat_powerapps,.cat_93{background-color:#8224e3 !important;color: !important;} .cat_powerapps a,.cat_93 a,.cat_a_93{color: !important;} .title_powerapps,.title_93{color:#8224e3 !important;}.cat_aws,.cat_98{background-color:#fcb034 !important;color:#ffffff !important;} .cat_aws a,.cat_98 a,.cat_a_98{color:#ffffff !important;} .title_aws,.title_98{color:#fcb034 !important;}.cat_iot,.cat_97{background-color:#048202 !important;color:#ffffff !important;} .cat_iot a,.cat_97 a,.cat_a_97{color:#ffffff !important;} .title_iot,.title_97{color:#048202 !important;}.cat_dataanalytics,.cat_83{background-color:#993535 !important;color:#ffffff !important;} .cat_dataanalytics a,.cat_83 a,.cat_a_83{color:#ffffff !important;} .title_dataanalytics,.title_83{color:#993535 !important;}.cat_devops,.cat_67{background-color:#0c0c0c !important;color:#ffffff !important;} .cat_devops a,.cat_67 a,.cat_a_67{color:#ffffff !important;} .title_devops,.title_67{color:#0c0c0c !important;}.cat_mobprogramming,.cat_101{background-color:#7061c6 !important;color:#ffffff !important;} .cat_mobprogramming a,.cat_101 a,.cat_a_101{color:#ffffff !important;} .title_mobprogramming,.title_101{color:#7061c6 !important;}.cat_mongodb,.cat_79{background-color:#66b775 !important;color:#ffffff !important;} .cat_mongodb a,.cat_79 a,.cat_a_79{color:#ffffff !important;} .title_mongodb,.title_79{color:#66b775 !important;}.cat_elastic,.cat_74{background-color:#bde072 !important;color:#ffffff !important;} .cat_elastic a,.cat_74 a,.cat_a_74{color:#ffffff !important;} .title_elastic,.title_74{color:#bde072 !important;}.cat_habitat,.cat_72{background-color:#87b09a !important;color:#ffffff !important;} .cat_habitat a,.cat_72 a,.cat_a_72{color:#ffffff !important;} .title_habitat,.title_72{color:#87b09a !important;}.cat_kubernetes,.cat_122{background-color:#326de5 !important;color:#ffffff !important;} .cat_kubernetes a,.cat_122 a,.cat_a_122{color:#ffffff !important;} .title_kubernetes,.title_122{color:#326de5 !important;}.cat_gitlab,.cat_109{background-color:#544387 !important;color:#ffffff !important;} .cat_gitlab a,.cat_109 a,.cat_a_109{color:#ffffff !important;} .title_gitlab,.title_109{color:#544387 !important;}.cat_aquasecurity,.cat_176{background-color:#45e09d !important;color: !important;} .cat_aquasecurity a,.cat_176 a,.cat_a_176{color: !important;} .title_aquasecurity,.title_176{color:#45e09d !important;}.cat_hr,.cat_199{background-color:#dd9933 !important;color:#ffffff !important;} .cat_hr a,.cat_199 a,.cat_a_199{color:#ffffff !important;} .title_hr,.title_199{color:#dd9933 !important;}.cat_agile,.cat_144{background-color:#dd3333 !important;color: !important;} .cat_agile a,.cat_144 a,.cat_a_144{color: !important;} .title_agile,.title_144{color:#dd3333 !important;}.cat_toyama,.cat_264{background-color:#00baaa !important;color:#ffffff !important;} .cat_toyama a,.cat_264 a,.cat_a_264{color:#ffffff !important;} .title_toyama,.title_264{color:#00baaa !important;}.cat_yorozunomichi,.cat_455{background-color:#ff4c88 !important;color:#ffffff !important;} .cat_yorozunomichi a,.cat_455 a,.cat_a_455{color:#ffffff !important;} .title_yorozunomichi,.title_455{color:#ff4c88 !important;}.cat_mirantis,.cat_540{background-color:#ff2371 !important;color:#ffffff !important;} .cat_mirantis a,.cat_540 a,.cat_a_540{color:#ffffff !important;} .title_mirantis,.title_540{color:#ff2371 !important;}.cat_gcp,.cat_208{background-color:#219ed3 !important;color:#ffffff !important;} .cat_gcp a,.cat_208 a,.cat_a_208{color:#ffffff !important;} .title_gcp,.title_208{color:#219ed3 !important;}.cat_kaizen,.cat_118{background-color:#00d8c9 !important;color: !important;} .cat_kaizen a,.cat_118 a,.cat_a_118{color: !important;} .title_kaizen,.title_118{color:#00d8c9 !important;}.cat_kidsprogramming,.cat_163{background-color:#ff8484 !important;color: !important;} .cat_kidsprogramming a,.cat_163 a,.cat_a_163{color: !important;} .title_kidsprogramming,.title_163{color:#ff8484 !important;}.cat_nosql,.cat_151{background-color:#04930e !important;color: !important;} .cat_nosql a,.cat_151 a,.cat_a_151{color: !important;} .title_nosql,.title_151{color:#04930e !important;}.cat_tigergraph,.cat_297{background-color:#fce300 !important;color:#0f0f0f !important;} .cat_tigergraph a,.cat_297 a,.cat_a_297{color:#0f0f0f !important;} .title_tigergraph,.title_297{color:#fce300 !important;}.cat_cloudstack,.cat_115{background-color:#3582e8 !important;color: !important;} .cat_cloudstack a,.cat_115 a,.cat_a_115{color: !important;} .title_cloudstack,.title_115{color:#3582e8 !important;}.cat_confluent,.cat_518{background-color:#1e3869 !important;color: !important;} .cat_confluent a,.cat_518 a,.cat_a_518{color: !important;} .title_confluent,.title_518{color:#1e3869 !important;}.cat_c,.cat_273{background-color:#178600 !important;color: !important;} .cat_c a,.cat_273 a,.cat_a_273{color: !important;} .title_c,.title_273{color:#178600 !important;}.cat_go,.cat_719{background-color:#375eab !important;color: !important;} .cat_go a,.cat_719 a,.cat_a_719{color: !important;} .title_go,.title_719{color:#375eab !important;}.cat_python,.cat_323{background-color:#3572a5 !important;color: !important;} .cat_python a,.cat_323 a,.cat_a_323{color: !important;} .title_python,.title_323{color:#3572a5 !important;}.cat_ai,.cat_779{background-color:#000000 !important;color:#ffffff !important;} .cat_ai a,.cat_779 a,.cat_a_779{color:#ffffff !important;} .title_ai,.title_779{color:#000000 !important;}