So-net無料ブログ作成
検索選択
前の10件 | -

久しぶりにKOITが聞けるように(2) [インターネット放送]

先月「久しぶりにKOITが聞けるように」を書いた時には、Mac上のChromeブラウザで再生できなかったのですが、今日、確認してみたら聞けるようになっていました。

KOITは、20年以上前にシリコンバレーのPalo Alto, CAに住んでいた頃にカーラジオでよく聞いていたFM放送局です。現地の放送がそのまま流れてきますので、コマーシャルもそのまま現地の話です。そして、今日ではモバイルルータ、iPod touchBluetoothと経由してカーナビで聞くことができます。便利な時代になったものです。


スポンサーリンク





横浜Go読書会 [golang]

Go言語に関する書籍を読んで、Go言語を学ぶ読書会を11月から計画しています。以下が概要です。
  • 毎月第2土曜日の午後1:00〜午後5:00まで。
  • 基本的に書籍を読んでいきます。事前に割り当てをして発表してもらうのではなく、当日、書籍を読んでいき、疑問点などがあれば参加者で議論をします。
  • 場所は、横浜市内(みなとみらい)を予定しています。
最初の書籍は、『プログラミング言語Go』です。

プログラミング言語Go (ADDISON-WESLEY PROFESSIONAL COMPUTING SERIES)

プログラミング言語Go (ADDISON-WESLEY PROFESSIONAL COMPUTING SERIES)


会議室の収容人員数の制約のため、一般参加者の枠は8名を予定しています。詳しいことが決まり次第、参加者をconnpassで募集する予定です。


スポンサーリンク





総閲覧数が累計で500万を超えました [総閲覧数]

スクリーンショット 2016-09-03 15.14.11.png
総閲覧数が500万を超えました。400万から500万は16か月でした。


スポンサーリンク





練習問題の解答からみるエンジニアのレベル(2) [プログラマー現役続行]

練習問題の解答からみるエンジニアのレベル」では、研修の予習である練習問題の解答のレベルを分類してみました。解答のレベルに対して、次のように分類しています。
  • 全く解けていない
  • 一見すると解いているように見えるけど、バグがある
  • 練習問題が求めているものと解答が異なる
  • 解いているが、動作の確認が目視になっている
  • テストコードも整備されてきちんと解かれている
研修では全員の解答を確認する時間はないので、一人か二人の解答を確認します。当然、その場合に上記の最初の三つのレベルの人の場合、そのままでは解答したことにはならないわけです。

未解答(誤解答)に対して受講生がどのような対応をするかは、次の二つに分けられます。
  • もう終わったということで何もせずに、次回の範囲を予習をする。
  • 解いていなかった問題を解いたり、誤っていた解答を修正した後で、次回の範囲を予習する。
最近の研修では練習問題の解答の提出は、すべて各人のgithub.com上の公開リポジトリで行ってもらっていますので、研修後にどちらの対応をしているかは簡単に分かります。

当たり前ですが、研修後にどちらの対応をするかは、社会人となってからのソフトウェアの開発年数には全く関係ありません。私が期待するのは、私から指示されなくても後者の対応をするソフトウェアエンジニアです。

英語とTOEIC(3) [英語]

会社による費用負担で受けられるTOEIC(団体受験)は受験できる機会について制約があるのですが、前回から3年を経過して受験できる条件に合致したので、久しぶりに受験しました。結果は、ListeningとReadingの両方とも470点の合計940点でした。過去の成績はこちらに掲載されています。

過去の成績を見てみると、1994年11月からほとんど変わっていません。つまり、TOEIC試験に関しては、1993年5月(33歳)に米国駐在を終えて日本に帰ってきてからは進歩していないようです。

久しぶりにKOITが聞けるように [インターネット放送]

http://www.koit.com/は、ある時から再び日本では聞けなくなっていたのですが、今朝、iPod touchでKOITのアプリケーションを起動して接続してみたら、再び聞けるようになっていました。

試しに、MacBookでChromeブラウザで接続してみたのですが、原因は不明ですが、どうもうまく再生されませんでした。

時の流れは速く、カーラジオでKOITを聞き始めた頃からすでに25年が過ぎました。

API設計の基礎(9) [API設計の基礎]

