見出し画像

ソフトウェアエンジニアの面白さを振り返ってみる

最近だと、ソフトウェアエンジニアに興味がある人、よく見かけますね。

年収イッセンマンを狙える!
フルリモートでフリーランスで働ける!
激務でブラックだ!

といった多種多様なつぶやきがネット上に流れています。

私はソフトウェアエンジニア歴6年目くらいですが、ちょっと振り返ってみて実際ソフトウェアエンジニアってなにが面白いんだっけ?
というのを書いていこうと思います。

ソフトウェアエンジニアに興味がある方、ソフトウェアエンジニアの気持ちが知りたい方などに読んでいただければ嬉しいです。

ソフトウェアエンジニアの面白さ

国語力が上がる

「プログラミング」って、テクニックがすごそう。って特別視されがちです。

でもプログラミングとはドキュメントに文章を書いていくので、一般的な資料作成とほぼほぼ同じです。なので

ドキュメント作成がうまい人、下手な人
読みやすいドキュメント、読みにくいドキュメント
というのはあります。

プログラミング始めたてでイキってる人の
「俺の完璧なロジックと、トリッキーなテクニック見てくれや!」

みたいなドキュメントはめちゃくちゃ読みにくいです。シンプルなロジックでわかりやすいコードを書いてくれる人がやっぱり好きです。結局、文章構成、文法、単語みたいなところの話になってくるので、国語力がメインだと私は思います。

そしてソフトウェアエンジニアは、ソースコードやネット上の記事を読んだり調査するのが仕事の大半です。読み7割、書き3割くらいです。
読解力が大事です。

また0からなにかのソフトウェアを作り上げるプロジェクトは稀です。
大体はなにかしらのプロジェクトに途中から参加して、そのコードを改善していきます。

プロジェクトでこれまで書かれてきたコードの文脈を読み取って、続きとなる文章を書いていく。というのに近いでしょう。

個人的に思うのは、言語化能力や国語力が高いひとの書くプログラムは読みやすい印象があります。プログラミングって文系学問やんって感じしてます。文系のひと、ぜひ来てください笑

英語力が上がる

最新技術や技術の中心となるアルゴリズムなどを調査するタスクをやることがあります。ネット上でググって調査するのですが、日本語の記事やドキュメントがあまりないことが多いです。

日本語検索でヒットしない場合は、英語で調べると良い記事が見つかることがあります。またツールやライブラリを開発している会社の公式ドキュメントは、英語だったりするので英語力が必要ですね。

また最近だと海外からのエンジニアと協業したり、外資系に働くなどの可能性もある職業なので、コミュニケーションしていく中で英語力が求められたりします。

あとプログラミングで作る関数や変数の名付けは基本英語なので、英語力がある方が適切な名付けができますね。

プログラミングしてていつも思うことですが、
なにかに名前をつけるのは難しい。
赤ちゃんにどんな名前を付けてあげようかというレベルで難しい。笑

調査力が上がる

新米エンジニアと熟練エンジニアがいるとして、この2人になにかの技術調査をさせたときに、彼らの出す調査結果にものすごい差が出たりします。

新米エンジニアはググり方が分からなかったり、分かりやすくて飲み込みやすい日本語記事ばかりを引用して、調査結果を作ってきます。

熟練エンジニアは公式ドキュメントや論文や本、ソースコード、Github issueなど信頼性の高いサイトからちゃんと引用した調査結果を作ってきます。調査に知的好奇心や熱が入って余計な情報まで持ってくることもありますが笑

ググレカス(ggrks)という言葉はあながち間違いではなく、大体答えはネット上にあって、人間は見逃していることが多いというのは仕事をしていて感じていることです。

エンジニアの基本は調査力、国語力だと思いますが、この能力って全ての物事に効いてくるんじゃないかと思います。

新しい言語や技術を学んだり、まったく未知の分野について調査しなくてはならない状況でも、高い調査力でカバーできるはずです。

ソフトウェアエンジニアというよりこの不確実性の高い社会で生き抜いていくラーニングアニマルとして、重要なスキルだと思います。

数学力が上がる(場合による)

難しい理論をいちいちプログラミングして実装するのは非常に骨が折れるので、インターネット上には便利なライブラリが公開されています。

ライブラリを呼んであげるだけで計算結果が求められるので、正直専門的な分野とかでない限りは、数学力は必要とされないかもしれません。

ただし数学力が求められる分野があります。
データ構造とアルゴリズムです。

アルゴリズムには種類があって圧縮、暗号、機械学習など多岐にわたります。

世界の誰かしらがアルゴリズムを実装してネットに公開していることが多いですが、論文からアルゴリズムを実装するみたいな高度な仕事だと、数学がある程度強くないとできないと思われます。

しかし数学が好きな人からすると、数学を活かせるのが面白さでもありますね。


ということで私の人生を振り返りつつソフトウェアエンジニアの楽しさを考えてみました。

なにかの参考になれば嬉しいです!

この記事が気に入ったらサポートをしてみませんか?