【ちゃんなるぶろぐ】社会人1年生が日々の学びをアウトプット!

>>> 読書・遊び・プログラミング・アプリ開発などを通して学んだことを、文章という形で出力 <<<

3分でわかる!「プログラマが知るべき97のこと」その⑧

読み終えるまで約3分

 

 

どうも、ちゃんなるです! 

今日も一流のプログラマーになるべく知識を磨きます!

 

今回は、次の書籍の一部を要約します。

プログラマが知るべき97のこと』

 

下の記事の続編です↓↓

chan-naru.hatenablog.com

 

 

 

今回選択した3つのテーマ

本書はタイトル通り97のことについて書かれています。

今回は、22~24番目の項目についてまとめます。

  1. 1万時間の訓練(No. 22)
  2. ドメイン特化言語(No. 23)
  3. 変更を恐れない(No. 24)

 

①1万時間の訓練

このテーマで述べられていたことは、

「スキルを高めるには集中・反復・そのための時間が必要である。エキスパートは才能を持ち合わせているかもしれないが、時間をかけずにエキスパートになった者はいない。多くの時間を自己研鑽に費やそう!」

ということです。

 

以下、要約です。

『学び』と言う言葉があります。

この目的は、自らの能力を高めること、すなわち「スキル」や「テクニック」を身につけることです。 

『学び』で重要なのが『反復』です。

身につけたい能力をいくつかの小さな要素に分割し、それぞれについて反復訓練を繰り返します。

 

お金をもらって開発をする場合は、その目的は『製品を完成させること』です。

対して『学び』の場合、その目的は『自分の能力を高めること』です。

 

自問してみましょう。

「仕事で開発作業に費やしている時間はどのくらい?」

それに対し、「自己研鑽している時間はどのくらい?」

 

「エキスパートになるためには、1万時間努力する必要がある」という『1万時間の法則』があります。

Peter Norvigは、何かでエキスパートになるには約1万時間の訓練が必要と述べている*。いわばこの1万時間というのが「マジックナンバー」ということになる。

Mary Poppendieckも、著書『リーンソフトウェア開発と組織改革』**の中で「どんな専門的職業であれ、入念に計画された、集中的な訓練を最低10,000時間積み重ねることで専門家になると言う」と書いている。

(本書44ページより)

norvig.com

 

仕事で成果が出ない人は、学びの時間が足りないのではないでしょうか?

逆に成果が出ている人は、学びの時間が生活の一部になっているのではないでしょうか?

 

 

ドメイン特化言語

このテーマで述べられていたことは、

ドメイン特化言語(DSL)は、ある分野に固有の語彙や誤報を使用して現象を表現できるように作られたプログラミング言語であり、内部DSLと外部DSLの2つに大別できる。」

ということです。

 

以下、要約です。

 

ドメイン特化言語DSL : Domain Specific Language)はご存知でしょうか?

 

各分野(ドメイン)には、それぞれ固有の事象があります。

固有の事象を表現できるように作ったプログラミング言語DSLです。

ある分野に特化している言語ですね。 

 

DSL『内部DSL『外部DSLの2つに分けることができます。

 

【内部DSL

汎用のプログラミング言語の書き方を工夫して、見かけ上の構文を自然言語に近づけた言語のこと。

ホスト言語(元になった言語)のAPI、ライブラリ、ビジネスコードなどはラッピングされるのが普通です。

ラッパが提供され、技術的知識がなくてもその機能を容易に利用できるようにしてあるのです。

(本書46ページより)

具体例を挙げるとすれば、Rubyのテスト記述FWであるRspecがあるでしょう。

 

【外部DSL

汎用のプログラミング言語とは全く別の構文を持ったDSLのこと。

具体例を挙げるとすれば、データ操作に特化した言語であるSQLがあるでしょう。

Webページ作成に特化したPHPもそうです。(JavaScriptもWebページ作成に強いですが、特化しているわけではなくネイティブアプリやGPU計算など色々なことができるので、DSLではありません。)

 

 

③変更を恐れない

このテーマで述べられていたことは、

「大切なのは、積極的にシステムを改良していく姿勢である。」

ということです。

 

以下、要約です。

 

ひどいプロジェクトに関わったことはありませんか?

ひどいプロジェクトとは、コードベースが低品質であり、どこかに変更を加えると関連のない他の部分が壊れてしまうようなものを言います。

 

こういったプロジェクトを生んでしまう背景には、『できる限り他の部分を破壊しないように、なるべく変更を加えない』という実装者の姿勢があります。

これはまさにソフトウェアという『プログラムコードを積んで作るジェンガをプレイしているようなものです。

 

ジェンガはいつかは壊れます。

ですが無闇に変更を怖がるせいでひどいプロジェクトになっている可能性が高いのではないでしょうか?

勇気を出してリファクタリングをすればいいのです!

もちろん時間と労力はかかりますが、その後プロジェクトが進行する中でその投資は回収できますし、何倍もの利益となって返ってきます。

 

また、ひどいプロジェクトを改修した経験はその後の実装にて役に立ちます。

その経験を通して、どうしたらひどいコードベースにならないのか?を考え、その後実装するコードベースの品質が上がるはずです。

 

よくないのは、変更を怖がる姿勢です。

良いのは、変更を怖がらない姿勢です。

 

積極的に変更を加える姿勢を持っていきましょう!

 

まとめ

『学び』は私たちにとって重要であり、その目的は能力を高めること!

スキルの習得には多くの時間が必要となるので、日々自己研鑽を続けましょう。

目指せ、1万時間!

ドメイン特化言語DSL)とは、ある分野に特化した言語のことです!

③他の部分に影響が出そうだからといいプログラムに変更を加えるのを怖がる人が多いです。しかし、変更を避ける姿勢が積み重なると改修困難なプロジェクトを生んでしまいかねません…積極的に手を加える姿勢を持ちましょう!

 

*より深く知りたい方は、ぜひ本書を手にとってみてください!

書籍情報

プログラマが知るべき97のこと [ ケブリン・ヘニー ]

価格:2,090円
(2021/5/13 11:12時点)
感想(1件)

【中古】 プログラマが知るべき97のこと /ケブリンヘニー【編】,和田卓人【監修】,夏目大【訳】 【中古】afb

価格:825円
(2021/5/13 11:12時点)
感想(0件)

【書籍名】プログラマが知るべき97のこと

【著者名】ケブリン・へニー、夏目大(訳)

【出版社】オーム社

【出版日】2010年12月

【ページ数】243ページ