プロのプログラマとアマチュアの違い

私の感想

十年とシステムエンジニアプログラマを仕事としてやってきた立場から述べたいと思います。 私の感想であり、普遍的なものではありません。

そもそも数日でプログラムを作る人がいるよね

ネットサーフィン(死語?)をしていると「このプログラムは3日で作りました!」とかいう人いますよね。反対に、3ヶ月、6ヶ月スパンでソフトウェアをつくる企業もいます。この違いは能力でしょうか? 例えば、マイクロソフトは数年もかけてWindowsのバージョンアップ版を発表しますが、あれはマイクロソフトの技術者が遅いせいでしょうか?

それは違うと断言します。

開発に時間がかかるのはなぜか

私が思うに以下のような理由です。

  • 異常系(エラー処理)を厳密に実装するため アマチュアは「正常」と「エラー」の2つの分岐処理を書いて満足しますが、プロは違います。運用でエラーが起きたときに解析ができるように「正常」「エラー1発生時」「エラー2発生時」「例外1発生時」「例外2発生時」・・・のようにエラー処理を多数分岐させて書きます。「仮にこの処理の途中でHDDが故障したら・・・」みたいなこともシステムによっては検討し、実装することもあります。

  • バグを潰すために各工程で検証期間を設けているため  プログラマはバグを潰すために、複数人で設計書やプログラムコードをレビューします。また、試験項目もレビューします。これが各工程で数日要します。

  • あとの人がメンテナンスをしやすいようにコーディングしようとするため  どの処理を関数にしたらわかりやすいか、コメントを入れるべきか、無駄がないか、などを考えてコーディングします。  全ては「運用で問題になったときに解析時間を減らすため、直しやすくするため、バグになりにくくするため、誰でもメンテナンスができるようにしたいため」です。お客様のためでもありますが、自分のためでもあるんです。  アマチュアももちろん考えながら実装していると思いますが、プロは考えるだけで1行も書かない日もありますよ。

結局何を言いたいか

天才プログラマーが世の中にいますよね。見てるとすごい速さでプログラムを作り上げます。 それはそれですごいと思います。しかし、企業では天才プログラマをたくさん雇うことはできません。 チームとしてシステムを開発しなければならないし、開発したシステムは5年10年と保守していかなければなりません。一人だけ天才がいても立ち行かないのです。

これからプロを目指す人、今、仕事に従事している人はあとからメンテナンスしやすいことを考えたコードが書けるよう心がけてください。自ずと周りから重宝されるプログラマ・SEになれると私は思います。

トラックボールマウスデビュー

マウス歴

20年近くマウスを使っていました。最近はAppleのマジックマウス2を使っていました。

トラックボールに浮気してみた

マウスはポインタを動かすために机の上を滑らせます。そのため結構広めにスペースが必要です。

トラックボールはこのスペースが不要です。トラックボールマウスが置けるだけのスペースがあればよく、一度設置したら 滑らせる必要がありません。

私が選んだトラックボールマウスは!

Logicoolですね。有名どころです。 これはいいですね。慣れが必要ですが、ボールのすぺりがよく腕が疲れません。

f:id:unyonyopochi-snake:20210413212316j:plain

*2021/4/25追記 ** 10日ほど使ってみて感想を言わせてもらいます。

-でかい。  成人男性平均よりも小さい私の手ではちょっと大きいですね。  ボタンが押しにくい。手のひらの大きさが平均以上なら大丈夫かな?

  • 本体の移動がないので狭い空間でも使える。

  • 慣れると違和感なくボールが動かせる

万年筆

愛用の万年筆

愛用というほど使い込んではいないのですが、気に入った筆記具を1本は持っていたいですね。 私が使っている万年筆はいくつかあるのですがその中の一つを紹介します。

それは「クラシックM200デモンストレーター」です。 特別生産品なので今同じものが購入できるかわかりません。

f:id:unyonyopochi-snake:20210326233348j:plain
デモンストレーター

デザイン

ペリカンといえば有名すぎるドイツの老舗。とてもスタイリッシュです。

使い勝手

書いていてかすれもなく書きやすいです。しかし、漢字を書くのは苦手かもしれないですね。 漢字は線の始まりと終わりは止め、ハネなどの尖ったシャープな線を引かないと格好がよくないのですが、シャープな線は書きにくいと感じました。逆に英語とかひらがなは書きやすいですね。

いずれにしてもお気に入りです。

RICOH GR

カメラについて

私が普段使っているカメラを紹介します。

GRとは

RICOHから発売しているカメラで、特徴としては以下の通り。

  • 高級デジタルコンデジ
  • 撮影素子のサイズはAPS-Cと普及タイプの一眼レフ並みのサイズ
  • 単焦点(ズーム機能は非搭載)
  • 電源ONから撮影可能になるまでの時間が短い
  • 自分の設定をモードダイヤルで一発切り替え可能

f:id:unyonyopochi-snake:20210322181720j:plain:w360
私の常用カメラ

気に入っているところ

気に入っているのはその機動力です。 とにかく電源ONからすぐに撮影できるし、マクロ機能があるので小物の撮影も可能。 スマホと違ってセンサーサイズ(撮影素子のサイズ)が大きくて暗くてもきれいに撮影できる。

