見出し画像

僕のエンジニア心得

はじめに

こんにちは。フリーランスで主にweb領域のバック・フロント・インフラなどフルスタックにエンジニアをやらせてもらっています。よだかと申します。
早いもので自分がエンジニアとして仕事を始めてから5年ほど経ちました。
技術記事を書いたりもしていましたが、エンジニアとしてそこそこ経験年数も経ち、仕事をしていく上でのスタンスというか気をつけていることをまとめて、自分の中で整理していくのも悪くないなと思い、今この記事を書いています。
前提として、自分は音楽を作るのがもともと好きで、少しものづくりに尖った思想があります。
それから、色々な理由で社会人一年目からフリーランスで、実は会社員の経験がありません。
今はいわゆるスタートアップやベンチャーに分類されるお客さん数社と、年単位の長めのスパンでお仕事をさせてもらっています。ここで書くのは非常に個人的に僕が心がけているエンジニアとしてのスタンスですが、フリーランスか社員かなどの契約形態、業界ごとに特有の事情もあると思いますので、参考になる部分を取捨選択して読むことをおすすめいたします。

一番大事なこと

自分が就活していた頃の話ですが、「何を作るかより、誰と作るか」というモットーを掲げている企業さんの面接を受けたことがあります。当時色々な理由で尖りまくっていた僕は、「いや、いいものを作ることのほうが大事だろ」と心の中で吐き捨てていました。
ですが、色々な場所で色々な方とお仕事をさせてもらった結果、「何を作るかより、誰と作るか」が大切だという主張は正しかったのだと気づきました。
世の中のものづくりの大半は部分的であれ、誰かと、チームで行うものです。これは実体験ですが、そこに一人でも他人へのリスペクトが足りない人がいると、良いものはそもそも作れません。ブリリアントジャークなんて言葉もありますが、その人一人ですべて責任を負ってチームでやる以上のバリューを出せるわけではないのでしたら、やはりそんな人がいるチームはいいものは作れないでしょう。
別に馴れ合えと言っているわけではありません。「お互いにリスペクトを持つ」「最低限の思いやりを持つ」人たちと、仕事をしたいということです。
これは僕の持論ですが、ほとんどの人はあなたが何をしても変わりません。そして、僕の人生に嫌な他人を変えている時間はありません。僕は非常に極端な性格なので、そういう時はチームから抜けることを考えます。もしあなたがどこか仕事をしづらいと思っているのなら、あなたがチームの足枷になっている可能性もあります。誰かがチームから抜けるという選択肢は必ずしもチームにマイナスではないです。
幸い、僕が今一緒に働いている人たちは非常に尊敬できる、本当に素晴らしい方々です。そういう方々と働けていることはとても尊いことです。大切にしましょう。「いいものを作るためにはいい人たちと一緒に」

いいものを作るために必要なこと

認識を合わせる

アジャイルソフトウェア開発宣言にも「プロセスやツールよりも個人と対話を」と書かれています。
僕が大事にしている対話は、具体的には仕様と進捗の報連相のことです。
例えば、変だと思う仕様やよく分からない仕様を見つけたら、ステークホルダーにすぐ確認しましょう。ステークホルダーが忙しい場合の話は次に書きます。
こう聞くと、当たり前のことを言っているように聞こえるかもしれませんが、この当たり前を当たり前にできることが大事です。
進捗は必ずカンバンやガントチャートなどで可視化出来るようにしましょう。これは少人数なチームだと要らないと思われるかもしれませんが、僕は必須だと思っています。何がどこまで終わっていて、あと何をいつまでに終わらせなければならないかを全員が把握出来るということは心の安心材料になるからです。
今進捗が遅れているのか、遅れていないのか、何がボトルネックになっているのか、そもそものスケジュールが間違っていたりしないか、などはPMが管理するのではなく全員が把握出来ることが理想だと思っています。
間に合わないと思ったらどのチケットを削るか、などもそういったカンバンなどのツールを使うと判断しやすいです。アジャイルソフトウェア開発宣言にプロセスもツールを蔑ろにする意図はないとは思いますが、プロセスやツールも大事です。
もちろんチケットの粒度やスケジュールの切り方などはチームの習熟度によると思うので、銀の弾丸ではありませんが、磨けば光ります。

動くものを作る

ステークホルダーは大体忙しいです。認識合わせをしたいが、ステークホルダーが捕まらない場合はどうしたらいいでしょうか。
リリースまで余裕があるなら、他の仕様が決まっている小さいタスクをやったりしながら待ちましょう。余裕がないのにステークホルダーが捕まらない場合は、自分の直感でこの方が良いだろうと思うように実装して、後でお伺いを立てましょう。ただしこれは最終手段で、必ずステークホルダーを捕まえる最大限の努力をしてください。
こんなことが多く続くと想像と全然違うものが出来た!なんてお客さんから怒られるかもしれません。
が、想像と全然違うが動くものが出来るのと、想像通りに作ろうとして動くものが全く出来ないのでは前者の方が間違いなく良いと僕は考えています。何故なら、出来上がったものを触ってみて、想像とどう違ったか、全員が把握できるからです。あとはその想像に少しずつ近付けていけばいいだけです。時間をかければ最初から最良なものを作れるというのは幻想です。
それから、そもそもステークホルダーが全く捕まらないようなら、組織全体でのものづくりのやり方が上手くいっていない可能性が高いです。全員で話し合いましょう。

