2020年4月10日金曜日

プログラマーに向いている人は?


こんにちは。

数年前、新卒で入社した新人プログラマーに「私はプログラマーに向いてないみたいです。」と相談されたことがあります。

私も、プログラマーとして働き出したばかりの頃は、「自分にはプログラマーという仕事は向いてないな」と思いながま働いていました。

そして、気づけば約20年プログラマーとして働いています。

約20年働いていても、たまに、「自分には向いていない」と思うことがあります。

では、プログラマーに向いている人は、どういう人なのでしょうか。

結論を言ってしまうと以下になります。
  • PCを使うことが好きな人
  • 物作りが好きな人
  • 諦めないで続けられる人
おそらく、この3つを持っている人が、プログラマーに向いているのではないかと私は思います。

では、以下でそれぞれについて詳細に説明しますね。

PCを使うのが好きな人

私が初めてPCを使ったのは、大学に入ってからです。

もう20数年前のことです。

当時は、windows95で大学内にある情報室でWebサイトを見るのが大好きでした。

時間があれば、情報室に行ってWebサイトを見ていました。

今では、生まれた時には、すでに家にPCがあって、小さい頃からPCを触ってきた世代なんですよね。

人によっては、小さいことからPCでゲームをしていて、ゲームのチャットで仲間と話すことでタイピング力を磨いてきた人もいます。

つまり、最近の新人でPCを使うのが苦手という人は少なかったりします。

もう少しすると、PCを使うのは苦手だけど、携帯やタブレットなら抵抗がないという世代が入ってくるようになるのでしょうね。

ただ、プログラマーとして働くとなると、携帯やタブレットではなく、PCが好きでないと結構辛い作業になってしまうかもしれません。

実際の作業は、PCを使ってプログラミングする作業なので、キーボードに慣れていないとプログラミングするだけでストレスになるかもしれません。

物作りが好きな人

次に必要となるのは、物作りが好きかどうかではないでしょうか。

プログラマーの仕事は、結局、今ないシステムを開発する作業となるので、物作りが好きな人が向いているでしょう。

ただ、プログラミングができないと向いていないのかというと、そうは言えません。

結論を言ってしまえば、プラモデルを作るのが好きな人でもいいのです。

私も、小さい頃から何かを作るという作業は好きでした。

父親が大工だったので、作業場で端材をもらって釘を打ったり、ノコで切ったりしていました。

また、ミニ四駆を作ったり改造したりするのも好きでしたね。

そのような環境で育ってきたので、そもそも物作りが私に取っては楽しいものだったのです。

プログラマーが物作りを好きでないといけない理由は、システムを作るだけでなく、その先を考えられるかということにつながると思います。

物作りが好きな人は、作ったものでどう遊ぶかまで考えて作ります。

同じように、プログラマーも、システムを作りながら、そのシステムをどう使うと面白いか、どれくらいの速度で動作したら面白いか、といったことを考える必要があります。

プログラマーの中には、システムを作ることよりも、既にあるシステムの使い方を考える方が面白くなって、営業へ転職していく人もいます。

まあ、それも分からないわけではありません。

自分でプログラミングして作るよりも、既にあるシステムを組み合わせて新しいものを作って売った方が利益にもなりますし、システムの改修も自分でする必要がないですもんね。

諦めないで続けられる人

ここまで、いろいろと書いてきましたが、結局は、諦めないで続けられる人がプログラマーには向いていると思います。

これは、プログラマーに限らずどの業界でも同じですよね。

私も、冒頭で書いたように、今だに「自分には向いていない」と思ってしまうのですが、結局は、諦めないで続けてきたというのが、今の自分がある理由だと思っています。

向いてる、向いてないというのは置いといて、諦めないで続けられる人ってどの業界でも一人前になっていくものです。

なので、向いてる、向いてないを考える時間があるくらいなら、目の前の仕事をどんどんこなしていきましょう。

目の前の仕事に集中していると、時間はすぐに過ぎていきます。

気づけば、経験が積み上げられて、いつの間にかプロになっているものです。

諦めて辞めてしまうことはいつでもできます。

いつでもできる事は、あとでもいいじゃないですか。

まずは、今積み上げられる経験を積み上げていけば、転職したとしてもやっていけると思うのです。

逆に、経験を積み上げる前に辞めてしまう人は、どの業界でもやっていけないのではないでしょうか。

そういう人って、人から仕事が与えられるのを待っている人が多いんですよね。