デメリットは、ズームがないこと。 とはいっても、ズームがないなら撮影者が動けば良いこと。 ちなみに撮影を勉強するならばズームせずに自分で距離を取るほうが勉強になるらしい。 普段からズームを使っていると被写体との距離感のとり方が学べず良くない、とかなんとか。

それ以外は本当に良いカメラです。

配送できない?理由がわからない

いつも某オークションでヤ○トを使っています。 しかし、今日、コンビニで匿名配送をしようとしたら、配送できない地域とか言われました。 理由をコールセンターに問い合わせたら、「わからない」と言われてたらい回しにされました。

匿名配送の場合、地域を説明することもできず。

県名を伝えてもその地域の配送停止は出ていない、とのこと。

じゃあ、 ・コンビニのシステムが壊れた ・某オークションで発行した情報に誤り ・とても配送できない地域だった(例えば山の頂上とか被災地域とか) ・コールセンターが無能

のどれかですよね。今まで信頼してきた配送業者でしたが残念です。 コンビニの店員さんには色々調べてもらいました。コンビニには非はないでしょうね。

明日は大きな営業所に行って説明してきます。

プログラマ初心者が学習してほしい言語

私の仕事

私はソフトウェア開発に携わってもう20年になります。今まで習得した言語は以下の通り。 仕事をしていると開発するシステムによって得意な言語が変わってくるので、次々と覚えることになりました。

プログラム言語というと違和感があるスクリプト言語も挙げますね。

「初心者です。何言語を勉強したらいい?」

私のオススメはC言語です。 「Javaとかのほうが良くないか」、「古くない?」という意見もあるかと思いますが、私なりの根拠があります。

  • ”関数”とはなにかがわかる基本言語

どの開発言語も大半は「関数」というものがあります。必ずです。仮にJavascriptだろうがpythonだろうがperlだろうが必ずあります。

何故あるか。それは言語を学んでいくとわかると思いますが、複雑な機能は関数で分割するほうが作りやすいのです。

C言語を学ぶと、C++は似通った文法なので学びやすいのです。Javaも同様です。

  • C言語を知っている人は多いので質問ができる

*シンプル

非常にシンプルです。ここでいうシンプルというのは、例えば自動車免許を取る際、マニュアル車で練習するとクラッチの動きがわかりますが、AT車だとクラッチの意味がわからなかったりしますよね。C言語マニュアル車Java言語はAT車って感じです。C言語は書いたコードがどのように動くのかわかりやすいのです。

書籍

私がC言語を学ぶ際に読んでいた本を紹介します。

ソフトウェア業界では有名な本です。 なにせC言語を開発した人が執筆した本であり、この本を知らないC言語プログラマはいないのではないか、と言われるほどです!?

とはいえ、わかりやすい本かというと微妙。教科書と思っていただければと思います。

もっといろいろな本を読んだかと思って思い返しているのですが・・・実はC言語は上記の1冊以外は読んだ記憶がないですね。しかも一冊を最初から最後まで通して読んだことはないです。必要な章だけかいつまんで読んでいました。

HHKBを使い始めました

キーボードの重要性

私のようなプログラマだけではなく、多くの方はパソコンを使って仕事をしていることと思います。 そうすると、毎日キーボードを使って文字を入力しているわけです。 ならば、キーボードは自分の合った物を使ったほうが良いと思います。

f:id:unyonyopochi-snake:20210321005645j:plain:w240
真っ黒ではなく「墨」。肌触りが良い

HHKBとは

HHKBとはPFUが販売するHappyHacking KeyBoardの事です。 フルサイズでありながらテンキーを排して省スペース化されたキーボードで、とても使いやすいのです。

HHKB特徴

  • 省スペースサイズ

    フルサイズのキーボードはテンキーをよく使う人は必要なキーボードですが、私の場合、プログラムを書いたり説明資料を書くことが多いので、テンキーはほぼ使いません。 フルサイズのキーボードをよく見てください。中心は「L]とか「K」が中央ですよね。そうすると、私がフルサイズを使うとすると、手は常にキーボードの左側に寄っていることになり、無駄に姿勢が悪くなります。

テンキーがないキーボードは中央が「H」あたりになり、手が中央に配置されてちょうど良いです。

  • あまり使わないキーは削減されていて需要なキーのみ

 テンキーだけではなくファンクションキーも省略されています。(Fnキーと1キーの同時押しでファンクション1になります)  困る人もいると思いますが、不要な人は不要なキーが無いのは押し間違いが少なくなる点で助かります。

  • 静電容量無接点方式

    ノートパソコンにおおいメンブレン方式に比べて構造的に直接接点に押し付けない本方式は壊れにくいらしいです。  押すと「スコスコ」という音と押した感じがあります。メカニカル式の「カツカツ」とはちょっと違うのですが音が柔らかい感じが好きです。

最後に

プログラマにとってはキーボードは仕事道具であり、最も長く触る文房具です。ならば、多少値がはっても購入してみる価値はあるかと思いますよ。