主体性を持つ

ここまで書いたようなことはエンジニアである自分の仕事ではない!マネージャーの人がやるべきだ!というご意見もあるかもしれません。僕はエンジニアであると同時に、「いいものをつくるためになんでもやる人間になりたい」と考えています。だから業務委託でありながらエンジニアの面接に同席したこともありますし、会議で進行したり、議事録をとったり、チケットを整理したりもします。そういったタスクは、確かに一般的に思い描かれるエンジニアの仕事ではないのかもしれません。ですが、「誰かがやればチームの生産性が上がるかもしれないタスク」です。そう、例えばあなたが。
「コードを書く」「設計する」だけがいいものを作るための手段ではないのです。
ちなみに他にもCIの設定や技術選定、ライブラリのバージョンアップ対応や、パフォーマンス改善などエンジニアらしいけれど、誰かがやらなければいけないタスクがあります。そういうのもやっていきましょう。これも実体験ですが、あなたがやれば、意外と他の人もついてきます。
あなたが全部やれというわけではありません。チームでものを作っているのですから、少しやって、一人では大変だったら誰かにお願いしましょう。意外とチームメンバーは任せればやってくれますし、そもそもそれをやらなくても良くなるような代替案が出てくるかもしれません。結局はコミュニケーションです。

細かいこと

ここまで書いたことが大きく自分が大事にしてきたことです。ここから先は細かいけれど、大事にしていることです。

最新の技術を追う

本番で採用するかは置いておいて、最新の技術は追いましょう。たまにZennを見たりQiitaを見たり、Xやblueskyを見たりするだけで良いです。
いつかなにかの役に立ちますし、新しい技術は新しい思想、設計を含んでいることもあります。それらは、既存の環境でも役立つかもしれません。たとえばSWRなどがそうです。また、友達や同僚と話すネタにもなります。実際に使ってみるのも良いです。余裕があればコードを読んだり、コントリビュートもしてみましょう。
それから勉強会やカンファレンスは勉強にもなりますし、モチベーションも上がります。なによりも楽しいのでぜひ行ってみて欲しいです。

おや、僕がスタッフをやっているTSKaigi Kansaiというイベントが直近であるようですね…?(https://tskaigi.hatenablog.com/entry/2024/08/01/152041
(勝手に名前を出しているので怒られたら消します)

お金について

これはしたくはない話なんですが、感情がある以上、仕事の士気にも関わる避けては通れない話だと思うので書いておきます。
僕はあまりお金の話が好きではありません。投資とかはなんか面白いなーと思ったりはするんですが、自分でもあまり言語化できない嫌悪感があります。
そんな僕は、大体案件に入る時に自分がそこに入ってやる仕事がめちゃくちゃ大変でもちゃんと満足出来る金額ちょうどを提示して、もし金額に見合わない働きだったらすぐに切ってくれと言います。(一応切られたことはないです)それで、あとは平気で二、三年くらい単価交渉しないみたいなことをしてます。あまりお金の話がしたくないからです。
で、引越しとか結婚とかのタイミングで上げてもらったりしました。もちろんそこまでちゃんとバリューを発揮してて、良い機会でもあるので上げてくださいという交渉の仕方です。
お客さんとの取引も長いので、正直今はこれ以上単価を上げてもらうほどバリューを出すにはもう稼働を増やしたり、なんらかの生産革命を起こさないと無理かなーと思っています。
自分の単価が相場とどう相違があるのかみたいなところは、初めの方は気にしていたんですが、最近はあんまり気にしなくなりました。
気になる場合はfindyさんなどに面談して聞いてみるのもおすすめです。それに仲介手数料分を含めたちょっと良い金額がもらえていれば多分上々でしょう。
結局何が言いたいかと言うと、なるべくお金の話をしなくて済むように最初から自分が満足出来る金額をもらうこと、単価は相場ではなく自分の出しているor出せるバリューと相談すること、が一応僕の今の所のお金との向き合い方です。
もちろんお客さんの事情もちゃんと考慮しましょう。働きたい人たちと働くために、だいぶ格安で受けたこともあります。エンジニア市場のこととか僕以外のことを考慮に含めて広い視野で考えた時に、こういうスタンスは多分あんまり良くなさそうな気がするんですが、あくまで僕のスタンスです。

最後に

まとめると「他者へのリスペクト」「いいものをつくるためになんでもやる」「コミュニケーションをとる」ですね。
僕も歳をとるにつれ、自分が数年前まで正しいと思っていたことを何度もひっくり返してきました。ここまで書いたことが、今大事だと思っていることですが、数年後にはまた変わっているかもしれません。あるいは追加されているかもしれません。最適解というものはなく、局所最適解がこの世界にはたくさん、そして流動的に散らばっているなと最近思います。それを追い続けることは果てしなく疲れることです。
ですが、僕らはエンジニアです。ハッカーです。ものづくりに携わる者です。
いいものを作るために、近道は意外とありません。毎日少しずつ、コツコツ頑張りましょう。


この記事が気に入ったらサポートをしてみませんか?