2020年9月26日土曜日

プログラミングのロジックはアナログから考えろ

こんにちは。

経験が浅いプログラマーは、
「このプログラムのロジックが思いつかない。」
「プログラミングのロジックってどうやって考えれば良いの?」
と悩むことがあると思います。

ロジックというのは、処理の手順のことです。

私は、以下の方法でロジックを考えています。
  1. プログラミングのロジックはアナログから考える
  2. アナログな方法を抽象化する
  3. ループ処理を入れ子にしない

私は10年以上プログラマーとして働いて来た。
経験が浅い頃は、ロジックが分からなくで悩んだりしていました。
でも、今ではロジックが分からなくて悩むことはなくなりました。

いろんなロジック考え実装してみて、たどり着いた結論が上の3つの方法になります。

以下で細かく説明していきます。

1.プログラミングのロジックはアナログから考える

プログラミングのロジックは、
アナログな処理を自動化することです。

なので、まずは、
「自分がこの処理をするなら、どうやってやるか?」
を考えてみましょう。

例えば、
与えられた2つの数字から、その間の合計を計算するロジックを考えてみます。
与えられる数が1と10なら、55を返えします。

その場合、
1+2+3+4+5+6+7+8+9+10=55
と計算しますよね。

なのでロジックとしては、以下になります。
  1. 与えられた小さい数に1を加える
  2. 与えられた小さい数を合計に加える
  3. 合計に1で作成した値を加える
  4. 1で作成した数に1を加える
  5. 3、4を繰り返す
  6. 4で作成した数が与えられた大きな数になったら終わり
  7. 合計を返す

でも、実際にプログラマーとしてロジックを作っていると、
アナログな方法が分からないこともあります。

そんな時は、プログラミングの依頼内容が理解できていないのです。

なので、プログラミングを依頼して来た人に聞いてみましょう。

つまり、プログラミングのロジックを考えるにはアナログな方法を考えるのが1番です。

2.アナログな方法を抽象化する

上で書いた方法は、アナログなロジックです。

プログラミングする上では、アナログなロジックでも良いのですが、
処理速度が遅くなることがよくあります。

上の例だと、与えられる小さい数と大きい数の差が大きい場合、時間がかかってしまいます。

そこで用いるのが抽象化の考えです。

上の例だと、数学に強い人はすぐに分かると思いますが、
以下の式で求めることができます。

合計 = n * (a + b) / 2
aとbは与えられた数
nは、aとbの間の個数 (b - a + 1)

このように、ロジックを抽象化することで、
常に同じ処理時間で処理できるロジックを作ることができます。

3.ループ処理を入れ子にしない

これは、プログラミングのロジックを考える方法ではないのですが、
ロジックを考える上で、常に頭に入れておいた方がいいことです。

ループ処理というのは、繰り返し行う処理のことです。

つまり、繰り返し処理の中で、繰り返し処理を行わないということです。

ループ処理が入れ子になると、処理時間がかかるからです。

例えば、
10回ループする処理の中で、100回ループする処理が入っていたとします。
すると、その処理の中では、1000回の処理が実行される事になるのです。

ループの回数が固定なら、同じ処理時間で終わるのでいいのですが、
ループの回数が与えられた数で変動する場合は、処理を見直した方がいいです。

特にwebシステムの場合は、データが多くなるにつれて処理が重くなり、
挙句の果てに、画面表示がタイムアウトする事になります。

このような不具合はよくある事で、
最初はサクサク動いていたのに、使っていくうちに重くなっていくのです。

どうやって勉強すればいいの?

最後に、プログラミングのロジックの勉強方法について書きますね。

プログラミングのロジックは、
「どんなシステムを作るのか」
「どんな処理を作るのか」
とさまざまです。

なので、勉強して覚えられることではありません。

でも、いろんなロジックを見ていると、
「あそこで使ってたロジックが使える」
「あのロジックを少し変えれば使える」
と思い出せるようになります。

経験が浅いうちは、ソースコードを読む事も少ないと思います。

しかし、Web上には多くのシステムのソースコードが公開されています。

公開されているソースコードをまずは読んでみましょう。

