情熱プログラマ

[情熱プログラマ] を読みました。しばらく前ですが。

本書の内容は「 エンジニアが良き開発者であり続けるための心構え 」を説いたものと理解しております。

一番の下手くそでいよう

「一番の下手くそでいよう」というのは、本書の 1章に掲載された内容です。

次に要約を示します。

僕はサックス奏者をしていた。
バンドの中で一番下手くそな存在でいると、不思議に、いつのまにか周りに溶け込めるようになる。

一番下手くそとは、つまり自分より優れた人達と一緒だという意味だ。
人間の本能として、集団の習慣などを採り入れようとする集団心理があり、そのおかげで、奏者としてもプログラマとしても、チームで一番下手くそでいることで、どういうわけか自分自身が賢くなる。

情熱プログラマー ソフトウェア開発者の幸せな生き方

新しいチームに飛び込んだ

新チャンス

私は常々「何でももやりますよ」と公言するようにしています。
それが、結果的にスキルアップにつながると理解しているわからです。
(安全地帯にとどまっていると、新しい気づきは得られにくいですよね。)

これが功を奏し、新しいチャンスをいただくことができました。

それは、Swiftでの iOS ネイティブ開発です。
大変ありがたいことです。

iOS アプリ開発を勉強する

今回のプロジェクトはこんな感じです。

  • Swift 4
  • Xcode 9.x
  • iOS 10 以降

iOS アプリ開発を行う場合、言語だけではなく Xcode の習得も必要になります。

私のプリ開発経験はCocos2d-xのみです。
Xcode はちょっと触ったことがある程度で、ネイティブの開発は全く経験がありませんでしたから、正直覚えることは多かったですね。

Swift

基本的な制御構文はどの言語でも共通ですが、Swift は言語思想が新しくて刺激があります。

特徴はextentionNull安全で、特にOptionalの取り扱いが重要です。 ( Swift は nil ですが、[ nil 安全] はちょっと語感がしっくりきません。)

アンラップの方法がいくつもあることが混乱のポイントです。
スキルがないためかネストが深くなりやすく、そこを上手く美しくコーディングできるようになるのが課題ですね。

型に厳しく、書き方は緩く 」と、そんな言語です。

Xcode

Xcodeは macOS にバンドルされている IDE (統合開発環境) です。

Xcode は GUI で視覚的に開発できる Storyboardを使ってアプリの UI と画面遷移を実装することができます。
上手く使えばこの Storyboard で完結できるものも多のですがつまづきポイントも多いです。

Xcode も Storyboard も、設定項目がとにかく多くて、その辺りが「敷居が高い感」を上げているのだと思います。

一番下手な立場になって感じたこと

そんな難しい感のある iOS アプリプロジェクトに途中参加することになりました。

他のチームメンバーはずっと iOS アプリの開発に携わっている玄人ばかりです。
尻込みしてしまいます。

そのような立場に立つことで感じたことはこんなことでした。

  • 何がどこに書いてあるのかわからない
  • ちょっと何言っているのかわからない
  • 迷惑かけないように頑張らないと

チームに Join する前に、Swift のチュートリアルをこなし、簡単なアプリを作ってはいました。
けれども、 チュートリアルと製品になるプロジェクトとのレベルは全然違う のです。

それでも No Probrem

そうは言いながらも、時間が経つにつれ、ちょっとずつ色々なことがわかってくるわけです。

そう、目前の霧が晴れ、光が射してくるように。


何がどこに書いてあるのかわからないのは、プロジェクト固有の場合と、技術に依存する場合があります。
どちらも「そういうもの」にすぎません。

特にプロジェクトに固有のものは、新参者が一生懸命頭を絞って考えても意味がありません。
適切に質問をすれば、教えてもらえます。

No Probrem


会話に着いていけないのは、単語を知らず前提知識がないからです。

知識を得てバックグラウンドを理解すると、単語の意味がすっと入ってきて自然に会話についていけるようになります。

No Probrem


「迷惑をかけないように頑張らないと !」という意識、姿勢は、確実に他のメンバーにも伝わります。
大抵の人は努力しようとする人に対して寛大なものです。

それは一定のレベルにある人も、もちろん過去に努力しその苦しさを知っているからです。

No Probrem

アドバイスを受ける立場はおいしい

「チームで一番下手」でも、なんにも問題がありませんね。
むしろ私は最も美味しいポジションであると考えます。

今回の場合、私は「その道でバリバリの人の仕事を間近で見られる立場」を得たわけですから、最高の学習環境 を手に入れたと言えます。
大変ありがたいことです。


プログラミングの初心者がプログラム書けないのは「 考え方がわからない 」から、ということが大きいです。

そこを、自分一人で頑張ろうとすると膨大な時間がかかってしまいます。
自分の頭で考えられることなんて、ごくわずかだからです。

だからこそメンターの存在が重要なのです。

チームで一番下手であるということは、他のメンバーが皆 メンターになりうるということです。 指摘を受けるのは心苦しいかもしれませんが、それでスキルアップを果たせるなら全然 OK じゃあありませんか ?

おわりに

健康で 長く 働く 」がここ数年の私のテーマです。
これを実践するためには、「ただなんとなく働いているだけではいけないな」とずっと考え続けております。

幸せで主体的に働くためにも、[情熱プログラマ]のような キャリア開発と行動指針 が重要です。
そして、それを実現するためにはこの記事のように新しい経験を積むことも大切なのだと考えております。

こういう「 自分プロジェクトでは絶対やらないだろうな 」という状況に立つことは、かなり大きな経験です!

IT業界に携わっていらっしゃる方は、[情熱プログラマ] をぜひご一読なさってください。

この記事は tomita@atuweb がお届けしました。