🐚

失敗の共有[ポエム]

2021/06/30に公開

概要

エンジニアになって結構たったので、反省と失敗の共有を兼ねて
経験や教訓をまとめてみました。

誰かの役に立てればなあ程度のポエムです。特に独学で頑張っている方に。
失敗した部分は過去の自分と未来の自分に言い聞かせたい。

最初から完璧にこなすは不可能に近いですが、のちの気付きにつながれば幸いです。

失敗だと感じたこと

一つの言語を習得するまで

・公式を読まなかったこと
・全体を把握しなかった & 動きで捉えなかったこと
・デバックについて調べなかったこと
・「思ったとおりに動かない」のではなく「正しくないから動かない」に気づけなかったこと
・正解をあてるために間違いを探さなかったこと (失敗と比較して当たりをつけることができるよね)
・「なんのための基礎か」を調べず・考えずに、基礎をしっかり固めようと学習したこと
・「コードを書けるようになるという目的に対して最適の手段かどうか」を考えずに参考書を買ったこと
・基本情報などの資格に対し思考停止し飛びつこうとしたこと
・テンプレート的な型を作らなかったこと
・「〇〇を学習してからつくりたいものを作ろう」と考え、作りたいものから必要な能力を逆算してそこにフォーカスしなかったこと
・脳ですべて処理しようとしたこと && 知らないことわからないことを言語化しなかったこと 
・できた という経験を意識的に重ねなかったこと
・点と線を明確に分けている意識ではなかったこと

それ以後

・間違った記事をそうだと判断できないことの自覚がなかったこと
・メモを有効活用しなくなったこと && とらなくなったこと
・なぜそうなる?から考えない思考全般
・必ず忘れるに基づかない学習
・目的に対する手段は最適か?と思考しなかったこと

まとめ

・なんでそうなる系の思考不足
・それらを整理しなかった仕組み化不足
・脳のもやもやを放置し整理しなかった不足
・自分の力のなさから派生するであろう問題を考えていなかった自己認識不足 && 対策不足

やってよかったこと

// 思考系
・メモを自分の言葉で言語化した上で記録したこと
・判断のすりあわせを行ったこと
・失敗の共有をしたこと
・なぜそうなるか?を考えた思考プロセスについてきいたこと
・難しい、で思考停止せずより細分化し続けたこと
・自分の限界を把握したこと
・外れたとしても納期を予測するくせをつけたこと
・仕事内容や課題をtodoで簡単にまとめる,思考し整理する時間を作ったこと (1mでできる)

// 行動系
・辛いとき人に頼ったこと (逆の立場なら助けること)
・即レスを徹底したこと (たとえすぐ対応できなくても一言)
・挨拶、聞く姿勢など当たり前なことをしっかり行ったこと (たとえレスが帰ってこなくても)
・意見交換をしたこと 
・毎日業務の終わりにその日の技術的な内容を共有する時間を作ったこと
・自分の作業以外の部分も確認して理解を進めたこと
・その提案が本当に有効で必要かどうか、否定せずきちんと上層部と話したこと
・チーム内で優先順位と価値観を明確化し定期的にすり合わせたこと
・チーム内のメンタルヘルスを気にかけ、真剣に向き合ったこと
・指示待ちではなく、ガンガン先に開発していたこと(当然すりあわせること && 間違っていたらすぐ修正すればいい)
・わからなくても試したこと
・意味のある雑談を大事にしたこと
・愚痴を絶対にいわないようにしたこと

// プライベート、習慣
・後回し癖をやめたこと
・プライペートで勉強したこと
・毎日技術情報等をチェックしたこと(はてな、Zenn,etc...)
・朝の過ごし方を見直したこと
・散歩を朝、昼休憩後に行ったこと
・一週間の精神的な疲労のバランスを見て土日休んだこと
・無理した状態を継続させなかったこと
・夜勉強をするのではなく、すぐ寝たこと(当然体質差あり)
・食生活、睡眠、運動運動、作業環境、道具に気とお金を使ったこと
・自分の行う行動の目的をかなり明確化したこと

ビジネス面の教訓

