見出し画像

【キャリア】プログラマーの歩き方

趣味ではなくキャリアとしてのプログラマーを目指す方、現在プログラマーになりたての人へ届けたい!

職業プログラマーの皆さんは、日々、技術動向をチェックし、コーディングやテスト・調査に切磋琢磨で取り組んでいると思います。noteをはじめ、雑誌やメディアを見ればスキルアップを追い立てるような情報に溢れています。

僕は、自分自身の経験から、ありふれたことではなく、経験者だからこ言える、実際の現場でキャリアとして本当に大切なことを伝えたい。

1.まずは1つのプログラム言語を極めよう

近年の人気プログラム言語はこれ!市場価値の高いプログラム言語はこれ!といった情報に目移りすることなく、まずはじっくりと1つのプログラム言語を極めることです。これには仕事を通じて1年ほどはかかります。

職業としてのプログラマーが使うプログラム言語は、極端なことを言うと全て同じです。「方言」なだけで、本質は同じということです。人間の言葉である「日本語」と「英語」ほどの差はありません。

例えば、ほとんどのプログラム言語では分岐で使う「if」はほとんど「if」です。「else」の書き方が多少違うとか細かい違いはありますが、形は同じです。それにアルファベットで書かれているので、義務教育修了程度の英語知識があればプログラム言語が変わっても、なんとなくわかります。

大切なのは、プログラムで「できること」と「できないこと」を学ぶことです。次に「実現難易度」やそのプログラム言語の「特徴」を客観的に評価する。

僕の場合は2001年、Javaを極めるべく、とことんやりました。当時はまだネットが普及し始めた頃で、Javaのバージョンも1.2とかでした。情報源も書籍やJavaDoc、英語で書かれたマニュアルが中心。当時は今と比べ物にならないくらい、とても効率が悪かったです。
当時はJavaの関数のソースコードも見れましたので、どういう動きをしているのか、とか、

str.equals("")
"".equals(str)

上記の書き方は何が違うのか、運用ではどういう違いが出るのか?などいろいろと試して学びました。

また、当時のJavaのWebアプリケーションサーバと言えばTomcat。ほとんどの商用アプリケーションサーバもTomcatを土台としたものです。Tomcatはオープンソースなので、プログラマーとしてのトレーニングのために世界中の人が書いたTomcatのソースコードを読んだり、変更してコンパイルしてみたり、Tomcatメーリングリストに参加して最新ビルドを追っかけたり、Servletの最新バージョンの仕様を試したりと、いろんなことを試しました。

現在では「フルスタックエンジニア」と呼ばれていますが、当時のエンジニアはフルスタックが標準でした。なにせ、開発環境作るにも、サーバーマシンを部品から組み立てて、Linux入れて(しかも雑誌の付録とかから)、ドライバのコンパイル、ネットワークの設定、サーバーソフトウェア(APサーバ、DBサーバ)のコンパイル、インターネット関連サーバ(DNS、Mail、Webなど)の設定、セキュリティ設定も全て自分でやる必要があったのです。

フルスタックの話は余談ですが、このくらいやれば、この言語でこれをするときは、どのように記述するのか?を都度調べれば良いだけです。(なんならAIに聞いてもOK)
今時、調べればサンプルコードが山のように出てきますし、学校のテストではないのでカンニングし放題、覚える必要すらありません。

実際に、当時はJavaの次は世に出て間もないMicrosoftの .NETを手掛けたわけですが、上記の通り、全く苦労しませんでした。.NETもC#やVB.NETなどやりましたが同じです。その後、Perl、Ruby、PHPなどもやりましたが同じです。
現在でもたまに筋トレとしてPythonを書いたりしますが、体で覚えたことは忘れません笑。

ただ、この取り組みは、AIのあるこの時代でも、ご自身でやってみることをお勧めします。プログラム言語の本質を学ぶことで、エンジニアとしての「土台」をしっかりと固めることができるからです。

プログラムに限ったことではありませんが、今存在しているIT技術は、20年前にすでに存在していました。IT用語もそうですが、すでにあったものを焼き直したか、組み合わせただけです。そこに気が付けば、いくら「新しそうなもの」が出て来ても、キャッチアップは容易です。

2.手間のかからない方法を意識しよう

まずはゆっくり正確に、そしてより早く。さらに手間がかからないように。
プログラムは最終的に何らかのことに使われるわけですが、使われ出した後のことを考えて作るべきです。そうしないと、自分の知らないところで知らない人に迷惑をかけることになります。
「学術的に美しいか」は本人の単なる自己満足であり、実社会で評価されるのは、「メンテナンスしやすいか」です。初回、自分が作ったとしても、それをメンテしていくのは別の人であることが多いからです。
メンテに時間がかかると、工数がかかる=コストです。

3.そのプログラムの意味を考えよう

プログラマーの多くは、SEが設計した設計書を元に、指示されたプログラムを作るわけですが、そのプログラムは何なのか?を深く聞くことです。
そうしないと、キャリアの終着点が「プログラマー」になってしまいます。

プログラムを書き、設計書を読み慣れてきたら、設計書の改善や仕様の提案もできるようになるはず。そのためにはそもそも、このプログラムは何のために使われるのか?を考えられないと、適格かつ、より良い提案はできません。

プログラマーの次はSEを目指そうという場合は意味をよく考え、SEとよくコミュニケーションを取ることです。

4.キャリアを意識しよう

プログラマーで年収1000万!と言う人も中にはいるでしょう。しかし、個人的には一生、プログラマーで食っていく、というのはおすすめしません。

理由は、20代の頃は頭も回る、体力もある、世界中のプログラマーと競争できるだけの体があるから可能です。しかし、30代に入ると、経験だけではカバーできません。自分の人生をどうデザインするかですが、好きな人と結婚したり、子育てをしたり、趣味や推し活など、自分以外のことに時間を使う機会も増える中で、プログラマーに全振りというわけにはいかなくなるからです。自分の年齢やステージと共に、持続可能な仕事量や収入であることが求められます。

開発の現場が好き又は向いていると思う人はシステムエンジニアにステップアップするもよし、インフラ側に興味が出てに転身するのもよし、セキュリティに興味があって専門家になるもよし、プログラマーの人材紹介をやるもよし。

いろんな次のキャリア可能性に満ちています。大切なのは、「次どうするのか?」を常に考えておくことです。

おわりに

自分自身振り返って、プログラマーやシステムエンジニアをやってみて良かったと思うことは、「ロジカルシンキング」が身に着いたことです。コンピューターのプログラムはロジックそのもの。ちょっとの曖昧さも許してくれません笑。ロジックが破綻していると、コンパイルエラーか実行時エラーですね笑。

これを実生活に応用すると、あらゆる可能性、先読みをするクセがついたことです。

なので、生活の中で、異常なことが起こってもそう簡単に動じなくなりました。常に冷静に状況を分析し、適格と思う行動をすることが自然にできるようになりました。

このままだとまだ引き出しの数が少ないので手数を広げるためには他の経験も必要なわけですが、自分の根っこに根差している大切な経験だったと思います。

これからプログラマーを目指す、又は駆け出しプログラマーの方は是非参考にしてみてください。


いいなと思ったら応援しよう!

Life & Work Arts よろしければ応援お願いします! いただいたチップはクリエイターとしての活動費に使わせていただきます!