The Write Less, Think More.

黄昏の猫背の戯言

新社会人ITエンジニアに向けた高速道路を用意したい~Re:プログラミング・ハイウェイ~

しばらく仕事中心で,
自宅でPCを開けてすらいませんでしたが,
そうこうしているうちに社会人歴4年目に突入してしまいました,もう4月です.


ということで,
小生の会社にも明日,新入社員が入社してきます.
以前このブログでも書きましたが,
新卒採用や内定者研修なんかを担当していたため彼らには思い入れも多少あります.
それとは別に,
個人的にIT系の記事がそれなりに溜まってきました.
たかが3年,されど3年,です.


そこで今回は,
小生がITエンジニアとしてやってきたこれまでの拙い経験を踏まえて,
この時期によく見られる
新社会人ITエンジニア向けエントリをあげてみたいと思います.
目指すのは昔話題になった,プログラミング・ハイウェイ,というやつです.
要は先輩図ですね,わかります.


また,
小生の周辺にはさらに加筆修正できそうな人がわんさかいるので,
ツッコミ大歓迎です.


【想定読者】

想定している読者は,以下の通りです.

  • IT業界で働く(働きたい),プログラミング経験などの少ない内定者・新入社員
  • 基本的な文法は理解している情報系の学生

よぉ,俺.
現時点でこのブログを購読されている奇特な素敵な方々にはおそらく当てはまらないかと思いますので,
そこはひとつ,
ソーシャルボタンをクリック,クリック!(露骨)


【コンピュータ基礎を押さえ,学び方を学ぶ】

初心者・初学者にありがちなのが,

「何を勉強してよいのかが分からない」

というものです.
ただそれは,
単にコンピュータって何やねんと,
全体のイメージを持てていないことに起因する場合が多いためではないでしょうか.
なのでそういった時には,
IPAのITパスポート・基本情報技術者試験
にでてくる単語や問題を通して基礎固めを行うことが効果的だったりします.


と同時に,

わからないことをWEBや本で調べる習慣とそのテクニックを身に着けておく

ことが不可欠で,
わかるところまでレベルを下げながらインプット(とアウトプット)を繰り返していくことが大切です.
またIPA情報処理技術者試験の勉強を進める上で大切なのは,
知識を蓄えることを重視し,資格を取るための勉強に走らない
ことです.
逆に情報系出身であれば基本情報技術者程度なら
卒業できる学力があれば当然受かるので,
自身の知識を総動員してフルスコアを狙って欲しいと思います.
参考までに小生の例を上げると,

  • 入社前:ITパスポート,基本情報技術者
  • 入社後:応用情報技術者(2年目秋)

といった具合に勉強・合格してきました.
同期を見ていても,
LPIC,オラクルなど,個人の興味にあわせて進めているように感じます.


またベストセラーとなり今でも本屋に並び続けている,
「コンピュータはなぜ動くのか」
あたりを通読して体系的に理解することもオススメです.
この基礎知識が,初期のラーニングカーブ立ち上がりにカナリ効きます.


【ITエンジニアの必読書~達人プログラマー~】

IT系書籍の中で,
自分のITエンジニアマインドに最も火をつけた本がこの,
「達人プログラマー システム開発の職人から名匠への道」
です.
この本は達人には程遠い小生にも親しみやすく,
それでいてモチベーションをあげてくれる最高の一冊だと思っています.
コーディングテクニックなどはほとんど述べられていないかわりに,

  • あるべきマインドセット
  • やるべきアクション

が明示されているので,
ITエンジニアとして,プロフェッショナルとしてやっていくのであれば
仕事としてプログラミングに携わる,携わらないによらず読むべき本です.
少なくとも,

読んでない奴は職業プログラマーやっちゃダメ

なのではないでしょうか.
もちろん読後,実践するのが達人への第一歩なのは言うまでも有りません.


【文法をひと通り理解したら,テキスト以外のインプットを増やす】

プログラミングについて基本的な文法を理解した後にやることは
端的にいうと以下の2点だと思います.

  • コーディング規約の把握
  • コードリーディング

一般的なコーディング規約を知っておくことはもちろん,
他人の(特に出来る人の)コードを読むと間違いなく一皮剥けるのではないでしょうか.