何故このようなロジックになっているのか
を考える事でプログラミングのロジックを鍛える効果があります。

また、プログラミングについても知識を増やせると思います。

まずは試してみてください。

では、今日はこの辺で。

2020年9月10日木曜日

プロジェクトのリスクはマネージメントする事で軽減できる

「プロジェクトのリスクをマネージメントするにはどうしたら良いか?」

私は、プロジェクトを任されると、いつもこの疑問にぶち当たってしまいます。
特に、初めてプロジェクトを任された時は、この疑問が重くのしかかって来ました。
なので、今回は、そんな自分へ向けて、解決策を明示したいと思います。

結論を言うと以下になります。
  1. 管理
  2. 監視
  3. 見直し

私は、これまで大きなプロジェクトのマネージメントの経験はありません。
しかし、複数の小さなプロジェクトをマネージメントして来た。
また、その中で、大きな問題は発生してしまい、何度も失敗を繰り返して来ました。
そんな私が、以下で説明していきます。

プロジェクトのリスクはマネージメントする事で軽減できる。

プロジェクトでは、複数のリスクが発生します。 そのリスクを回避する事で、プロジェクトは利益を得るのです。

では、どのようにマネージメントするのかについて、以下で書いていきます。

1.管理

管理する内容は以下になります。
  • リスク内容
  • 判断基準の作成
  • 対応策の作成

リスク内容

プロジェクトのリスクは、経験上、似た内容のリスクが考えられます。
そのため、経験を詰めは、リスク内容は現実的になって来ます。
システム会社ならば、それまでの実績からリスクの一覧は既にあるでしょう。
なので、リスク内容の精査をするだけで、リスク内容の一覧はできるでしょう。

判断基準の作成

こちらも、既にある判断基準を利用できます。
しかし、プロジェクトの規模によって判断基準は変わって来ます。
なので、判断基準は、プロジェクトごとに見直す必要があります。

対応策の作成

対応策については、プロジェクトごとに考える必要があると、私は考えています。
マネージャーによっては、既存の対応策を使用する方もいます。
しかし、プロジェクによって状況が違うため、対応策については、その都度考える必要があると思っています。

2.監視

監視は、上記で書いたリスクの一覧をもとに、プロジェクトを監視します。
プロジェクトの状況が、判断基準を超えないようにすることが重要です。

プロジェクトは、状況が刻々と変わっていきます。
そのため、リスクの判断基準の監視を忘れていると、いつの間にか超えていたと言う状況になるのです。

ただ、マネージャーを経験したことのある方は分かると思いますが、マネージャーの仕事は多いのです。
しかし、リスクが発生してしまうと、大きな損失を被る可能性が高いので、リスクの監視は常に行うようにしましょう。

良い方法としては、定期的に行うことです。
例えば、朝と定時前に判断基準をもとに確認することです。

リスクによっては、数時間間隔で確認する必要があるかもしれません。
その時は、数時間間隔で確認をするのです。

特に、判断基準に近づいているリスクなどは、数時間間隔で監視した方が良いです。

3.見直し

リスク一覧は、定期的に見直すことも必要です。

プロジェクトは、時々刻々と変化しています。
そのため、プロジェクト初期に作成されたリスク一覧は、工程やフェーズによって見直す必要があるのです。

もちろん、対応策についても見直しが必要となります。

私の経験から言うと、工程ごとにリスクは違って来ます。
また、後工程になるほど、対応策が具体的になって来ます。

何故、後工程ほど対応策が具体的になるかと言うと、プロジェクトの初期は、自分のチームで解決する必要があることでも、後工程になるとお客様の状況も分かるようため、お客様を含め解決策を返答することができるのです。

例えば、プロジェクト初期では、試験工程に遅延が発生したとしても、マンパワーでやり切るしかなかったリスクも、後工程になると、お客様に手伝ってもらう対策も打てるようになるのです。

ただし、プロジェクト初期でリスク対策を検討する時に、お客様を当てにするのは間違いです。
十分にコミュニケーションを取った後で、もしもの時は手伝ってもらえる状況が作れた時にお手伝いをお願いする事になります。

