Androidメンターのほっしゃんです。Life is Tech !のAdvent Calendar、3日目です!毎日プログラミングも疲れるかなと思ったので、今日はしない方向で書こうと思います!
簡単に、自己紹介をすると、普段は個人事業主としてアプリ開発を中心に仕事を受けていて今年で3年になります。あと、昔はハッカソンなどに多く出ていて、年に20個から30個ほど参加していたりもしました。
今までの経験の中で、先輩やお師匠様たちから授かった、もっと早く知っておきたかったエンジニアリングに関する考え方を書いていこうと思います。
なんで書くのか & 「エンジニアは考えることが仕事」
僕は、エンジニアはコードを書くことが仕事ではなく、コードを使って自分、または他人の考えを表現することが仕事だと思っています。なので、仕事の大半は考え、試行錯誤する時間に当てていますし、最近ではプロジェクトで実際にコードを書かないことあります。ですが、エンジニアだと胸を張っていえます。
話を戻して、エンジニアは考えることが仕事なので、今の考え方の根底にある考えをここに早いうちに伝えられるなら伝えたいと思いました。
考え方は、僕個人の今の考えなので、参考程度にとらえてもらえるといいと思います。
「自分が理解できない仕様は、ユーザーにとっても理解できない」
サービスを開発する中で、「ユーザーに心地よく使ってもらいたい!」と思うあまり次々と仕様(動作や、機能などの取り決め)を追加していって、気づいたら複雑になってしまっていることは多いと思います。
こういう時、その仕様を渡されて、理解しようとすごい努力をしている作成者でさえ理解できない仕様を、仕様など気にせず使いたいユーザーが理解できるわけはありません。なので、もし自分が理解できない仕様があった場合は、素直に理解できないと言っていいですし、ユーザーのためにならないとも言っていいと思います。
「課題を見つけてから、対処を考えればいい」
プログラミングを少しやったことがある人は、別の全く新しい言語を扱う際や、サービスを作る際に最初から多くのことについて調べてからアクションを行うというケースが少なくないと思います。ある程度調べることは必要ですが、なぜ調べるのかが重要だと思います。
なので、サービスなどを作る中で課題と思うポイントを整理して、それに対する解決策を継ぎ足していく形がいいと思います。
「1つのことにしがみつかずに、スペシャリストになる」
エンジニアだと、プログラミングをしていくうちに1つの言語を好きになる人がいます。そして、1つの言語や、言語思想を好きになるあまり、他の言語には全く手を出さない人もいます。1つのことを極めることは良いですが、新しい技術や知識を得る際に、自分で線引をしてしまい損をしている人を多く見てきました。1つのことにしがみついて線引をしてしまうと、その1つのことでさえ、偏った見方しかできずに極めるのが難しくなります。
何かを学ぶ時、自分の今のスキルを伸ばすために、次にどんなスキルが必要か、一旦言語だけでなく分野も超えて広く探してみると良いと思います。
「師匠やメンターを見つければエネルギーを節約できる」
自分の師匠やメンターを見つけることは、生きる上ですごい重要な事だと思っています。生きる上で、自分で考える事、決断することはすごく重要なことです。ですが、同時にすごくエネルギーを使うことでもあります。そんな時、自分よりも一歩先にいる人生の先輩を、師匠やメンターとして観察することで、何かを考えるときや決断する時のエネルギーを減らすことができます。
こうして、エネルギーを節約した分、また別のことに向ければ将来的にはそのメンターよりも上に行けると僕は考えています。
「自分の師匠を見つけたら、勝手に弟子入りすればいい」
僕はこれまで、1年間や半年などの期間で新しい師匠となる人を見つけては、その師匠を見てその期間に学ぶことを考えてきました。ですが、今まで1度として弟子入りをさせてくださいと言ったことはありません。
今の世の中、SNSやブログなど、色んな発言の場があり、直接話さなくても多くの考えを知ることができます。何処かに通ったりする必要はありません。
ただ、自分の師匠にしたい人を見つけたら、図々しくSNSやブログをフォローして、勉強会などでたまに会える機会を作れれば、その時点で弟子入り完了です。
「正しいはどこにもない、あるのは正しそうだけ」
エンジニアの文化で、コードのレビュー(確認)でOKを出す際に LGTM(Looks Good To Me) とだけコメントをする文化があります。そのコードなどを確認した際に、自分から見ていいと思うという意です。
つまり、言いたいことは誰もあなたが絶対に正しいということは言えないし、逆に言うと絶対に間違っているとも言えないということです。(当然、コードが仕様や自分の意図した通りに動かないと間違いですが・・)
なので、このような文化の中で大切なのは、自分の書いたコードや仕事にしっかりとした考えを持つことが重要になります。逆に言えば、設計など多少悪くても、しっかりと考えを持っていれば、相手も快く間違いを教えてくれますし、そこから直すことも簡単にできます。
おわりに
また、思い出し次第随時更新していきたいと思います。
AdventCalendarはまだまだ続くので、技術系の記事は他で書いていきたいと思います。
明日は、今回のAdventCalendarの発起人で、機械学習が得意な東大生メンターのへむへむです!!