「API設計の基礎」は37頁しかないですが、それを題材として勉強会をしたという人達から誤字・脱字を指摘していただき、修正したものをアップしました。


2009年に最初のドラフトを公開してからもう7年になります。さまざまなプロジェクトのコンサルテーション(レビュー)を通して分かるのは、「API設計の基礎」に書いてあることを部分的でもきちんと実践しているエンジニアソフトウェア開発組織は非常に少ないということです。

「まえがき」に次のように書いています。
本書は、私自身がソフトウェア開発を行いながら学んだことをまとめたものであり、その内容には偏りがあるかもしれません。しかし、本書を通して、みなさんが私と同じような遠回りをすることなくソフトウェア開発をされることの助けとなれば幸いです。
一人のエンジニアが遠回りするのはその人の問題で終わりますが、ソフトウェア開発組織が遠回りすることは、その組織に属している現在のエンジニアや将来その組織に入ってくる若い人達が遠回りをして、結果的に技術的な負債を積み上げたり、非効率なデバッグを行ったりすることになると思います。

その意味で、今回のようにグループで勉強会を行ってもらえるというのは、その勉強会に参加している人達が属している組織に対して何らかのよい影響を与えるのではないかと思います。

第2期社内Go言語研修 [プログラミング言語Go研修]

プログラミング言語Go (ADDISON-WESLEY PROFESSIONAL COMPUTING SERIES)

プログラミング言語Go (ADDISON-WESLEY PROFESSIONAL COMPUTING SERIES)


第2期の社内Go言語研修を今日から開講します。第1期(現在11名受講)はまだ終了していませんが、並行して第2期を開講します。第2期の受講生は7名です。
※ 社内での正式名称は「プログラミング言語Go基本技術習得」コースです。

テキストは『プログラミング言語Go』です。毎回、あらかじめ指定された範囲の内容を読んで質問をまとめて、練習問題のプログラミングの解答を提出してもらいます。質問はGoogle Drive上の共有されたGoogle Sheetに記入してもらい、練習問題は各人のGithubリポジトリを介して提出してもらいます。

第1期と第2期のほとんどの受講生は業務でGo言語を使用していませんし、Java研修もそうですが、20代の人が多いです。

練習問題の解答からみるエンジニアのレベル [プログラマー現役続行]

長年行っているJava研修(Java 8研修も含む)はテキストとして『プログラミング言語Java第4版』『Java SE 8 実践プログラミング』を使用しています。また、今年から始めたGo言語研修『プログラミング言語Go』を使用しています。どのテキストにも、プログラミングの練習問題が豊富に含まれています。

基本的にプログラミングの練習問題は事前に解いてもらいます。そして、研修の場で解答の確認を行います。つまり、ソースコードを研修の場で開くわけです。私自身は事前に解答のソースコードを見ておくことはしませんので、研修の当日に受講生のソースコードを見ることになります。

練習問題であってもソースコードの可読性という視点でも分類はできますが、解答できているかというレベルで分類すると次のようになります。
  • 全く解けていない
  • 一見すると解いているように見えるけど、バグがある
  • 練習問題が求めているものと解答が異なる
  • 解いているが、動作の確認が目視になっている
  • テストコードも整備されてきちんと解かれている

全く解けていない

練習問題にもさまざまな難易度があるので、サービス問題ともいえるやさしい問題から難易度が多少高いものがあります。練習問題なので、難易度がものすごく高いものはあまりないです。それでも、「解けていないのはどういうこと?」と思われる難易度の低い問題を解いていない人は、全体として解けていない問題が多くなります。
※ ソフトウェア・スキル・インデックスでいえば、レベル1(初心者)と2(見習い)の間でしょうか。

一見すると解いているように見えるけど、バグがある

実は、これがおそらく最も多いです。研修の場で初めて私自身が受講生の解答を見るのですが、エディターやIDEでコードを開いて見た瞬間に「何か臭う」と思い、よく読むとやはりバグがあるのです。そこで、解答を作成した受講生にどこかおかしくないかと聞くと、最も多い返事が「だいぶん前に書いたので忘れました」という回答です。研修は一月に1日だけなので、進捗によっては一か月前もしくは二か月前に書いたコードとなります。