前者については,
ISIDがJava向けにコーディング規約を出していますし,
アサインされた開発案件によっては,
チーム内やライブラリ内でのコーディング規約やフォーマットが存在することもあるので,
もちろんその都度確認する必要があります.

後者についてエレガントなコードを書きたい,ということであれば導入編として,

  • 「良いコードを書く技術-読みやすく保守しやすいプログラミング作法」
  • 「コーディングの掟」

あたりが読みやすく,いいのではないでしょうか.
更に言えばコアAPIの実装に目を通すとかGitHubで適当にForkするとか,
その気になればいくらでもお手本は転がっているはずですが,
こちらの記事が詳しすぎるので一度目を通すとよいでしょう.
一歩先行くJavaプログラマが読むべきオープンソースソフトウェア10選

ただこれは正直自分もできていないので,どちらかというと自戒の意味を込めています.
Javaプログラミング,オブジェクト指向については,
また別の機会に書きたいと思います.


【食わず嫌いせず,引き出しを増やす】

特に新人の頃は,
与えられるタスクによって得られる知識・経験が異なる
「受け身型キャッチアップ」
になりがちで,
3年もたてばそれが成果として表れ,
下手をすれば同期同士での会話が咬み合わないことが散見されます.
とはいえ若手のうちは知らない事が前提で
知っていることなんてまぁ期待されていません.


なので,

できるためにはどうするか,行き詰まった時にどう解決するか

に焦点を当てる必要があります.
具体的にはクソ忙しい有識者をうまく捕まえるだとか,
上席にエスカレーションする(当然,ただ「わかりません」では報連相でない)ことでタスクを遂行していくことがポイントかと思います.
正直,
こういうことを意識せずにただがむしゃらに頑張る若手は,
空回り感が激しく写ります.
挙句,憔悴しきって,,,orz


閑話休題.


特に
自分の知らないツールや技術を使う必要があるタスクに積極的に取り組むことで,
キャッチアップしながら相応の質を伴うアウトプットまで実現することができます.
これは,
努力と自己満足で終わりがちな単なる勉強とは完全に一線を画します.
自分の引き出しを増やし色々なことをやっていく中で,
自身のやりたいこと,興味のあることを見極めていくこともひとつのやりかたではないでしょうか.


【Don't repeat yourselfの勘所】

これは達人プログラマーにも出てくる一節ですが,
元々の意味は各自で確認してもらうとして小生からは,

この業界に身を置く者として,もっとITを信じてみよう

と提言したいと思います.
例えば
こんなことできないかなぁとか,いつも同じ作業やってんなぁとか感じた時,

でちょっと解決策を模索してみるだけでも,
毎日(毎週・毎月)30分かけて行う作業を以後1分で(ボタンひとつでコーヒー飲む間に)終わらせられたり,
自動化され,ミスがなくなったりといったことが普通にあります.
仮に業務に直結した部分でその効果が認められ
速さ,確実さが上がって汎用化されたものになれば,
(自分は高い生産性を保持しているのだから)お給料上げてくれ,っていう交渉もしやすいわけですね.
端的に言えば,
マクロ(含むVBA)使える事務員さんはマジ無敵,なわけです.


ツールの利用で言えば
コマンドプロンプトunixのコマンド(特にfind,grepsedawk)に加え
winMerge,DFなんかを使いこなせるようになると,
ファイル操作,エラーログの検証,モジュール間差異の比較は困らなくなるし,
PL/SQLでテストデータ投入ツール作るだとか,
エクセルVBAでデータ解析ツールを作るだとかすれば,
属人性を少なくしたアウトプットはスグそこです.


当然,
何ができるかもどうすればいいのかもわからないところからのスタートなわけですが,
サンプルを見て試しながらやってみると,
意外とモノになります.


【おわりに】

ネタはもう少しありそうで(特にここ数年で話題になったエントリなど),整理も必要なので,
ざっくり第一弾としてはこんな具合でしょうか.
当然このエントリを熟読しても,

エンジニアデビューオーケー!いい感じ!ローラもハッピー!!!

とはナリマセン
大切なのはNAVERまとめを読むことではなく,一つでも実行することです.


ということで続き(け)ます.