本気でプログラマーになりたいと思っている人は、仕事を与えてもらうのではなくて、自分から取りに行ってるんですよね。

まとめ

上でも書いたように、プログラマーに向いている人は、諦めないで続けられる人なのです。

諦めないで続けていれば、知らないうちに一人前になっているのです。

ちなみに、私に相談してきた人は、今でもプログラマーとして働いています。

今では、プログラマーとして独り立ちして、現場でバリバリ働いています。

では、今日はこの辺で。

2020年4月8日水曜日

プログラマーになるのに資格を取る必要はない


こんにちは。

よく後輩などに、「仕事できるようになるには、何か資格を取った方がいいですか?」みたいな質問をされます。

このような質問をしてくる後輩は、大体、ある程度のプログラミングができるけど、独り立ちにはまだ早い人が多いです。

たまに、ベテランの人でもこのような質問をしてくる人がいますが。。。

ということで、今日は、プログラマーに資格は必要かについて書いてみようと思います。

結論から言うと以下になります。
  • 資格を取る必要はない
  • 机上で勉強するくらいなら毎日PCを扱いましょう
  • どんどん挑戦すると独り立ちも早くなります
と言うことになります。

ベテランから「資格を取った方がいいですか?」なんて聞かれても、正直「知りません」と言う感じなんですけれど、後輩とかだと上の3つをよく説明しています。

資格を取る必要はない

プログラマーとして仕事をするのに資格は必要ありません。

就職や転職するときに、面接で「資格何か持ってますか?」と聞かれますが、これって資格を持っている人がいると営業しやすいからなんですよね。

「うちには、こういう資格を持っている人がいますよ」って言うことで、資格を持ってない人と持っている人では、営業の仕方が違ってくるんですよね。

それに、会社のアピールにもなるんですよ。

IT企業のサイトとかを見てみると、「この資格持っている人が何名」とか書かれていて、有名な資格だと結構アピールにもなるんです。

でも、実際の作業で資格の勉強で得た知識が使えるかというと、ほとんど使えないんですよ。

特にSES(システム・エンジニアリング・サービス)とかで、客先に常駐して作業するプログラマーとかは、マニュアルに沿った開発をすることが多いので、資格がなくても作業を進められるんですよね。

そういう企業じゃないとSESで人を入れて開発なんてできないですもんね。

社内SEとかで仕事する場合も、現状動いているシステムに対して改修をしたり、機能を追加したりという作業が多いので、そうなると全く資格で勉強した知識を使わないというようなことになります。

じゃあ、全く意味がないかというと、そうとも言い切れないです。

システムの基礎については、机上で勉強しておく必要があるので、資格を取る勉強というより、必要な知識を身に付ける勉強をすればいいと思います。

資格まで取ろうと頑張ってしまうと、必要のない知識も頭に入れないといけないので、正直、時間と労力の無駄遣いになってしまいます。

机上で勉強するくらいなら毎日PCを扱いましょう

本を読んでもプログラマーとしての資質にはなりません。

それよりも、毎日PCを扱いましょう。

「プログラマーとして毎日仕事でPC扱っているから、大丈夫でしょう」と思うかもしれませんが、ここでPCを扱うというのは、日常生活でということです。

仕事とは別にプログラミングするのもいいですし、ブログを書くのでもいいです。

つまり、仕事とは別にプライベートでもPCを扱いましょう。

今では、PCさえあれば、動画も音楽も聞けますし、情報も収集することができます。

常にPCを扱っていると、実際、仕事でプログラミングする時に、情報の収集とかでも断然差が出ます。

常にPCを扱っていると、自分が使っているソフトウェアにどういう機能があるのかも分かってきます。

一般的な機能というのは、どのソフトウェアも統一されていたりします。

そのため、実際にソフトウェアを作るときにも、「こういう機能は普通についてるよね」と組み込むことができます。

実際、ソフトウェアを使い慣れている人が作ったソフトウェアと、使い慣れていない人が作ったソフトウェアでは、使いやすさに大きさ差が出てきます。

その辺を意識できるかどうかが、初心者プログラマーが独り立ちできるかどうかの境目になっていたりします。

どんどん挑戦すると独り立ちも早くなります

結局、最終的には、これが大事なことになります。

初心者でプログラミングに自信がない人って、自分から作業をしようとしていないんですよね。

でも、勉強ばかりしていても、実際に仕事としてプログラミングをして、経験を積んでいかないとプログラマーとして独り立ちすることは無理なんです。

任されるのを待っていても、できる人に仕事は集まっていくんですよね。

