新入社員に求める技術の水準[3]
こんにちは、大阪アプリ開発 システム開発部の外川です。
新入社員に求める技術の水準
就活中の学生と話す機会がありまして、こんなことを聞かれました。
「技術系の会社の入社までに、どれくらいの技術を身につけておけば良いのでしょうか」
前回は、専門的な技術は、その現場に沿って身に付きます。入社前であるなら「技術屋としての最低限」と「人間力」と呼ぶべき力を伸ばすことが良いのではないかと回答しました。
今回は、技術屋の本懐であるプログラムに特化して話をしてみたいと思います。
—-
・C言語
すべてのプログラマが理解しておくべきプログラム言語です。
高級言語の一端ではありますが、低級言語とのつなぎの位置に存在している貴重な存在です。一世を風靡しているC#やJava等の高級言語が、アセンブラや機械語等低級言語とどう関係しているのかを理解することに大きく貢献すると私は考えています。
入社前に知っておくべき事項として、「ソラ」でC言語によるプログラムを書ける程度の理解力。プログラム言語の入門である「Hello World」を出力してみる。ソラで書けるでしょうか?
次に基本構文。for文、if文、switch文、while文、構造体、配列、論理演算子(|や&、!)、これらを使ったプログラムが「ソラ」で書けるでしょうか?
次にわからない文法を残さず学習する意欲。先述の「Hello World」で使用した「#include <stdio.h>」の「<>」と「””」の違いを説明できますでしょうか?私が入社試験を作るなら、複雑な論述よりはこれをテストに出します。商業ベースのモノを作っているのに、開発者自身がわからないものを使っているなど言語道断なのです。
・ポインタ
すべてのプログラマが理解しておくべきプログラム概念です。
ポインタはメモリ操作の概念です。メモリは主記憶装置と呼ばれるものです。制御装置=CPUはメモリの何を読み取って「演算」をしているのか回答できますでしょうか。データはもとより命令文も格納されている概念が浮かび上がれば上出来かと思います。レコードの針のようなものをプログラムで操作し、メモリ内の命令文やデータを読み取ることをポインタによるメモリ操作といいます。
とある分野で大人気のNullPointerExceptionは、皇居にバイクで乗り付け「ようと」したので逮捕されましたということですね。わかる人はうなずいておいてください。
噛み砕くと、配列の仕組み、構造体やクラスのメモリ構造、関数ポインタあたりがメモリ上にどのように格納されているのか理解できていると良いかと思います。
・第二プログラム言語
C言語に加えて、もう一つ別のプログラム言語が良いと考えます。
1から1を足すよりは、2から1を足すことは難しくないからです。時代の流れに取り残されにくくなります。そう考えると、0から1を足すことができた皆様はそう難しくないのではとも思います。
—-
printfなどプログラム言語固有の関数は、使用しているうちに慣れますが、概念の習得は相応の理解力が必要になります。ドッグイヤーなこの業界、新しい概念は尽きることがありません。
※関西(大阪・京都・兵庫・滋賀・和歌山・奈良)でアプリ制作をご要望の方は大阪アプリ開発へ