なので、それまでに、お客様の状況や立場を十分に理解し、プロジェクトの状況も共有して理解してもらう必要があるのです。

このように、リスクは、工程やフェーズで見直す必要があるのです。

まとめ

今回は、プロジェクトのリスクをマネージメントする方法についてまとめてみました。

結論は、リスク一覧を作成し、プロジェクト中はリスクの監視をします。 そして、工程ごとにリスクを見直しするのです。

こうしてプロジェクトのリスクマネージメントについて書いていると、そんなに難しくないように思えるかもしれません。 しかし、実際にやってみると、これが凄く難しいのです。

私も、これからも試行錯誤していくと思います。

では、今日はこの辺で。

2020年8月30日日曜日

仕事をしたくない・辞めたい時は自分の時間で勉強しよう

私も「仕事したくない」「仕事辞めたい」と思うことがよくあります。

そのような時は、私の場合、以下のような気持ちになっていることが多いです。
  • 仕事が面白くない。
  • 今の仕事に将来性を感じない。
  • 仕事をしたくない時どうしたら良いだろう。
そのような時、私は以下の順番で次の行動を考えています。
  1. 仕事をしたくない・辞めたい時は自分の時間で勉強しよう。
  2. 作業がマンネリ化しているなら、こっそり広げてみよう。
  3. 仕事以外の時間を大切にしよう。
  4. ハラスメントがある会社からは、すぐ辞めよう。
  5. ブラック企業からはすぐに辞めよう。

私の経歴としては、最初ブラック企業で働いていました。
その時は、会社がブラック企業だと分かってすぐに辞めました。

その後、働いた会社では、ブラック企業にSESで常駐で作業ををしていました。
その時は、精神的に病んでしましました。

今は、結構ホワイトな会社で働いていますが、それでも、「仕事したくない」「仕事辞めたい」と思うことがあります。

こんな私が、以下で説明していきます。

1.仕事をしたくない・辞めたい時は自分の時間で勉強しよう。

仕事がしたくない、辞めたいと思った時は、自分の時間でまず勉強しましょう。

仕事は、ビジネスを行う場であって、実績が1番です。
なので、やりたい仕事と、実際にやれる仕事は一致しないのです。

しかし、仕事以外の時間は、あなたの時間です。
その時間を使って、まずはやりたいことの勉強をしましょう。

このような思いを抱く時は、仕事以外の時間をダラダラと過ごしていないでしょうか。
やりたい仕事ができなくて、ストレスが溜まっている状態ではないかと思います。

そう言う場合は、仕事は淡々とこなし、自分の時間を充実させることで、やっている感が感じられるはずです。

こんな主張をすると、「仕事で疲れいるからできない」と言う人がいます。
私も仕事後は疲れていて、何もやる気がしない状態になっていました。

でも、だからと言って何もやらないと、やりたい仕事につくことは難しいです。

なので、仕事がしたくない、辞めたいと思った時は、自分の時間でまず勉強しましょう。

2. 作業がマンネリ化しているなら、こっそり広げてみよう。

例えば、プログラマーで新卒で就職すると最初は、試験からただと思います。

長い時は、1年以上試験ばかりをする事になる場合もあります。

でも、プログラマーとして就職したのだから、プログラミングをやりたいですよね。
そのギャップがストレスになると思います。

なので、上でも書いたのですが、まずは自分の時間でプログラミングの勉強をしましょう。

そして、ある程度、基礎勉強が終わったら、実際に仕事で実勢してみましょう。

システムの試験を行っているのであれば、不具合が発生した時に、原因をソースコードから探してみましょう。
時間がかかるかもしれませんが、そうする事で、ソーコードを読む力がつきます。

また、修正された場合、修正箇所を確認すると言うのも良いと思います。

結果的に、自分の活動範囲が広がっていきます。

不具合の原因をソースコードから見つけれるようになると、そればあなたと実績となります。
実績を積むと、必ず次のステージへ上がることができます。

3.仕事以外の時間を大切にしよう。

これまでは、自分の時間で勉強しましょうと主張して来ましたが、仕事以外の時間を大切に過ごすだけでも、十分に変化が感じられると思います。

