中級プログラマを目指す

底辺学生プログラマが中級プログラマを目指し、学んだことや思ったことを書き連ねるブログ。まさかり大歓迎。

目指すべき中級プログラマとはなんのなのか?

どうも、るじゃんどるです。

昔から趣味のプログラミングをやっていたんですが、 最近になって本格的にプログラマになりたいと思ったので それに必要な勉強をしようと思います。

お前が目指すプログラマのジャンルは何なの?

コード書いてるだけで幸せを感じるのでなんでも良いといえばなんでも。 知識はフルスタックレベルを目指す。

現在のスペックは?

一言で言えばクソ雑魚。

使用可能なプログラミング言語

C99 : H8, AVRのプログラムに使用。2足歩行ロボットや時計などの電子工作に主に使っていた。
C++99 : 簡単な3Dの格闘ゲームRPGを作成。もはや昔のこと過ぎて半ば忘れかけている。
Python3 : クローリング、スクレイピング機械学習数値計算など。最近はもっぱらこれを使っている。
Swift3.0 : 小説家になろうのアプリを作成するも、お金がなく公開できず。

ちなみにC,C++が99なのは学んだとき*1にそれが主流だったせい。

知識

応用情報程度の知識。

目標とすべき知識、技術レベルはどこなのか?

中級プログラマと言ってもその幅は広いので、個人的な中級プログラマの知識、技術レベルを列挙してみる。

  • 複数の言語を扱える。
  • 使用している言語の仕様を理解している*2
  • 使用している言語がどのように処理されているか理解している。
  • クソコードを書かない。
  • テストが書ける。
  • リファクタリングができる。
  • バージョン管理システムが扱える。
  • データベースについて理解している。(SQL, NoSQLのどちらについても)
  • オブジェクト指向でプログラミングできる。
  • アセンブラが読める。
  • 計算機の構造を理解している。
  • データ構造とアルゴリズムについて理解している。
  • ネットワークについて理解している。
  • サーバについて理解している。
  • 使用している言語のコンパイラを実装できる。
  • OSを作成できる。
  • アプリケーション・アーキテクチャに精通している。
  • 関数型言語を扱える。
  • デザインパターンに精通している。
  • チームで開発できる。
  • 使用している言語の有名なライブラリやフレームワークを扱える。
  • デバッグができる。
  • ドキュメントが書ける。
  • コミュニケーション能力がある。
  • 英語ができる。

目指せ!中級プログラマ

ということで上の知識と技術がつくまで勉強します。
勉強した内容の解説をこのブログに載せる予定。
目下Haskellの勉強中なので、それで簡単なWebAPIでも作るか……
終わったらC/C++99を14にアップデートしなきゃ。

上の中級プログラマのできなきゃいけないことに異議申し立てがあればコメントで教えてください。

*1:10年前のことである。当時小学生だった自分にお高いプログラミングの本を買うお金があるはずもなく、近くの図書館に借りに行くしかなかった。

*2:ダジャレではない