メンバーからはそこそこ質問されるレベルのエンジニアがやってる100の勉強法

学生時代、成績は最悪で、最初の職場も業務系アプリのSEでプログラムなんか
VBとかOraclewindowsサーバで動かすPGを書くぐらいで、
PGよりもお客さんとの打ち合わせとか設計ばかりしてた私が、
そこそこ技術力身に着けるまでにやった勉強法を100個出してみる。
学生時代、新人の頃、そして今の職場に入ってからをそれぞれ混ぜるからちょっと大変かも。

  1. とりあえず読むつもりで本を買う。
  2. 買った本を読む
  3. 途中で飽きたらパラパラと一通り目を通しておく
  4. 読む本は、あまり限定しない。勉強しないといけない事、それ以外、両方買う。
  5. 自己啓発系っぽい本も買ってやる気出す。
  6. 娯楽小説を読んだらテンション上げてやる気出す。
  7. CマガジンとかBASICマガジン、日経ソフトウェアなどのプログラム雑誌を買う。
  8. Linuxマガジンとか日経LinuxなどのOS系の雑誌も買う。
  9. 雑誌を買う基準は「面白い特集があるか」
  10. 連載は、間隔があくのでまとめてある本から情報を得る。
  11. 高い本は躊躇するので、安い本をいっぱい買う。
  12. 評価が高い本を買ってもわからない事があるけど、わからなければ放置で。
  13. 基本的に興味ないと読まないので、興味がわいた事を読むのを重視する。
  14. Blogとかで勉強する。
  15. 会社においてあるほかの人の本棚は物色させて貰って借りようとしてみる。
  16. 変わりにどんどん自分の本も人に貸す。
  17. 最初に勉強する時は何か本を1冊は買う。
  18. わからない事をわかる人に聞いてみる。
  19. わかる事をわからない人に教えてみる。
  20. わからない人に教えている人を眺めてみる。
  21. 迷ってる人には、迷ってる所を聞いてみる。
  22. トラぶってる人にはトラブルの内容を聞いて解決策を一緒に探してみる。(実は、トラブルを手伝うのは、自分にとって凄くメリットがあるけど、相手にとっては成長の機会を奪われる>のでひどい事)
  23. オープンソースソースコードを読む。
  24. 社内のソースコードを読む。
  25. 他の人の勉強方法を聞いてみる。
  26. で、自分にも取り入れる
  27. 他の人の作業は粘着質に見てみる。
  28. 他人の作業やコーディング中に「何か変なことやってる」と思ったら、自分の知らないショートカットとか知ってるかもしれないので、聞いてみる。
  29. 自分の使うショートカットキーを説明するともっと良いやり方を教えてもらえるかもしれないので説明する。
  30. 自分の知ってる良いやり方を他の人に説明しておくともっと良いやり方を調べてくれるかもしれないから説明する。
  31. 周りの凄い人と雑談してわからない単語は聞いてみる。
  32. マニアックな技術ネタジョークを交えて会話する。(HTTP = Hiroshi text Transefer Protcolとか)
  33. 他人より自分が優れてると思って、自分がやらなきゃと思って頑張る
  34. 他人より自分が劣ってると思って、せめてこのぐらいやれるようにならなきゃと思って頑張る
  35. 自分より若い人に凄い人が居ると聞いて凹んで頑張る。
  36. 小説とかでかっこいいプログラマとか読んで「ああなりたい」と思って頑張る
  37. 「負けず嫌い」になっておく
  38. 「僕は、あの人に勝ちたい」と思い込む。
  39. 「リリカルな魔法少女」もきっと魔術式はプログラムなんだと妄想する
  40. たまに凹む時は凹む
  41. だらけてる時に「俺はこのままじゃだめだなあ。」と思うけど「でもまあいいや」と開き直る
  42. でもたまに「俺なんか死ねばいいのに」とか過激に凹む
  43. 「死ぬぐらいなら頑張るぜ!」ってやっぱ頑張る
  44. 俺が頑張るのはなぜかって考える。で、頑張る
  45. アレなゲームをやってモチベーションを上げる。
  46. 実際にプログラム組んでみる。
  47. 汚いソースコードほど、なんでこんな処理にしたのか気にする。(プログラマが○○の構文を知らなかったのか??とか)
  48. バグを聞いて、どこでどんなバグがあるか妄想する。
  49. プログラムを作った人に「どうやって作ったのか」「どのぐらいで作ったのか」を聞いて自分でもやれるか、やれないか、やれない理由は何かを考えてみる。
  50. ソフトウェアの概念を勉強する。(メタプログラミングとかハフマン符号化とか)
  51. ハードウェアの概念を勉強する。(論理回路、NAND回路の電気回路、CPUの作り方、FF回路の構造)
  52. 自分はウェブだから、ネットワーク、CPU、OSという下流の分野は「関係ある」と考えておく。(無いと動かないので)
  53. DBチューニングなどの早くする為の方法を勉強する。
  54. ソフトウェアを探して勉強する。
  55. ループ系のロジックとか適当に弄って変更して重くする。
  56. 逆に早くする。
  57. メモリ、CPU、IOの負荷監視しながらPG動かしてみる。
  58. 資格を取る勉強をする
  59. たまに基礎を再度固める。
  60. プログラミングコードを短くするcode golfとかも挑戦してみる。
  61. こーいう奴でわからない単語があればメモっておいて後で調べる。
  62. ある程度自分の知識に自信がつけば、あえてわからない言葉はお客さんに聞く。
  63. コンパイルを行う系の言語をひとつ覚えておく
  64. ワンライナーで自分の作業を効率化する。
  65. いろんなワンライナーを勉強する。
  66. 人のノウハウは理解して使う。
  67. でも、理解できない時は先に使ってみるのもあり。
  68. 机上デバッグをやる
  69. 机上コーディングをやる
  70. 休日でもプログラミングする
  71. プログラミングを楽しむ
  72. はてブとかで最近の話題はつかんでおく
  73. 話題になってない面白い奴も情報掴んでおくと良い話題になる。
  74. なんか自分でソフト作っておくと話題になる
  75. 自分のソフトを「これです」って言えるようになりたい。
  76. ブログを作る。
  77. ブクマでコメントなんかつける。
  78. 勉強会に出る。
  79. 社内で勉強会を開いてみる。
  80. 社内での勉強会で講師してみる。
  81. 勉強会にて講師側とかやってみる。
  82. 最初超カミカミ
  83. 徐々に慣れていく
  84. イベントにも出てみる。
  85. カンファレンスにでも出てみる。
  86. 飲み会に参加する。
  87. イベントに顔を出す。
  88. みんなで遊ぶ
  89. で、面白い人と知り合いになる。
  90. 面白い人から刺激を受ける。
  91. 面白い人からいろいろ教えて貰う。
  92. 面白い人から面白い人を紹介して貰う。
  93. 逆に自分の知ってる人を他の人に紹介してみる。
  94. コンピュータがわからない老人に自分が何をやってるか伝える
  95. 新人に教える時に「メモリの仕組みをまず理解してからだ」とか時間がかかって仕方ないのでいわない。
  96. Webサイトで情報を集めて勉強する。
  97. 年上の人の過去の話を聞く。
  98. 人の話の本質を考えて聞く。
  99. このエントリで何の目的でこれをやってるのか考える。
  100. このエントリを見て「とにかくいろいろやってみろって事なんだな」と読み取る。