どうしても、仕事を終えて家に帰ってくると、ゆっくりと休みたい気持ちになりますよね。
でも、その時間、本当に休めていますか。

テレビを見たり、スマホを見たりして、結局、ダラダラと過ごしてしまっているのではないでしょうか。

私も、最近までそのような生活を送っていました。

でも、それって本当の意味で休めていないんですよね。
「ダラダラ過ごす=時間の浪費」なのです。

仕事をしている時もそうですが、ダラダラ時間を浪費するくらいだったら、「就業時間8時間で、これだけの成果を出す」とか、「この時間で勉強する」と言ったように、時間に区切りをつけて生活をした方が、精神的にも楽になります。

また、寝る前にテレビやスマホを見ると、寝つきがよくないと言った研究成果も報告されているようです。

みなさんも、仕事以外の時間を見直してみてはどうでしょうか。

4.ハラスメントがある会社からは、すぐ辞めよう。

仕事以外の原因として考えられるのが、ハラスメントがある会社ですね。

パワハラ、セクハラなど、こう言ったハラスメントがある会社は、すぐに辞めるのが一番です。

一昔前までは、こう言ってハラスメントは日常茶飯事でした。

私が社会に出て最初に就職した会社も、パワハラが凄かったです。
私は、社会に出てすぐだったので、これが社会なんだと最初は我慢していたのですが、1年で辞めました。
辞めてハローワークで相談して、初めてこれがパワハラだと知ったのです。

ちなみに、その会社は、私が辞めて1年後に従業員が全員で辞表を提出して解散となりました。

今でも、パワハラ、セクハラを行う人はいます。
そう言う会社は、ハラスメントをする人を、ある意味野放しにしている会社なのです。
なので、そう言う人がいる会社は、辞めてしまいましょう。

5.ブラック企業からはすぐに辞めよう。

世の中には、ブラック企業が今でもたくさんあります。
法律的にもグレーなビジネスをしている会社です。

例えば、長時間労働を強いる企業です。
今は、長時間労働は違法ですが、1日のタスクが8時間で終わらないようなものを渡す会社は、今でも存在します。
口では、「長時間労働をしないように」と言っていますが、長時間労働をしないと終わらないタスクばかりなのです。

また、営業で女性がいる方が良いからと、女子社員を連れ出すと言ったことも、実は行われていたりします。

そのような会社は、ブラック企業なので、すぐに辞めましょう。

まとめ

今回は、「仕事をしたくない」「仕事を辞めたい」と思ったときに取る方法について考えてみました。

結論としては、仕事以外の時間を大切にして、勉強をし、仕事に役立てるようにすると、緩和されるのではないかと思います。

しかし、ハラスメントがあったり、ブラック企業などは、すぐに辞めてしまいましょう。

仕事以外の時間を大切にしても、どうしても「仕事をしたくない」「仕事を辞めたい」と思う時は、会社を辞めてしまうのも良いと思います。
今は、1つの会社で一生頑張るような時代ではありません。
今の会社で実績ができたら、あっさりと辞めてOKだと私は思います。

では、今日はこの辺で。

2020年8月26日水曜日

プログラマーでうつ病になる人が多いけど、何故そんなに多いのかな?

以前、知り合いから「プログラマーでうつ病になる人は多いですね?」と言われたことがあります。
私も7年ほど前にうつ病と診断されて治療中なので、
「プログラマーはうつ病になりやすいのか?」
「プログラマーは何故うつ病になるのか?」
について考えてみました。

結論を言ってしまうと以下になります。
  1. プログラマーでうつ病になる人は多いです。
  2. プログラミングは、動かないことがよくあるため悩みも多くなってしまいます。
  3. システム開発は、プログラマーに依存しているの原因かも。

私は、プログラマーとしての経験が10年以上あり、これまで多くのプロジェクトに携わって来ました。 そして、私自身うつ病で苦しんだ経験があり、現在でも治療中ですが心身ともに安定した生活が遅れています。

こんな私が、以下で詳しく説明していきます。

1.プログラマーでうつ病になる人は多いです。

ぶっちゃけ、IT系でうつ病になる人は多いです。

