戻る

同僚に求めるプログラミング力 (2023/07/02)

残念ながら、私は大したプログラマではない。PC向けソフトウェア (アプリケーション) は年齢相応に開発できる方だとは思うけど、本当によく勉強しているようなプログラマのような(例えば karino2氏omo氏 のような)、本物のソフトウェア開発者のような高度な知識は持っていない。

なので、同僚に求める技術力は、結構甘いと思う。それでも、その低レベルな私でも、「最低限これだけは抑えておいて欲しい」という項目がある事に、最近気づいた。ここでは、私が主に専門としているPCソフト向けの、 C++ によるツール開発に関する要求を挙げてみよう。

class は理解しておいて欲しい

関連するデータと処理をまとめて、隠蔽して、扱いやすくする class を、class を作る意味を、理解しておいて欲しい。クラス名、プロパティ名、メソッド名に正しく名前をつけて、無駄なプロパティを持たせたりしないで欲しい。コンストラクタとデストラクタの挙動は、手を動かして実感を伴って身につけて欲しい(私も結構怪しいけど…)。

ポインタは理解しておいて欲しい

ポインタを理解せずに、現代のCPUの動作を理解する事はできない。逆に言えば、CPUの動作が理解できるなら、ポインタを理解するのは容易だろう。

基本的なアルゴリズムは理解しておいて欲しい

リスト、ハッシュ、ソート……本当に頻繁に使うこれら3つの考え方は、それなりに理解しておいて欲しい。

計算コストは把握しておいて欲しい

自分が書いた一行一行が、大体どれくらいのCPUコストが掛かるか、何となくイメージ出来るようになっておいて欲しい。インクリメント、除算、乗算、関数呼び出し、オブジェクトの生成、ループ(二重ループ、三重ループ)、スレッドの生成、ディスクの読み書きなどが、どれくらいの計算コストになっているか。そしてどんなアセンブリに変換されるのか、イメージできるようにあって欲しい。

ヒープとスタックを常に意識して欲しい

定義した変数やオブジェクトが、どのメモリ領域に確保されているのか、常に把握しておいて欲しい。この辺りの理解が曖昧だと、スタックオーバーフローに悩まされる。

美しいソースコードを書いて欲しい

コードの乱れは心の乱れ、ソースコードにはプログラマの美的センスや美意識が反映される。ソースコード(の俺々コーディング規約)に一貫性がないというだけで、正直、技術力やセンスを疑ってしまう。例えプライベートなプロジェクトのコードであっても、突然、誰かに見せる事になるかもしれない。そんな事になっても自信を持って見せられる、美しいコードを書こう。

インデント (私は2スペース推奨)、コメント (//の後にスペースを入れるとか)、if や for の書き方の一貫性、変数名やクラス名の付け方 (これが難しい) など、自分の中で「最高に美しい記法」を考え抜き、それを厳守しよう。

専門性を持って欲しい

難しい課題に取り組んだプログラマと、そうでないプログラマ。どちらが成長するか言うまでもない。自分が楽しく深掘りできる分野を見つけ、専門性を高めよう。グラフィックス、OS、コンパイラ、データベース、ネットワーク、圧縮、並列化、最適化、HPC……何でも良いので、自分に合った興味を持てる分野に詳しくあって欲しい。

根気強く取り組む力をつけて欲しい

相当に優秀な人間でもない限り(恐らく99%の人間は)、手を動かさずにプログラミングの道を極めるのは難しい。毎日5~8時間、週5~6日、これを1年間、続けるところから始めよう。