時間があるプロジェクトや大企業なんかだと、先輩と一緒に作業することで経験を積むこともできるかもしれませんが、ほとんどの企業ではそこまで余裕はないですよね。

だから、自分から作業を取りに行かないと、経験なんて積めないんですよ。

じっと待っていても、経験の浅いプログラマーにくる仕事なんて、雑用に近い仕事だったり、プログラミングとは程遠いテスターとしての仕事しか来ないんです。

逆に、自分から作業を取りに行くと、ベテランのプログラマーは、「大丈夫かな。。。」ってちょこちょこと見に来てくれたりします。

なので、詰まっていても、すぐに聞けたり、自分の知らないようなことを先輩から学んだりと、その作業が終わる頃には、かなり成長できていると思うのです。

そうやって、何度も挑戦していくうちに、先輩からも信頼されるようになり、独り立ちできるのです。

初めて作業を取りに行く時は、怖いと思います。

自分に自信もないので、できないんじゃないかと言った不安が出てくるのは当たり前です。

でも、そこを乗り越えることで、プログラマーとして独り立ちできるのですから、ちょっと勇気を出して「その作業やらせてください」と言ってみましょう。

先輩も、本当に無理と思ったら渡しませんから大丈夫です。

でも、その場合は、別作業をもらえると思いますよ。

まとめ

まとめると、経験の浅いプログラマーが独り立ちするには、資格勉強ばかりしていても意味がないのです。

PCを使い慣れて、一般的なソフトウェアに着いている機能に慣れておくこと。

仕事は、自分から作業を取りに行くこと。

これを繰り返すことで、プログラマーとして独り立ちしていくのではないでしょうか。

つまり、今回紹介した3点を繰り返すことで、周りよりも早くプログラマーとして独り立ちできると思いますよ。

では、今日はこの辺で。

2020年4月5日日曜日

コーディング規約の重要性

こんにちは。

今日は、コーディング規約の重要性について書いてみようと思います。

結論から言うと以下になります。
  • コーディング規約を無視したソースコードは読み辛い
  • フレームワークを使う場合はフレームワークのコーディング規約を使う
  • 独自コーディング規約よりも公式のコーディング規約を使おう
個人でWebサービスやソフトウェアを作っている時は、コーディング規約なんて気にしないと思います。

でも、チームで開発する時は、コーディング規約はとても重要です。

この辺を、私の経験を踏まえながら書いていきますね。

コーディング規約を無視したソースコードは読み辛い

チームで開発をしていると、コードレビューをします。

私も何度もチームメンバーのコードレビューをしてきました。

でも、コーディング規約を無視して書かれたソースコードは本当に読み辛いです。

コーディング規約を無視してコーディングする方は、大体がソースコードは動けばいい、くらいにしか考えていない方が多いです。

でも、考えてください。

システムは、一度作ってしまえは終わりと言う時代は昔の話です。

今は、システムは、育てていく時代です。

つまり、自分が書いたソースコードは、いつかは修正されるのです。

読み辛いソースコードを書いていると、修正をする方がとても苦労します。

苦労するだけじゃなくて、修正に時間がかかってしまい、修正する方へ大きなストレスを与えるのです。

私も、プログラマとして働き出したばかりの頃は、コーディング規約を重視していませんでした。

でも、時間がたった後で、自分のソースコードを修正する時、自分ソースコードなのに読み辛く、修正に多くの時間が必要でした。

自分の作ったソースコードに対して、「誰だこんなソースコードを書いたのは」と突っ込んでいたくらいです。

なので、チームを持つようになってからは、コーディング規約に沿ってないソースコードは、時間がなくても書き直してもらうようにしています。

若いプログラマの中には、不平・不満を言う方もいます。

そういうプログラマには、コーディング規約の重要性と、今のシステムを育てて、今後もっといいシステムにしたい意思を伝えるようにしています。

フレームワークを使う場合はフレームワークのコーディング規約を使う

仕事としてシステム開発をしていると、フレームワークをよく使います。

最近では、いちからスクラッチで開発することはほぼありません。

フルスクラッチで開発する時も、laravelやreactなどのフレームワークを使用します。

その場合は、laravelやreactのコーディング規約に沿ってコーディングを行うことで、読みやすいソースコードになります。

例えば、Wordpressのプラグイン開発をする場合を考えてみましょう。

Wordpressのプラグインを開発する場合、Wordpressで公開されている関数をよく使います。