私が携わったプロジェクトにも多くのうつ病患者がいました。
大体、うつ病になるプログラマーは、責任感の強い方や、作業の早いプログラマーです。
仕事は、そのような方に集まるのです。

これは、プログラマーだけではないと思います。

2.プログラミングは、動かないことがよくあるため悩みも多くなってしまいます。

プログラマーがプログラミングすると、すぐに動くプログラムができると思うかもしれません。

しかし、結構動かないことが多いのです。

プログラマーは、何故動かないかを、ひとつひとつロジックを追いながら、正常に動くプログラムへ修正していくのです。
なので、何故プログラムが正常に動かないかが分からないと、ストレスも溜まっていくのです。

システム開発は、チームで行っているように見えますが、それぞれが異なる処理をプログラミングしています。

そのため、個人で作業しているのと同じなのです。

その様なところも、プログラマーにうつ病が多い原因なのではないでしょうか。

3.システム開発は、プログラマーに依存しているの原因かも。

システム開発は、プログラマーに依存しているため、うつ病になる方も多いのではないでしょうか。

上にも書きましたが、システム開発は、チームで行っている様で、実は個人で行っているのです。
特に作業が早いプログラマーには、予定以上の作業が流れて来ます。
その分、プログラマーへかかるストレスは大きなものになるのです。

チームで開発を行うと、チームメンバーには、プログラマーとして経験が長い方から浅い方までがいます。
なので、均等に作業を分配してしまうと、経験が浅い方が担当したプログラミングが遅れてしまいます。
それをカバーするために、経験のあるプログラマーへ多くの作業が流れてしまうんです。

私は、経験が浅いメンバーのチームで開発を行っているときに、うつ病になってしまいました。

この様な主張をすると、「チームリーダーが無能なんだ」と言った意見が聞こえて来ますが、チームリーダーのみに責任を押し付けるのはどうかと思います。

私も、チームリーダーをしたことがありますが、集められたメンバーの経歴などは、ほとんど知らされません。
特に大きなチームになると、パートナー会社からの出向だったりで、その人がどこまでできるのか分からないまま、開発を開始するのです。

つまり、システム開発がプログラマーに依存しているため、プログラマーはうつ病になり易くなるのでしょう。

では、どの様にすればプログラマーのうつ病は減るのでしょうか?

結論としては、以下の対応が必要だと思います。
  • 無理をして仕事をしない。
  • 1日5〜6時間で終わるタスクにする。
  • 適度に運動する。
  • 心療内科を受診する。
  • 休みをとる。

あなたが仕事をしなかったとしても、仕事は周ります。
逆に言うと、あなたが仕事をしないことで、仕事が回らない様なら、会社が社員に依存する風土があると言うことです。
その様な会社は、将来性がありません。
転職をお勧めします。

ストレスが溜まったら適度な運動が効果的です。
30分程度のウォーキングで十分です。

ストレスで心身に影響が出たら、心療内科を受診しましょう。
心療内科で医師と相談し、適切な薬などを処方してもらいましょう。

少し休暇を取るのも良いと思います。
収入が気になるかもしれませんが、会社員の場合は傷病手当が受けられます。

詳しく書くと、長くなるので別のブログに書こうと思いますが、基本、無理をしないことです。

まとめ

今回は、「プログラマーでうつ病になる人は多いのか?」「プログラマーは何故うつ病になるのか?」について考えてみました。

結論として、プログラマーでうつ病になる人は多いです。

原因としては、プログラミングは、動かないことがよくあるため悩みも多くなり、ストレスも溜まりやすいのです。
また、システム開発は、プログラマーに依存しているため、プログラマーへのストレスも大きくなると思われます。

では、その改善方法としては、無理をしないで、適度に運動し、それでもダメなら、心療内科を受診しましょう。

プログラマーのみなさん、無理をしないようにしましょうね。

では、今日はこの辺で。

2020年8月14日金曜日

PHP初心者が勉強する方法は?


こんにちは。

最近、「プログラミングを勉強しています」という声をよく耳にします。

特にWebエンジニアを目指している方が多いようです。

