「ソフテックだより」では、ソフトウェア開発に関する情報や開発現場における社員の取り組みなどを定期的にお知らせしています。
さまざまなテーマを取り上げていますので、他のソフテックだよりも、ぜひご覧下さい。
ソフテックだより(発行日順)のページへ
ソフテックだより 技術レポート(技術分野別)のページへ
ソフテックだより 現場の声(シーン別)のページへ
「ソフテックだより」では、みなさまのご意見・ご感想を募集しています。ぜひみなさまの声をお聞かせください。
私は2022年9月に第2新卒枠でソフテックに入社し、現在2年目の社員です。私が入社した時期というのはちょうどコロナウイルスによるさまざまな規制が解除されはじめた時期です。当時はコロナ禍の影響もあってかプログラミング学習がブームであり、いまでもその流れは続いていると思います。そのため、この時期以降にプログラミングに興味を持った、学習をはじめたという方は多いのではないでしょうか。本稿ではそうした方を対象にしつつ、主にプログラミング学習や実務におけるコーディングについてこの1年で私が思ったことをご紹介したいと思います。なお、他のIT業界や企業では事情がことなり下記の事柄が当てはまらないかもしれないことを念頭に置いて読んで頂けたらと思います。
いきなり話がそれますが、少し私のバックグラウンドについてお話します。入社前、私は大学に在籍しておりまして、一応理系の学部に在籍していたものの情報系ではありませんでした。大学の授業ではプログラミングにあまり触れていませんでしたが、研究室に所属しデータ解析のためのコードをいくつも作成していくうちに「これはなかなか面白いな」と思うようになりました。さらに、もっとプログラミングを学習したいと思うようになり、研究以外でも趣味の創作活動の一環としてコードを書くようになりました。このときに扱った言語がC#であり、私はC#やVisual Studioの便利さに感動しました。そうした経験や、開発にどれだけ深く関われるかなどを考えソフテックを志望し、入社しました。
上記のような背景があり入社したため、プログラミング学習はほぼ独学でした。それでも全くの素人ではないと考えていたため、入社時にはコードを書くということに関して多少の自信はありました。しかし研修を終え実際に業務に携わってみると、自分のスキルレベルではなかなかこなすのが大変であり、入社前の自分のプログラミング学習は間違っていたのだと思っていた時期がありました。
しかしこの1年程度でさまざまな経験をし、プログラミング学習に対する上記の考えは変わってきました。以降では、いま私がプログラミング学習についてどのように考えているかを述べたいと思います。
おそらく独学で学ばれている方は、参考図書やサイトをはじめから終わりまで満遍なく目を通し、ひとつひとつのクラスや関数について学習するといった方法をとっている方が多いと思います。そしてその後、まっさらなプロジェクトに自作の処理を記述していき、簡単なサンプルアプリを完成させるといったことをすると思います。ソフテックでも、研修では電卓アプリを作成するのが定番となっています。
図1. 電卓アプリ
学習の初期段階においては、上記のような学習方法は有効であると言えるでしょう。しかしその先のステップとして、私は仕事を通じ「改造こそが最も有効な学習方法ではないか」と思うようになりました。理由は主に下記の2点です。
同じ処理であっても、それを実現するためのコードは無限の書き方があるというのはプログラミングの面白さだと思いますが、それゆえ「お得意のパターン」をひとたび身につけるとそれに依存しがちになります。そのため、他人のコードを読むことで、自分の知らなかったテクニックを学ぶことができるのはひとつの大きな利点です。またデータベース(DB)操作やソケット通信などは、必要に迫られなければあまり学習しない内容だと思います。
当然よく知らないこと、やったことがないことは調べればいいだけですが、調べる機会があるかないかは非常に重要です。そうした学習の機会を与えてくれることも「改造」のひとつの大きな利点と言えるでしょう。
ソフテックにおいては、既存のアプリに対し「改造」や「修正」を施す案件が数多くあります。おそらく他の業界や企業でも同様に、一度完成させたものに手を加える機会は多いと思います。
すでに完成させたものは存在するわけですから、改造や修正といった仕事は簡単なように思えるかもしれませんが、実はそんなことはありません。改造や修正を行うには、他人が書いたコードを読み全体の処理を把握し、変更を加えようとしている部分が全体の処理に対しどの程度影響を与えるかを見極めなければなりません。ときには、求められている内容を実現するために、全体の処理への影響が大きいことを覚悟しつつ処理を変更しなければならないときもあります。
そうした「他人のコードを読む力」や「なるべく影響が小さくなるように修正を施す」という、実際の業務において非常に重要なスキルを身に着けることができるというのは大きな利点です。
上記のような利点があるにもかかわらず、私がプログラミングについて学んでいるときに「改造」を推奨するような意見をあまり見かけなかったのは、おそらく教材を用意することの大変さや、各種資格試験の内容などが原因だと思われます。また、プログラミング関連の書籍等を作成される方というのは実際の業務を経験されている方がほとんどですが、改造に関しては先述のような事情があるため、実務で身に付けるしかないと割り切っているのかもしれません。
実際に自分の学習目的に沿ったオープンソースのプロジェクトがないかと探してみると、かなり大変だということがわかります。開発背景を解説した資料がなかったり、環境を構築するのが大変だったり、あまりにも規模が大きすぎて学習に不向きだったりして、仮に運良くよいサンプルプロジェクトを見つけることができたとしても、それまでに膨大な時間を費やしてしまうでしょう。このようなことから、学習の方法としては、あまり現実的でないかもしれません。
「実現できないような学習方法を紹介して、結局なにが言いたいのか」と思われると思いますが、本稿で私がお伝えしたいのは「実務を経験しないと得られないことが多い」「実務が一番の学習だ」ということです。私は入社前に「いまの自分のスキルで通用するだろうか」といった心配が多少ありましたが、当時の私にいま声を掛けられるならば「実務の中でしか学べないこともあり通用しないのは当たり前」と伝えるでしょう。
実務であれば、他人が書いたコードであっても開発背景を解説した資料は提供されますし、書いた本人に聞くことができる場合もあります。環境構築も、必要な情報は開発資料に書いてありますし、その環境が残っている場合もあります。私が考える最も有効な学習が問題なく行えるということです。
もし、自分のスキルレベルに不安があり就職等をためらっている方がいれば、一度飛び込んでみるのがいいと思います。もちろんはじめは大変な思いをするかもしれませんが、おそらく実務での経験はいままでの人生で最も急速に自身を成長させてくれるでしょう。
ここまで、主にプログラミング学習やコーディングに関して書きましたが、ソフテックのエンジニアにとって「コードを書く」といったことは数ある業務のうちのひとつに過ぎません。ソフテックでは全員がエンジニアであり、全員が営業です。私としてはコードを書くという仕事は、お客様と打ち合わせを行い、仕様や費用を決め、納品まで円滑に進めることと比べると、大変ではあるものの単純なのだろうなと思っています。
入社してからあまり年月が経っていない私はまだ手を動かしてばかりですが、今後はそれ以外の仕事もこなせるよう精進していきたいと思います。
(H.K.)
関連ページへのリンク
関連するソフテックだより
「ソフテックだより」では、みなさまのご意見・ご感想を募集しています。ぜひみなさまの声をお聞かせください。