メディアがどこにあるのか興味深いことに、この質問を投げ捨てたいです。
過去12か月間に、ソフトウェア開発でTDDと多くのアジャイルの価値を身に付けたことを認めます。私のソフトウェア開発がどれほど改善されたかに圧倒され、私はそれらを原則から外すことはありませんでした。まで...私は、年間の持ち帰り給与を2倍にする契約上の役割を与えられました。
私が入社した会社は特定の方法論に従わず、チームはコードの臭いやSOLIDなどのようなことを何も聞いていませんでした。実際にユニットテストを見た。私は売り切れですか?いいえ、完全ではありません...コードは常に「きれいに」記述され(ボブおじさんの教えに従って)、SOLIDの原則は常に、必要に応じて私が書くコードに適用されます。しかし、テストフレームワークを作成したとしても、彼らがテストフレームワークを正しく使用/維持することは決してありませんでした。
それを例にとると、お金やその他の個人的な利益のために、開発者が職人技の原則を決して落としてはならないと思いますか?これは、自分のニーズ、ビジネスニーズ、および職人の技などに対する懸念の非常に個人的な意見である可能性があることを理解しています。しかし、たとえば、企業がテストチームは、プログラミングの単体テストを理解するのではなく、私がしたように自分を許すことができるものでしょうか。だから、あなたが落とすものがあるとすれば、通常あなたが落とすものを補うビジネスには同等のコストがあるはずです-もちろん、あなたがコミュニティ/ソーシャルコラボレーションではなく自分のポケットを裏打ちすることにかなりの力を注いでいるのでない限り。 )。
お金を2倍にして、RADに戻りますか?または歩いて、アジャイルをしている人を探して、決して振り返らないでください...
私は10年以上前に単体テストに夢中になって以来、ほとんどの職場で、これまで聞いたことがなかった最初の職場でした。それでも、できる限り小さなユニットテストを作成し、ユニットテストのコストを自分のタスクに見積もっていました。誰かが私のコーディング習慣について尋ねるときはいつでも、私は何をしているのか、なぜそれが私にとってうまくいったのかを話しました。通常、少なくとも一部の人々は興味を持っていましたが、最終的に私はそのトピックについてプレゼンテーションを行い、最初の単体テストを書くように人々に助言しました。
新しい職場での初日、アジャイルな方法について人々を説得し始める必要はありません。できるだけ自分の仕事の原則に従ってください。うまくやれば、より良いコードを提供できます。同僚や管理者が気づいたら、あなたのやり方を尋ねられます。 そしてあなたはそれらを伝えることができます。
熟練した開発者(およびマネージャー)のほとんどは、トレンドや流行が行き来しているのを見ているため、最新の流行語に興奮することはありません。ただし、特定のアプローチ(ツール、考え方)が実際に実際のプロジェクトで実際に機能することを示すならば、自分の技術に関心のある人はほぼ確実に座って聞いてくれます。しかし、チームにそのような人がいない場合は、より良い場所を探す時がきたのかもしれません...
ここで、すべての開発者がプロジェクト管理について少し知っておくべきだと思います。すべては時間、お金、リソースの間のトレードオフです。あなた自身のリソースを検討してください。
私の12年間のプログラミングでは、プロジェクトを完了して、完了したと思ったことはありませんし、私の頭の中で完成したとも思いません。自分がもっと上手くやれたり、もっときれいにしたいと思ったことはいつもありました。これがこれらのトレードオフのせいだと気づくのに非常に長い時間がかかりました。
したがって、方法論が存在しないという理由だけでジョブの切り替えを考えている場合は、私があなただったらもう一度考えます。これらのトレードオフは一定であり、すべてのソフトウェア開発者に適用されます。最も熱心なゲーム開発者でさえ、もう一度何かをしたり、機会があれば別の方法論を練習したりできることを望んでいます。
アジャイル開発の実践を見て、ミクロのレベルでもそれができることを理解すべきだと思います。あなたのチームメイトは何でも好きなことをやっているはずですが、あなたの個人的な満足度はより高く、長期的には間違いなく彼らよりも優れたコードを生成するでしょう。次に、マネージャーが来て、なぜコードが非常に優れているのかを尋ねると、チームを変換するチャンスがあります:)
でも、人や仕事が気に入らなければ、答えはわかっていると思います。しかし、私は誰かが部屋を歩いてコーディング中にアジャイル開発の原則を使用しないようにあなたに言っていることを強く疑います...もしそうなら...叫び声を上げます。
長い目で見れば不幸になるようなものを落とさないでください。もちろん、人間のいない土地から始めて、チームをあなたの方向に動かそうとすることもできます。あなたがそれに努力を注ぎ、その仕事に価値があることをいとわないなら、これは興味深い挑戦になることさえありえます。
しかし、コーディングの楽しみを維持するためのもの(またはそのことについての仕事)をすべて残さなければならない場合、私の経験では、遅かれ早かれあなたは離れることになるでしょう。私は欲求不満を過小評価してはならないことを学びました...
あなたの最後の仕事の人々はすでにTDD、SOLIDなどについて知っていました。それは素晴らしいことです。きっとあなたはそこで働くことを楽しんで、たくさんのことを学びました。これで、それらの概念を教えるにする機会があります(同時に大金を稼ぐ一方で)。私の経験では、誰かに概念を教える必要があることは、私自身がそれをより詳細に学ぶのに常に役立ちました。ただ彼らに我慢して、あなたのコンセプトを一つずつ押し続けてください。イライラしたら、家に帰ってお金を数えます。または、SEのサポートを探します。
私はその点でb * tchであることを認めなければなりません。フリーランサーとして、クライアントがプロジェクトの適切な方法論と見なすものは何でもかまいません。私が気にかけているのはお金だけということではありませんが、何をすべきか、何を除外すべきかはクライアント次第です。ただし、悪い労働条件(騒々しい、長時間労働など)は受け入れません。
決して。
人生は(特にあなたが年をとるにつれて)短すぎて、あなたが憎むことになることをすることができません。
もちろん、転職は難しくなり、職場も少なくなります。
しかし、少なくとも古いコードだけが悪臭を放ちます。 (そして私には自主性があるので、レガシーコードベースからコンパイラの警告を1週間削除するなど、賢明なことをすることができます...)
つまり、開発方法論はあなたの一部ではありません。それは宗教ではなく、あなたが誰であるかではありません。ツールです。あなたが言われたこと、あなたが言われた方法をして、余分なお金を稼ぐ。数千のシステムが開発され、TDDやCode Smellなどなしで今日稼働しています。方法論は都市バスよりも頻繁に行き来するため、これらの用語が何を意味するかはだれにもわかりません。あなたが言われたように一生懸命働き、いつでもそしていつでも感謝されるお金を受け取ります:)
私の元同僚を引用したいと思います。彼は仕事またはパートタイムのプロジェクトを探しているときはいつでも、プロジェクトが満たさなければならない3つの基準があると言いました:
私があなたの質問を読んだように、このプロジェクトは最後の基準を満たすだけです。
TDDが好きになったので(私と同じように)、日常生活を回っていて、同僚全員があなたと同じ洞察に達していたと思います。したがって、最初の基準はおそらく満たされないでしょう。
第二に、TDDプロジェクトを追求したい場合、そしておそらくアジャイルチームの構築でより多くの経験を得たい場合、このプロジェクトに取り組んでもそれらのスキルを強化することはできません。したがって、2番目もおそらく満たされません。
個人的には、私があなたの立場にあり、TDDを会社に導入する手助けをする立場になかった場合、私は他の場所を探すでしょう。
希望どおりに働けないような場所では働きません。つまり、マイクロマネージメントになりたくありません。
私は自分の仕事が得意であるという前提の下で仕事をしています。もしあなたがいくつかの仕事を与えてくれれば、私はそれらを効率的かつ効果的に成し遂げるでしょう。コードのガイドラインとパターンに違反しない限り、どのように実装するかは私次第です。それが私の仕事の楽しい部分です。
作成するすべてのクラスを単体テストしたい場合は問題になる可能性がありますが、締め切りに間に合わなければ、単体テストの作成は一般的に問題ありません。 TDDの支持者は、単体テストを作成することで実際に生産性が向上する(後で説明するなど)と主張するだろう。私があなたの立場にいた場合、私はsomeユニットテストを書いて、私を救いますsomeトラックダウンの時間を短縮します(おそらくバグが少なく、修正が簡単です)。より多くのテストに費やしたその時間を再投資すると、さらに多くの時間の節約になり、素晴らしいテストスイートがあると、最終的に大きな笑顔で座って、新しい11時間目にコードの変更を簡単に確認できます。要件が入ります。
それができなかったら、そこで働きたいのかわかりません。
私が言っているのは、これらの問題には多少の交渉が必要です。彼らが私に払う金額が多ければ多いほど、私が期待する非金銭的利益は少なくなります。しかし、特に断る必要がない場合は、常にある程度の自主性と自尊心が必要です。自主性が少しでもある限り、他の原則は破棄します。結局のところ、いくつかの後方クレイジーな方法論のように見えるかもしれないものは、あなたが今まで行った中で最高のものかもしれません!
新しいチームと協力することは、あなたの時間の良い投資であることを確認してください。
おそらく、これまでに出会ったよりも効率的な方法で機能しますか?もしそうなら、彼らと一緒に働くことはあなたにとって素晴らしい学習体験となるでしょう(それゆえに良い投資です)。
一方、新しいチームの方法論は、あなたにとってほとんど価値がないかもしれません(「カウボーイコーディング」など)。その場合、追加のお金はおそらくそれだけの価値はありません(それがIPO前のスタートアップまたは特別なものでない限り)。あなたはおそらくあまり学習しないでしょう...そしてあなたは燃え尽きるリスクがあります。