Webエンジニアになるには、以下の技術が必要になります。
  • HTML
  • javascript
  • PHP
HTML、javascriptは、クライアント側で主にデザイナーが担います。

PHPは、サーバー側でエンジニアの仕事となります。

そこで今回は、PHP初心者へむけて勉強方法を書いていきます。

ちなみに、私は、組み込みエンジニアとして7年ほど、その後は、Webエンジニアとして10年ほど働いて来ました。

PHP初心者が勉強する方法は?


PHPを勉強する方法は、以下になります。
  1. 基礎を勉強する
  2. ソースコードを読む
  3. 実際に作業を行う
PHPに限らず、プログラム言語を勉強する方法は、上の3つになります。

では、詳細を以下で説明します。

1.基礎を勉強する


何をやるにも基礎は大事です。

なので、PHPの勉強も基礎からやっていきます。

まずは、Hello World からですね。

いろんなプログラム言語を習得している方でも、はじめはここから始めます。

理由は、使用する環境が正常に動作するかの確認です。

その後は、プログラミングの基礎の勉強をします。
  • 分岐
  • ループ
  • 関数
  • クラス
この辺ですかね。

PHPの基礎については、Webで「PHP 入門」と検索すれば、たくさん出て来ますので、そこで勉強すればOKです。

なので、ここでは細かく取り上げません。

2.ソースコードを読む


PHPの基礎が理解できたら、一旦、他の方が書いたソースコードを読んでみましょう。

この、「ソースコードを読む」を飛ばして、実際に作業をする方が多いですが、そういう方が書いたソースコードは、読み辛く、無駄な処理が多いです。

ソースコードは、同じ処理や同じような処理を、関数やクラスでまとめて重複しないようにするのが1番です。

そう言った方法は、他の人が書いたソースコードを読むことで身に着きます。

まずは、ソースコードを読んでいて読みやすいと思うソースコードを真似することで、自分でも読みやすいソースコードが書けるようになるのです。

また、プログラミング言語には、それぞれにコーディング規約があります。

PHPだとSRP-2ですかね。

コーディング規約を読むことも必要なのですが、いろんなソースコードを読んでいると、次第に身に着いてきます。

今では、githubなどで多くのソースコードが公開されています。

ここで必要なことは、ロジックを理解する事ではなく、ソースコードの書き方や、クラスのまとめ方を見るようにしてください。

3.実際に作業を行う


ここまで来ると、勉強はおしまいです。

実際に作業をしましょう。

最初は、難しいと思います。

実際の作業は、勉強とはレベルが違います。

しかし、勉強ばかりしていても、実績が着きません。

なので、実際に作業をしながら勉強するようにしましょう。

PHPには、標準でいろんな関数が用意されています。

Webで検索すれば出て来ますので、困ったときは検索するようにしましょう。

それでもない時は、ロジックから考えて作ることになります。

技術は本では身につかない


PHPなどのプログラミングもそうですが、技術と言われるスキルは、本を読むだけでは身につきません。

本で知識を習得したら、手を動かし実際にやってみる必要があるのです。

プログラミングを習得するなら、本を読みながら手を動かし、実際にソースコードを書いてみて動かしてみるのです。

最初は、動かないことが多いかもしれません。

でも、それを乗り越える事でスキルは身についていくのです。

そして、基礎勉強が終わったら、実際に作業をする必要があります。

上にも書きましたが、実際に作業としてプログラミングを行うと、壁に何度もぶつかります。

それを、一つずつ乗り越える事で、実績が積み上げられるのです。

まとめ


今回は、PHP初心者が勉強する方法について書きました。
  1. 基礎を勉強する
  2. ソースコードを読む
  3. 実作業を行う
この方法は、他のプログラミング言語を勉強する時も同じです。

コツコツと勉強することができれば、数ヶ月で実際に作業ができるまでに成長できます。

でも、モチベーションが保てなくて挫折する人も多いです。

そんな時は、お金を払ってプログラミング講座を受講するのも良いと思います。

お金を払って勉強しても、実際にプログラマーになれば、すぐに元が取れますし、勉強するモチベーションも保てると思いますよ。

では、今日はこの辺で。