・あらゆる作業に優先順位をつけること
・自分の向ける努力が効果的かどうか判断した上で行動すること
・勝てる戦いのみ戦いそれ以外のときは戦わない && 得がないなら意味がない && 自分と相手が立つ土俵に注意する
・そもそも戦うという選択肢は、最適な問題解決方法でない場合がほとんど
・プランCを用意しておき、無駄な争いを避けること
・上層部に対してすり合わせの際、こちらの考え・方針を決めた上で基本的にYES・NOで答えられる状態を作っておくこと
・目的を達成するための手段として柔軟に振る舞うこと
・ちゃんと話を聞くこと
・小さなYesが大きなYesを生む
・お客様のためにこうしたい! vs それ本当に必要か?の対立の際は否定せずなるべく代替案を提示すること
・必須条件、あったらいいな機能、必要のない機能、それらを明確にしないとプロジェクトは死ぬ
・闇に葬りたい場合はそれとなく受け取りそれとなく葬ること
・多数決と権力に対してはどれだけ正しくても勝てない
・人を変えようとするのは無理。変わる土壌がある人だけが変わる。組織も同様
・重要な問題は大抵の場合自分ひとりの力じゃどうしようもならない
・不安、不自由、抑圧環境下ではクリエイティブなことは何一つ発生しない
・他部署の人と機会があれば仲良くなっておくとのちに面白いことにつながる
・大抵の人間はダイレクトに否定されると変わらなくなるどころか感情的に反発する。押すのではなく引くことが重要(だと思っている)
・採用で失敗するとお互い不幸になる。

優秀だと感じた

・難しいで思考停止をせず行動する人 && 潜在的な大きな問題を忙しいを理由に放置しない人
・感情と論理的な意見で切り分け感情に対して論理的に作用する人
・自分のスキルやその他を考えて行動するよりも、事業やサービスをグロースするにはどうすればいいかを逆算して行動する人
・数字から計算できる。意見ではなくデータを根拠とした発言ができる人
・自分の成長欲に惑わされず、会社のサービスにコミットでき優先順位をつけることができる人
・人は感情で動いていることを把握している人
・たとえ自分のほうが立場が上だとしても、プライドを持たず相互作用できる人
・できないこと・やらないことリストを明確に定義でき、適切なタイミングで提言できる人

ありがたかった言葉

・エンジニアは詰まった数だけ成長する
・プログラムは思ったとおりには動かない、正しいから動く
・人は感情で動く
・要求の一方通行は人間関係を破壊する

そこそこ以上のでかいプロジェクトを一人で開発するとき

勘違い

・一度に100%は作ることはできない。
・要件はかなり変動する。なんなら闇に葬られることが多い
・(前提知識に違いがあるためプライバシーの問題があったりする場合)設計に自由度が必要な項目があったりする。
・それらのことを自覚しにくい

方針

・共通する処理(汎用性の高い)を最速で書く
・依存性が高いもの、複雑なものは後回しにして、孤立しているものから片付ける
・なるべく自由度高く作り後に固めていく

・文字ズレなど細かいデザイン、機能などは後回しで動くものを
・細かいオーバーエンジニアリングはしない

どれくらいのものを一度にさばくべきか

・機能ごとに動作をちゃんと確かめていかないと毎回戻って手入れをしないといけないし、もれがでやすい
 ・そういう怪しいところは基本後回しだが、止む終えない場合はちゃんと記録しておく
・複雑なところとそうでない部分を明確にした上で開発
・リファクタリングは一度に大量に行うほど精度が下がる (性格もあるかもだが)
・まとめて倒すというより、全体を見ながら個別撃破のイメージ

マーケティングとブランディングのバランス

マーケティング:いかに売っていくか
ブランディング:いいものを作ってアピールする

エンジニアは後者になりがちだけど、現実問題マーケティングがないと先に進めないことも多い
特に営業は、いかによくみせて売っていくか、という視点なので
うまくバランスを取った開発をする必要がある

余談

初めて技術を触ったときはふーん面白いじゃん程度だったけど
継続するにつれて、いろいろな面白さを感じれるようになり気がついたら好きになっていた。

昔の自分に言えることがあるのなら
大した知識や経験がないのだから、技術が好きかどうかは考えずに、そのまますすんでみたら?
一つ言えるのなら、物事の細部まで分解する癖をつけると楽になるよ
あとは自分の能力は低いってことを自覚した上で、それを補う仕組みを考えて導入してみたらいいかも

あたりを伝えていたと思う。
なんだかんだ行動しないと何も変わらないあたりも伝えたい。あとは勇気を持つこと。

面白い失敗があれば、共有していただけると嬉しいです。
一緒に頑張りましょう:)

Discussion