2015/07/31 このエントリーをはてなブックマークに追加 はてなブックマーク - ぼくがJavaとプロジェクト開発をどうやって学んだか

ぼくがJavaとプロジェクト開発をどうやって学んだか









たまたま、
「最近CとJavaを勉強しています。オブジェクト指向難しいです」
という学生さんと話す機会があった。


もっと学びたいし、身に付ける方法が知りたい。
現場の感覚を早く身に着けたいって感じのことを言ってた。


んで、その熱意が結構いいなぁと思ったので、
一体自分はどうやってプログラミングとかこの仕事に対するレベルアップを図ってきたか
考えてみよう。ということでブログを書く次第です。






前提として、僕は社会人になるまでプログラミングも知らない
ただの文系大学生だった。

本格的にプログラミングを始めたのは会社に入ってから。
多分23歳とかそこらへんから。


Javaだけ学んだ。基本的な文法、バッチ作成、CSV出力、
Webアプリケーション改修などといった課題をこなした。

Javaの入門書一冊を写経しつつ、会社の用意した課題をクリアしていくといったかたち。
まぁどこの会社でもよくあるであろう。



ただ、個人的な経験として
この時の学習効率の良かったと思うポイントとしては、
周りがプログラミング経験者ばかりであったことで割りとレベルが高かった。
彼らは今でも優秀だと思うけど、やっぱ同じ学ぶ環境の人のレベルってのは重要。

あと、基本的に教えてもらうことはほとんどなくて自力で解決することが多かったので、
ググり力はここで上がった。仕事を始めてからもやっぱググり力は大事。
現場の人の言ってることより信ぴょう性は高かったりする。(どちらも出典が大事だが)


もっというと、本読むことで一番信頼できる情報源にたどり着くのだけども。
その発想はこの当時なかった。


もうひとつ、個人的な動機付けとしては危機感があった。
1社目でブラック企業にあたり、退職。単身上京するという背水の陣だったので。
全てを捨てて挑む気持ちがあった。今はちょっと薄れちゃってるかなぁ。





これも個人的には大きかったのだけど、その当時社内で勢いのあった
「社内Androidアプリ開発」。

Javaを学び始めた当初から、Androidのアプリは作りたいなーと思ってたが、
多分自分一人だと怠けちゃって作らないだろうという自信があった。
チームで作業すれば否が応でも手は動かすだろうなと思って開発に参加。


はじめは「分からなすぎわろたw…わろた…」が1ヶ月ぐらい続いた。
Eclipseすら使いこなせないし、ボタン押しても動かないし、xmlでレイアウト作っても読み込めないし。
点と点がつながらない。線にならないという感じだった。


この時に意味もわからずinterfaceを使うことで
使ってるうちになんとなく仕組みがわかった。
溺れてるうちに泳ぎ方覚えた感じだった。


当時書いたソースコードを1年後に見たら誰だこのクソコード書いたのは…と思ったけど。



ここで得たのは、プロジェクトでアプリケーションを開発する、という感覚と
SwingやAndroidみたいなアプリケーションのなんとなくのパターン。

UIがクラスになって、インターフェースが発火装置になるみたいなイメージ。
非同期通信の概念とかも覚えるのに役立った。




研修が終わって仕事に出た。
なんだかんだ言っても、現場感覚というのは現場でないとつかめないかなぁという感じ。

ガイド、設計書、方針書。色んなドキュメントがあった。
へぇー、プロジェクト構成こうなんだー。とか
これは研修でも使ったやつだなぁとか手探りな感じ。

ヘマもいっぱいやったと思うけど、なんとなくの周囲の雰囲気で
アンチパターンは覚えていった。


例えばSVNのリポジトリは消しちゃダメとか、.svnごとコピーして別のプロジェクトコミットしたら
大変なことになるとか。


他方、この時に今でも心の師匠としている人との出会いがあり、
学ぶことがめちゃくちゃあった。
だいたいこんな感じ。

・仕事は早く終わらせて定時で帰る
・進捗ペースを急かさない。見守る
・具体的な実装は示さないが、イメージ・アイデアは提供する(選択の余地をくれる)
・基本的に楽しそうで雰囲気を和らげてくれる
・ユーザーは何が嬉しいか、こうしたいんじゃない?という視点を持ってる



あと、実装がめっちゃおしゃれだった。
一番初めの現場であの人に色々仕込まれたのは大きい。
僕のJava技術者のスタートとしてかなりのアドバンテージになってると思う。






まじアンビリーバボー。
例のごとく、以前書いたブログ記事を引用。
泥沼プロジェクト振り返り


当時学んだこととしては
・プロジェクトはリーダーとかPMとかが上手いこと進めてくれるものではない
・最低限、自分の高稼働リスクは自分自身で割けなければならない
・プロジェクトを推進するのはメンバーひとりひとりであり、それが自分である


みたいなこと。
これも自分の中で反省材料となって今に生きている。
(技術とはあんまり関係ないな。どっちかというとソフトウェア工学的な)。






逆に、めっちゃ暇すぎて死にそうな時期もあった。
仕事中に暇つぶしする毎日。

Javaのパッケージの中身をめっちゃ見たりとか
jdkって何が入ってるんだろう?とか
Strutsのソースってどんな感じで書いてあんの?

とかそんなことをしながら暇をつぶしていた。
んで、この頃ブログを始めた。


以前よりちょっとJavaと仲良く慣れた感じの時期。







丁度1年ぐらい前。


一気に視野が広がったし、Javaのコミュニティ内での交流も自然と増えた。

すごい、井の中の蛙だったなぁと思う。

勉強会やカンファレンスなどに参加して

・モチベーションの向上
・同じ方向を向く技術者の認識共有
・自分の技術レベルの立ち位置の確認
・新しい技術、既存の技術の新発見
・アンチパターンの再認識
・Java技術者のコミュニティ文化を知る

などが出来た。


これらも今に生きていて
自分の中の軸になっている。


あと、多言語を学ぶきっかけ(もしくは学びたい)というきっかけになってる。





この記事でうだうだと書いてことを(統計屋に見せたら怒られるような雑な)グラフ化してみた。




研修期間は基礎をしっかりと学べるので学習効率は高い。身につく。
Android開発はJavaの基礎覚えたての自分には始めが辛かった。
どこかでコツを掴んでグンと学習効率が上がった。(最近のAndroid全然分からんけど。)
現場デビューしてからしばらくは学ぶことが多かったが、しばらくすると停滞。
勉強会デビューして刺激を受けて
学習意欲が湧いて最近それがやっとoutputとして出せるように
なったかなぁという感じ。


こうやって考えると、停滞と上昇を繰り返すものなんじゃないかなぁという
雑な考察になる。






自分の体験を振り返って、学びはじめの人に伝えるとすると
壁にぶち当たることが成長の目印というか。突き抜ける目前まで来てるのだと思う。


あとは、周りの環境とか人は大事。悪い環境でも活かそうとする姿勢も大事と思う。


という、ブログ記事を書いてると自分へのブーメランでしか無いなぁ笑


全然習熟してないです、ぼく!!



0 件のコメント:

コメントを投稿