練習問題の解答のソースコードは短いものが多く、「忘れた」と回答したら済まされるという思考はソフトウェアエンジニアとして正直許されません。そのような回答をされると私が言うのは、「覚えているかどうかではなく、今読んで理解して問題点を見つけなさい」です。
※ ソフトウェア・スキル・インデックスでいえば、レベル2(見習い)と3(初級職人)の間でしょうか。

練習問題が求めているものと解答が異なる

これも意外と多いです。つまり、練習問題の設問内容をきちんと読まずに、間違った解答もしくは機能が少ない解答となっています。多くは、練習問題で複数の機能が要求されているのに、全部を実現していない場合です。そして、どうして全部実現していないのかと聞くと、「練習問題の内容を読み落としていました」という回答が圧倒的に多いです。そもそも、練習問題はせいぜい2,3行で書かれています。それでも、最後まできちんと読まずに解いてくるわけです。
※ ソフトウェア・スキル・インデックスでいえば、レベル2(見習い)と3(初級職人)の間でしょうか。

解いているが、動作の確認が目視になっている

すべての練習問題でテストコードが容易に書けるわけではありませんが、容易に書ける練習問題でも、動作の正しさを、実行して目視で確認するだけと言うものです。そして、バグがあるけれどテストケースが少ないためにそのバグに気づけていないことが多いのは、目視で結果を確認するようになっている解答です。
※ ソフトウェア・スキル・インデックスでいえば、レベル2(見習い)と3(初級職人)の間でしょうか。

テストコードも整備されてきちんと解かれている

これは何も言うことはありません。
※ ソフトウェア・スキル・インデックスでいえば、レベル3(初級職人)でしょうか。

研修の練習問題であっても、「許される無知の範囲は開発経験年数に反比例する」で書いたのと同じように、経験年数が長いほど期待される解答のレベルは高くなっていきます。

許される無知の範囲は開発経験年数に反比例する [プログラマー現役続行]

UUUM社の採用に関するブログ「優秀なエンジニアを採用するために面接で気をつけていること」でエンジニアの学習に関して次のように書かれています。
採用を決める時の一番重要なポイントは実力ですが、20代の若い方は将来性を期待して、ポテンシャル採用をすることもあります。 ポテンシャル採用で重要なのは、なんといっても向上心。 「いろんな技術を勉強したいんです」というのは誰でも言いますよね。 本当にそう思っているのであれば普段から勉強しているはずなので、中身をちゃんと理解できているのかを確認させてもらいます。 20代に関しては、現時点での実力が多少低くても採用します。 その代わり、しっかり勉強してもらって、ちゃんとした技術力を身につけてもらいます。

30代になってくると、やはり実力が求められます10年近くもエンジニアをやっていながら、技術的な知識の薄い人が多いのには驚かされます。 それだけ長い時間をかけて実力が伸びてないということは、今後の伸びも期待できないので、残念ながら不採用となってしまいます。 なので、20代の若い方達には、今のうちにしっかりと勉強して実力を身につけてもらいたいと思います。

以前書いた「継続した学習」では、中途採用の面接の際に行っていた読書した書籍の確認の話を書いています。面接時に読んだ書籍の一覧を用いた確認は前職の富士ゼロックス情報システムの頃からやっていたのですが、本当に「10年近くもエンジニアをやっていながら、技術的な知識の薄い人が多いのには驚かされます。 」
※ この一年は自分で率いるプロジェクトもなく、部下なしの状態なので中途採用の面接をすることはありません。

私が行っている社内研修であるJava言語研修Go言語研修には、入社2年目や3年目ぐらいの若いエンジニアが受講することが多いのですが、コンピュータの基本構造、「データ構造とアルゴリズム」、オペレーティングシステムなどの基礎的な事柄を知らない人が多いのです(「ハッシュテーブルの季節」)。

研修後の懇親会などでは、「新卒新人や入社して2、3年目で知らないで許される範囲は多少広いが、経験年数を経るごとに許される範囲は狭くなっていく」という話をします。つまり、きちんと学習を継続していかないと、だめなわけです。

しかし、継続的に学習を続けていくことの重要性を教えることなく、与えられた開発業務をこなせればよしとするソフトウェア開発組織が多いのではないでしょうか。その結果、10年が過ぎて他の会社に転職しようとしても不採用になってしまうエンジニアの集団になってしまう可能性が高くなります。(「ソフトウェア開発組織が持つべきカルチャー 001」)

前の10件 | -