・コードを書くのが好きなこと。(夢中になれる)
・満たしたい仕様をコードに出来ること。(論理的思考力)
・無駄が無い最適なコードを書けること。(センス)
・専門性があること。(これなら誰にも負けない) #優秀なプログラマーになるには— Tomoyuki@RubyとPUBG練習中 (@tomoyuki65) September 26, 2017
こんにちは。Tomoyuki(@tomoyuki65)です。
Twitterで「#優秀なプログラマーになるには」というのがトレンド入りしていました。
この記事では、このテーマについてエンジニア歴5年の私の考えをまとめます。
目次
プログラマーとは?
プログラマーとは、プログラミング言語を用いてプログラムのソースコードを書き、様々なシステムやソフトウェアを作る仕事です。
よくプログラマーとシステムエンジニアを混同されますが、システムエンジニアはシステムやソフトウェアを作るための設計書を作るのが仕事です。
したがって、プログラマーとシステムエンジニアは役割が異なり、別々の仕事になりますので、混同しないようにしましょう。
日本のIT業界について
プログラマーについて理解を深めるためには、日本のIT企業についても理解を深める必要があります。
日本のIT業界の企業は主に2つに分類され、一つは自分のシステムやソフトウェアを開発する企業、もう一つは他人のシステムやソフトウェアを開発する企業です。
自分のシステムやソフトウェアを開発する企業
前者は主に自社でWebサービスやパッケージなどを開発し、作ったものを売ることで利益を上げる企業です。
作るのは自分のものなので、開発するプログラム言語やツールなどを自由に決めることができるメリットがあります。
ただし、作ったものが売れなければ利益が上がらないデメリットもあります。(自社でWebサービスやパッケージを開発している企業)
他人のシステムやソフトウェアを開発する企業
それに対し後者は顧客の要望により、オーダーメイドのシステムやソフトウェアを開発して利益を上げる企業です。
オーダー通りに作れば確実に利益が上がるメリットがありますが、作るのは他人のものなので、開発するプログラム言語やツールなどの決定権は顧客にあります。
そのため、限られた予算の中で高い品質が求められるなどのデメリットがあります。(SIerを代表される、受託開発や客先常駐でシステム開発をしている企業)
システムインテグレーション(SI)を行う業者のことで、ユーザーの課題解決のために、システムの企画、構築、運用サポートなどの業務を請け負う仕事です。
求められる能力の違い
このように、企業によってビジネスモデルが異なるため、例え同じプログラマーと言っても求められる業務内容が異なります。
そして日本の企業のほとんどは後者です。
基本的に顧客の要望に基づいて作成された設計書通りにプログラミングすれば良く、プログラマーに高い技術は必要ありません。
そのためプログラマーの評価が低い(単価が安く給料が低い)傾向にあります。
つまり、SIerのエンジニアになると、キャリアパスとしてはより単価の高いコンサルタントやシステムエンジニアになることを求められます。
優秀なプログラマーになることを求められないので注意して下さい。
したがって、優秀なプログラマーになりたいなと思っている方は、前者のような自分のものを開発している企業で働くことを強くオススメします。
優秀なプログラマーに必要な能力
プログラマーについての理解を深めた上で、私が考える優秀なプログラマーに必要な能力は以下の3点です。
- 満たしたい仕様をコードに出来ること
- 無駄がない最適なコードを書けること
- 専門性があること
満たしたい仕様をコードに出来ること
プログラマーは実現したいことをプログラミングすることが求められます。
つまり、満たしたい仕様をコードに出来なければなりません。
そのためには、どうのような処理をどういう順序でプログラミングすべきかを考える必要があり、論理的思考力(一貫して筋が通っている考え方)が必要です。
そんな論理的思考力を鍛えるにはいくつかの方法があるようですが、以下の点を参考にすると良いでしょう。
- 筋道を立てるようにする(Aの処理の次にBの処理をし、その後にCの処理をするなど)
- 結論がある場合、その理由を説明できるようにする(「○○である。何故なら△△だから。」など、その結論に至る理由を分析して述べられるようにする)
- 理由を掘り下げていき、その結論に至る理由が複数ないか分析する(仮説と検証を繰り返す)
無駄がない最適なコードを書けること
同じ仕様を満たすコードでも、書き方は一つとは限らず、何通りもパターンがあることが殆どです。
つまり、そんな何通りもあるパターンの中から最も良いコード(無駄がなく、保守しやすいコード)を書けるプログラマーは優秀であると言えます。
最適なコードを書く方法についてはインターネットや本など、探せばある程度学ぶことが出来るので、興味がある方は調べてみて下さい。(私もこれから学びます。)
ただし、そんな何パターンもある中から最も良いコードを結論づけるのは難しいため、やはりこれに関しては『センス』が必要になります。
したがって、最低限の知識(コードの良し悪しの知識を増やす)を身につける努力をすれば良いのではないでしょうか。
専門性があること
誰でも知っていることや出来ることにはあまり価値がないのは言うまでもありません。
したがって、優秀なプログラマーとしては何でも良いので専門性が必要になります。
そんな専門性を身につける方法は一つしかありません。
それは継続して学び続けることです。
ただし、一つの分野で一番になるのは難しい(どんな世界にも上には上がいる)ので、複数の分野を掛け合わせていく工夫が必要になるでしょう。
例えばJavaでWebシステムを開発できる人は沢山いるかもしれませんが、医療系のWebシステム開発が得意と言う人は殆どいないでしょう。
このように、複数の分野を掛け合わせることで、専門性を高めることが出来ることを覚えておきましょう。
最も大切なこと
上記で述べた3点はもちろん大切ですが、やはり最も大切なのはプログラミング言語を用いてコードを書くことが好きなこと。
つまり、プログラミングに夢中になれることです。
これはどんな仕事にも言えることだと思います。
ことわざで”好きこそ物の上手なれ”とあるように、人は好きなことに対して熱心に努力するため上達が早いです。
一つの分野のスペシャリストになるためには1万時間(1日8時間を3年半)必要と言われていますが、好きなことであれば続けることに苦労しませんよね。
まとめ
- プログラマーは、プログラミング言語を用いてプログラムを書く仕事。
- 日本のIT企業は、自分のものを作って売る企業と他人のものを作るサービスを提供する企業の2つに分けられる。
- 働く企業により、プログラマーに求められる業務内容が異なる。
- 優秀なプログラマーを目指したい人は、自分のものを作る企業で働くのが好ましい。
- 優秀なプログラマーに必要な3つの能力は、『満たしたい仕様をコードに出来ること』、『無駄がない最適なコードを書けること』、『専門性があること』。
- 3つの能力を伸ばすために、論理的思考力、コードの良し悪しを判断する最低限の知識、その人にしか出来ない専門性を身につける必要がある。
- そして最も大切なことは、『コードを書くことが好きで、夢中になれること』。
今回は優秀なプログラマーに必要な4つのことをまとめました。
特にこれから優秀なプログラマーを目指したいと思っている方に伝えたいことがあります。
それは、プログラマーやシステムエンジニアの違い、そして日本のIT企業の違いをしっかり理解した上で、働き先を決めることです。
社会人になって長い時間を過ごす環境はとても大切で、働く場所を間違えると優秀なプログラマーへの道が遠くなってしまいます。
また、既に働く場所を間違えてしまった人もいるのではと思います。
そんな人も安心してください。
コードを書くことが好きで夢中になれるなら、今から環境を変えても遅くはありません。
好きなことや得意なことをどんどん伸ばしていきましょう!
Tomoyuki
最新記事 by Tomoyuki (全て見る)
- 【スト6】モダンキャミィの初心者向けコンボまとめ【STREET FIGHTER 6(ストリートファイター6)】 - 2024年11月10日
- モンハンワイルズでおすすめのオプション設定まとめ【Monster Hunter Wilds】 - 2024年11月4日
- モンハンワイルズでおすすめのグラフィック設定まとめ【Monster Hunter Wilds】 - 2024年11月2日
コメントを残す