そんな時、Wordpressのコーディング規約を知っていると、公開されている関数や変数を探しやすくなります。

また、他のプラグインと連携するのも容易になります。

これが、全く違うコーディング規約を使ったらどうなるでしょうか。

まず、Wordpressで公開されている関数を見つけるのに時間がかかってしまいます。

もしかすると、同じような処理をする関数を1から作ることになるかもしれません。

でも、自作した関数は、セキュリティ的に大丈夫か、想定外のデータを取得した場合の処理は適切かなど、検討しなければいけないことが増えてしまいます。

他のプラグインとの連携でも同じことが考えられます。

Wordpressのコーディング規約に沿って開発するだけで、少しでも手間が省けるのです。

以下にワードプレースのコーディング規約へのリンクを貼っておきますね。

Wordpressコーディング規約 (外部リンク)

独自コーディング規約よりも公式のコーディング規約を使おう

大手のシステム企業では、独自のコーディング規約を設けている所もあります。

でも、これからコーディング規約を作るのであれば、公式のコーディング規約を使いましょう。

何故かというと、コーディング規約を作ることが、あなたの企業の業務ではないからです。

そこに、時間をかけるくらいなら、システム開発をすることに注力した方が充分に利益につながります。

何度も同じコーディング規約を使用していると、少しずつ足りないなと思う点が見えてきます。

足りない点を既存のコーディング規約に追加していけばいいだけなのです。

私が勤めている会社でも、数年前に独自のコーディング規約を作ろうとした時期がありました。

いろんなコーディング規約のいいとこ取りをしようと考えていたのですが、結局、公式のコーディング規約を使用することになりました。

理由は簡単で、いろんなコーディング規約を読んでまとめる充分な時間が取れないというのが理由でした。

また、公式のコーディング規約には、基本的なことは定義されています。

基本的な規約に沿ってソースコードをコーディングするだけでも、読みやすいソースコードになりますし、システム全体の統一性も保たれます。

以下に、私が勤める会社で使用しているコーディング規約のリンクを貼っておきますね。

PHP Standards Recommendations(外部リンク)

まとめ

コーディング規約は、チームで開発する時には、とても重要です。

でも、ベテランのプログラマでも、コーディング規約を軽視している方が結構いるように思います。

ただ、自分が書いたソースコードを、後々、誰かが読んで、もっといいソースコードに書き換えてくれると考えると、コーディング規約に沿ってコーディングする大切さが分かるのではないでしょうか。

では、今日はこの辺で。

おまけ

システム開発ついて書いた過去のブログを以下に紹介します。




2020年4月3日金曜日

企業で働くエンジニアが注意しないといけない言葉


こんにちは。

今日は、企業で働くエンジニアが注意しないといけない言葉について書いていこうと思います。

結論から言うと以下になります。
  • できません
  • 簡単です
  • すぐできます
この3点については注意しましょう。

お客様とミーティングしていると、つい言ってしまいそうになる言葉です。

しかし、このような言葉に注意しないと、無駄な作業が増えることになりますよ。

私も、何度もこのような言葉で失敗してきましたので、その経験も含めて書いていきます。

できません

お客様からしてみると、企業で働くエンジニア はプロです。

なので、欲しい機能をどんどん言ってきます。

簡単な機能ならばまだしも、難しい機能になると、つい「それはできません」と言ってしまいそうになります。

でも、よく考えてください。

論理的な機能であれば、手間がかかるかもしれませんが、ほとんどが作り込むことが可能なのです。

私の場合、つい「できません」とその場で言ってしまったばかりに、仕事を失注してしまったことがあります。

あとで知ったのですが、そこまで手間をかけずに作ることができたのです。

論理的な機能なら作り込む事もできますし、一般的な機能ならばWebで調べると簡単にロジックやプラグインがあったりします。

なので、「できません」と言う言葉は控えるようにしましょう。

では、難しい機能の場合どう対応するかと言うと、「難しいです」と言うことを正直に行った上で、「検討させてください」と伝えましょう。

あとは、必死に調べる、または、聞き回ることで、簡単に作り込む方法を考えましょう。

簡単です

システムを発注する企業は、ITの知識が低いことがよくあります。

そのため、どうでもいいような機能をどんどん追加してきます。

その大半は、エンジニア にとっては簡単に作り込むことができます。

ただし、企業でエンジニアをしているということは、自分がプログラミングしている時間はビジネスの時間なのです。

作っているシステムは、企業の商品なのですよね。

