書籍『あなたの24時間はどこへ消えるのか』と『News Diet』 [本]
『あなたの24時間はどこへ消えるのか』の「あとがき」は、「私の父には、定年が来なかった。」で始まり、後半には次の言葉が印象的に書かれています。
週末の楽しみは平日に時間は有限であり、第3章「人生を進める1週間の使い方」では、仕事のタスクをプライベートのタスクを同等に扱うことが述べられており、著者によるタスクへの取り組み方が紹介されています。プライベートで行いたいことを仕事のタスクと同等に扱うことは、将来、あれをやっておけばよかったと後悔しないために重要だということは同意できます。
定年後の夢は今年に
第2章「時間泥棒はすぐそこに」の内容は、まさに『News Diet』で述べられていることの実践例とも言える内容となっています。『News Diet』では、今日では、技術の進歩によってさまざまなニュースが「通知」されるようになっているが、次のようにニュースの害が述べられています。
- ニュースという一口サイズのごちそうをたらくふ食べる行為は、間違いなく成功の邪魔をする要因の一つだ。
- それなしでは生きられないほど重要なニュースなど存在しない。数え切れないほどのニュースよりも、たった一冊の良書の方が何千倍もあなたの人生と健康のためになる。
- 仕事がある日に多くのニュースを消費すると、どれだけの時間を無駄にしたかとは関係なしに不満足な成果しかあげられない。何かをやり遂げられるだけの意志力が残されていないからだ。
『あなたの24時間はどこへ消えるのか』の第2章では、さまざまな通知をオフにすることとアプリケーションを削除することが書かれています。アプリケーションの削除まではまだしていませんが、私自身もiPadやiPod Touchのアプリケーションの多くの通知機能をオフにしています。
通信環境が発達したおかげで世界が狭くなり、リアルタイムに多くのニュースに接することが可能になった今日の社会では、意識してニュースを遠ざけることを行わないと、貴重な時間が失われていくことを示す2冊です。
2021-02-28 12:22
コメント(0)
推薦書籍(ソフトウェアエンジニアの心得) [プログラマー現役続行]
長年、「ソフトウェアエンジニアの心得」と題して、新卒新人向けの教育を行ってきました。その中で、推薦書籍として挙げている書籍です(改訂版が出ていれば、改訂版を表示しています)。
私自身は、翻訳のために読んだものも含めて、出版されるごとに(多くは英語の原著を)読んでいったので、12冊を読んでいます※。しかし、若い人達は一度には読めないと思いますので、興味がある本から読んでもらえればよいかと思います。
※『達人プログラマー』と『リファクタリング』は初版を読んでいます。
今後もさまざまな良書が出版されると思いますが、20年後には、「これが私の推薦図書の一覧です」と若い人達に推薦できるようになってください。
読みやすいコードを書く
【電子合本版】Code Complete 第2版 完全なプログラミングを目指して
- 作者: Steve McConnell
- 出版社/メーカー: 日経BP
- 発売日: 2016/04/14
- メディア: Kindle版
リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)
- 出版社/メーカー: オライリージャパン
- 発売日: 2012/06/23
- メディア: 単行本(ソフトカバー)
実践する開発者
ソフトウェア職人気質―人を育て、システム開発を成功へと導くための重要キーワード (Professional Computing Series)
- 出版社/メーカー: ピアソンエデュケーション
- 発売日: 2021/02/24
- メディア: 単行本
アプレンティスシップ・パターン ―徒弟制度に学ぶ熟練技術者の技と心得 (THEORY/IN/PRACTICE)
- 出版社/メーカー: オライリージャパン
- 発売日: 2010/07/08
- メディア: 単行本(ソフトカバー)
Clean Coder プロフェッショナルプログラマへの道 (アスキードワンゴ)
- 出版社/メーカー: ドワンゴ
- 発売日: 2018/08/01
- メディア: Kindle版
ベタープログラマ ―優れたプログラマになるための38の考え方とテクニック
- 出版社/メーカー: オライリージャパン
- 発売日: 2017/12/15
- メディア: 単行本(ソフトカバー)
私自身は、翻訳のために読んだものも含めて、出版されるごとに(多くは英語の原著を)読んでいったので、12冊を読んでいます※。しかし、若い人達は一度には読めないと思いますので、興味がある本から読んでもらえればよいかと思います。
※『達人プログラマー』と『リファクタリング』は初版を読んでいます。
今後もさまざまな良書が出版されると思いますが、20年後には、「これが私の推薦図書の一覧です」と若い人達に推薦できるようになってください。
2021-02-24 19:34
コメント(0)
コードの保守性とツール [プログラマー現役続行]
今日のソフトウェア開発では、使っているプログラミング言語がコンパイル言語なのかインタープリタ言語なのかに関係なく、そのソースコードを静的に解析して、さまざまな問題点を報告するツールもしくはIDEが揃っています。また、ソースコードのフォーマッタとして、Go言語標準のgofmtコマンドや、多くの言語で使われているPrettierなどがあります。
このようなツール群が存在しなかった時代(私で言えば、1978年〜)、使われていない変数、関数、メソッドなどは、コードレビューで指摘して削除してもうら必要がありました。プロジェクト(あるいは開発組織)で、ソースコードの読みやすさのために「コーディング規約」を決めることも多かったです。開発者がコーディング規約を守っているかも、コードレビューでチェックする必要がありました。
幸い今日では、コードレビューでこのような指摘をしなくても、プロジェクトで使う静的解析ツールを決めて、それをCIで実行することで、さまざまな指摘を行ってくれます。その結果、開発者自身で指摘箇所を修正できます。
見方を変えると、昔はコードの読みやすさを含む保守性を向上させるために、人によるコードレビューに頼っていたことになり、そのための工数が必要だったことになります。一方で、そのような工数を費やさなかった開発組織では、フォーマットがばらばらだったり、使われていない変数や関数が散見されたりと、保守性を下げる要因を多く持つソースコードが積み上げられていました。
今日では、ソースコード解析ツールやフォーマッタを導入してCIで適用すれば、人によるコードレビューでは、本質的なコードのロジックや保守性の観点に集中できます。その分、組織としての生産性が向上するわけです。
ソースコード解析ツールやフォーマッタを導入している開発組織に、ソフトウェア開発経験が浅い人や新卒新人が入ってきた場合、ある基準レベルのソースコードが作られることになりますが、当の本人は、ソースコード解析ツールが警告する内容の背景やフォーマッタを使う背景を理解しないままになってしまうことが多くなります。それらの背景となるようなひどい開発を経験する必要はないですが、知識としてはさまざまな書籍を通して学習してもらうのがよいかと思います。
このようなツール群が存在しなかった時代(私で言えば、1978年〜)、使われていない変数、関数、メソッドなどは、コードレビューで指摘して削除してもうら必要がありました。プロジェクト(あるいは開発組織)で、ソースコードの読みやすさのために「コーディング規約」を決めることも多かったです。開発者がコーディング規約を守っているかも、コードレビューでチェックする必要がありました。
幸い今日では、コードレビューでこのような指摘をしなくても、プロジェクトで使う静的解析ツールを決めて、それをCIで実行することで、さまざまな指摘を行ってくれます。その結果、開発者自身で指摘箇所を修正できます。
見方を変えると、昔はコードの読みやすさを含む保守性を向上させるために、人によるコードレビューに頼っていたことになり、そのための工数が必要だったことになります。一方で、そのような工数を費やさなかった開発組織では、フォーマットがばらばらだったり、使われていない変数や関数が散見されたりと、保守性を下げる要因を多く持つソースコードが積み上げられていました。
今日では、ソースコード解析ツールやフォーマッタを導入してCIで適用すれば、人によるコードレビューでは、本質的なコードのロジックや保守性の観点に集中できます。その分、組織としての生産性が向上するわけです。
ソースコード解析ツールやフォーマッタを導入している開発組織に、ソフトウェア開発経験が浅い人や新卒新人が入ってきた場合、ある基準レベルのソースコードが作られることになりますが、当の本人は、ソースコード解析ツールが警告する内容の背景やフォーマッタを使う背景を理解しないままになってしまうことが多くなります。それらの背景となるようなひどい開発を経験する必要はないですが、知識としてはさまざまな書籍を通して学習してもらうのがよいかと思います。
2021-02-22 19:15
コメント(0)
一年間の在宅勤務 [プログラマー現役続行]
2020年2月18日から在宅勤務(WFH:Work From Home)を始めて、ちょうど一年が経過しました。この一年間、一度も会社には出社していませんし、最も大きな出来事は、2020年6月20日(土)に急性心筋梗塞で緊急搬送され、カテーテル治療で一命を取り留めたことです。
急性心筋梗塞になる以前と以降では、同じ在宅勤務であっても大きく変わりました。心筋梗塞になる前は、朝食後に仕事を始めて、昼食、そして夕方には仕事を終えるという生活でした。
6月27日(土)に退院してからは、週に2回か3回の心臓リハビリテーションで午後1時から4時まで外出するようになりました。心臓リハビリテーションがない日は、朝食後1時間ほど経過してから自宅でエアロバイクを30分行い、その後、シャワーを浴びるという生活を送っています。11月からは心臓リハビリテーションも週に1回となったので、自宅でのエアロバイクが主となっています。在宅勤務でかつ柔軟な勤務が許されていなければ、心臓リハビリテーションに通うのも難しかったはずです。
金曜日※は、企業向けの技術研修を行っていることが多いので、その場合は、9時30分〜17時30分が研修となります。そのような日は、早めに朝食を取ってエアロバイクをしたり、あるいは、エアロバイクをしなかったりです。
※ 「複業を20年」の「2. 技術教育や講演」を参照してください。
往復の通勤時間がなくなったおかげで、時間にかなりゆとりを持てるようになり、電車に乗らなくてもよいし、天候を気にする必要もなくなりました。
私の場合は、自宅には書斎があって、机、椅子、ディスプレイも揃っていたので、特に何かを準備することなく作業できる環境でした。椅子はかなり昔に購入したアーロンチェアですし、ディスプレイも27インチと21インチの2つがあるため、自宅の方がオフィスよりも快適です。出社していた頃は、平日は書斎をほとんど使っていませんでした。
オンラインのミーティングは、当初は27インチのディスプレイ(古いApple Thunderboltディスプレイ)のカメラとマイクを使っていたのですが、今はマイクだけは別途購入したものを使っています。
対面ので教育であれば、説明を行いながら表情を見ることで、理解しているのか、理解していいないのかが分かるので、理解していないと思えたら説明を変えることができたのですが、オンラインでは難しいです。
急性心筋梗塞になる以前と以降では、同じ在宅勤務であっても大きく変わりました。心筋梗塞になる前は、朝食後に仕事を始めて、昼食、そして夕方には仕事を終えるという生活でした。
6月27日(土)に退院してからは、週に2回か3回の心臓リハビリテーションで午後1時から4時まで外出するようになりました。心臓リハビリテーションがない日は、朝食後1時間ほど経過してから自宅でエアロバイクを30分行い、その後、シャワーを浴びるという生活を送っています。11月からは心臓リハビリテーションも週に1回となったので、自宅でのエアロバイクが主となっています。在宅勤務でかつ柔軟な勤務が許されていなければ、心臓リハビリテーションに通うのも難しかったはずです。
生活パターン
心臓リハビリテーションがない日は、次のような感じです。- 4時前後に起床して、柔軟運動やラジオ体操
- 5時:仕事始め
- 7時30分〜8時15分に朝食休憩
- 9時〜10時10分:エアロバイク・シャワー休憩
- 11時30分〜12時15分:昼食休憩
- 17時30分:仕事終わり
- 20時30分:就寝
- 4時前後に起床して、柔軟運動やラジオ体操
- 5時:仕事始め
- 7時00分〜8時15分:シャワー・朝食休憩
- 11時30分〜12時15分:昼食休憩
- 13時〜16時:心臓リハビリテーション
- 17時30分:仕事終わり
- 20時30分:就寝
金曜日※は、企業向けの技術研修を行っていることが多いので、その場合は、9時30分〜17時30分が研修となります。そのような日は、早めに朝食を取ってエアロバイクをしたり、あるいは、エアロバイクをしなかったりです。
※ 「複業を20年」の「2. 技術教育や講演」を参照してください。
最も良かった点
在宅勤務で最も良かった点は、何と言っても通勤時間がなくなったことです。以前は、朝5時40分過ぎに自宅を出て、会社到着が7時30分。夕方16時には退社して、帰宅するのが18時前という生活を送っていました。労働時間は7時30分でした。往復の通勤時間がなくなったおかげで、時間にかなりゆとりを持てるようになり、電車に乗らなくてもよいし、天候を気にする必要もなくなりました。
開発環境
在宅でソフトウェア開発を毎日行う上でおそらく最も重要なのは、無理のない姿勢で開発を続けられるかだと思います。オフィスでは、椅子、机、ディスプレイが用意されていて、無理のない姿勢で開発ができます。しかし、自宅というのは、一日開発を行う場所ではもともとないので、何も揃っていなかったりします。そのため、コロナ禍で在宅で仕事をするために机、椅子、ディスプレイを揃えた人も多いのではないかと思います。私の場合は、自宅には書斎があって、机、椅子、ディスプレイも揃っていたので、特に何かを準備することなく作業できる環境でした。椅子はかなり昔に購入したアーロンチェアですし、ディスプレイも27インチと21インチの2つがあるため、自宅の方がオフィスよりも快適です。出社していた頃は、平日は書斎をほとんど使っていませんでした。
オンラインのミーティングは、当初は27インチのディスプレイ(古いApple Thunderboltディスプレイ)のカメラとマイクを使っていたのですが、今はマイクだけは別途購入したものを使っています。
技術教育
以前は対面で行っていた金曜日の技術教育は、今ではすべてオンラインで行っています。オンラインで行う上での最大の問題点は、受講生の表情が分からないことです。対面ので教育であれば、説明を行いながら表情を見ることで、理解しているのか、理解していいないのかが分かるので、理解していないと思えたら説明を変えることができたのですが、オンラインでは難しいです。
オンラインでの読書会
以前は、会社で月曜日の朝8時から技術書の読書会を行っていましたが、在宅勤務になってからは行っていません。ただ、外出こともほとんどなくなったので、土曜日にオンラインでの読書会を開催しています。土曜日のオンラインでの読書会は、いつまで続けられるか分かりませんが、コロナが収束しても続けていきたいと思っています。今後
いつまで在宅勤務が続くかは不明ですが、基礎疾患もあり、続けられれば続けていきたいと思っています。2021-02-17 19:35
コメント(0)
第10期Go言語研修が終了しました [プログラミング言語Go研修]
昨年の9月から開講した、リクルートテクノロジーズ社向けのGo研修が、2月5日(金)に終了しました。リクルートテクノロジーズ社としては第5期ですが、私にとって通算第10期になります。今回は、すべてオンラインでの研修となりました。
Go研修では、半年間の6回で書籍『プログラミング言語Go』を学びます。毎回、予習範囲が決められており、事前に予習範囲のテキストを読んで質問をまとめ、練習問題のプログラミングは解いてGithubに入れてもらいます。研修当日は、質問に対する回答や解説をして、練習問題の解答の確認を行います。
Go研修では、半年間の6回で書籍『プログラミング言語Go』を学びます。毎回、予習範囲が決められており、事前に予習範囲のテキストを読んで質問をまとめ、練習問題のプログラミングは解いてGithubに入れてもらいます。研修当日は、質問に対する回答や解説をして、練習問題の解答の確認を行います。
プログラミング言語Go (ADDISON-WESLEY PROFESSIONAL COMPUTING SERIES)
- 出版社/メーカー: 丸善出版
- 発売日: 2016/06/20
- メディア: 単行本(ソフトカバー)
2021-02-10 18:00
コメント(0)