私も、「その機能簡単にできるので追加しましょう」と言って、最終的に時間が足りなくなったことがあります。

そしてどうなったかと言うと、開発チームから外されることになりました。

結局、開発チームの利益を使ったことになるんですよね。

ただ、個人的には、お客様が欲しいと言っている機能は、できるだけ組み込みたいと思っています。

すぐできます

この言葉も気をつけた方がいいです。

自分の裁量で判断できるくらいの簡単な機能なら、私もこっそりと組み込んだりもします。

ただ、企業でエンジニアとして働いていると、スケジュールがありますよね。

スケジュールって、他の機能との兼ね合いもあるので、遅れると結構怒られます。

それが自分の技術不足によるものなら、まだスケジュールが悪かったと言えるのですが、こっそりと機能を組み込んだばかりに遅れると、かなり問題になります。

これは、私の経験です。

その時は、隠すことができずにバレてしまい、大目玉をくらいました。

なので、こっそり機能を追加するのであれば、スケジュールとの兼ね合いを十分に考えてから行いましょう。

企業で働くエンジニア としては、これも御法度なのですけれどね。

まとめ

企業でエンジニアとして働いている人は、このような言葉は使っていないと思います。

この3つの言葉、「できません」「簡単です」「すぐできます」は、結局企業の利益を潰しちゃうんですよね。

個人で仕事しているのであれば、普通に使っていいのかもしれません。

でも、企業でエンジニアとして働くのであれば、この3つの言葉には注意しましょう。

では、今日はこの辺で。

おまけ

エンジニア で働くのに役立つ過去の記事を紹介します。



2020年4月2日木曜日

社会人になって学ぶには


こんにちは。

今日は、社会人になって学ぶにはというテーマで書いてみようと思います。

結論から言うと以下になります。
  • 興味を持つ
  • 深掘りする
  • ビジネスを意識する
今日は、私が勤める会社でも入社式がありました。

新型コロナウィルスのため、みんなが集まって行う式は行いませんでした。

社会に出ると、学ぶ事も自由に決めることができます。

つまり、学ばないと言う自由もあるのです。

そのような中で、どのように学び続けていくかを考える必要があります。

興味を持つ

まずは、興味を持つことでしょう。

学ばないことを選択する自由も、社会人になると与えられます。

企業に入社する方は、その企業の事業に興味を持ったからでしょう。

どこに興味を持ったかは別として、興味を持ったところから、まず学んで見るといいのではないでしょうか。

私の場合は、最新の技術に興味があります。

なので、最新技術の情報は、すぐに目に飛び込んできます。

人によっては、アンテナを張るという言い方をする方もいますが、実際、私はアンテナを張れているのか分かりません。

でも、ネットニュースを見ていると、新しい技術はすぐに目に入ってきますね。

深掘りする

興味を持って学び出したら、さらに深掘りしてみるといいです。

深掘りすることで、さらに興味が湧き、学びたい欲求が増すことがよくあります。

また、深掘りすることで、詳細な知識が着き、先輩との話についていけるようになります。

すると、さらに面白くなってくるのではないでしょうか。

私が新人の頃、組み込みシステムの開発をしていたのですが、深掘りして学んでいて、先輩と話が合うようになり、さらにシステム開発が面白くなりました。

先輩と話が合うと、仕事も来るようになるので、同僚に少し差をつける事もできますよ。

ビジネスを意識する

やはり、学んでいることがビジネスに直結すると、学び意欲は湧きますよね。

学ぶことで、お金が稼げるのですから、一石二鳥でしょう。

さらに、ビジネスを意識しながら学び続けると、経営者と同じ意識に近づけます。

つまり、経営層の方々と話ができるようになるのです。

新しく社会人となった方にはピンと来ないと思いますが、経営層と話ができるというのは、かなり難しいのです。

例えば、システム企業の経営層は、システムを開発してどのようなビジネスを行うかを考えているのに対して、末端にいる私たちは、目の前の開発やシステムの機能のことしか考えていません。

つまり、見えている世界が違うため、話が噛み合わないのです。

まとめ

つまり、興味を持って深掘りし、どうやったら儲かるかを考えると、学ぶ速さも早くなるのです。

特に、ビジネスを意識するのは大切なことです。

たまに、知識をつけることが好きという方もいますが、知識を身に付けてもお金を稼げないと生活もできませんよね。

新しく社会人となった方は、学生時代と違って全てが自由です。

その自由を何に使うかによって、これからの人生が変わってきます。

頑張って学んでください。

では、今日はこの辺で。