初心者と経験者でプログラミングで詰まったときの対応で何が違うか(具体的方法論)
こんにちは、滝中です。
タイトルの通り、経験者は何が違うのか、わかりますか?
ここで言うプログラミングとは、関連する様々なことです、インフラのインストールなり、設定なりも含んでます。
経験者的には当然の話ですが、挫折しがちな未経験の方にはメンタルコントロールの面でも役に立てるかもしれません。
そもそも経験者がそんな詰まることがあるのか?
普通に詰まります、ハマります。
これは別に普通のことで、例えば新しい技術を使う時は、当然ですけど知らない知識があるわけで、そのせいで詰まったりはするんです。
ただ、経験者はそのことをよくわかっているので、なるべく早くその詰まりから脱出する。もしくは仕切り直すための方法を経験的に取得しているのです。
結論
ずばり言うと
必ず戻れるチェックポイントを確保(or 意識)しながら進めている
です。「必ず戻れるチェックポイント」とは、ここまではちゃんと動いてるなと思える場所です。つまり詰まる前に勝負は決まってるんですね。
初心者でも経験者でも新しい知識、技術を習得しようとしてる時は、そもそも何故動いてるのかとか、全体像がわかってないんですよね。
なので、詰まったり、ハマったりすると
「なぜ上手くいかないかわからない、、、」となります。
もっと言うと
「"どこから"上手くいってないかがわからない、、」となるんです。
戻れるチェックポイントを用意してないと、極端な話インストールからやり直しになります。
「ここからよくわからないジャングルに入るんだ!」という意識と準備があると、危なくなったら戻ってやり直すことができるのです。
そうしないと、場合によっては上手くいっていた所もやり直しになってしまいます。時間が無駄になり、メンタルが削られるという未経験の方的には挫折する要因になりかねません。
具体的方法
方法と言っても非常にシンプルで当たり前のやり方です。
1 ) バックアップを残しておく
2 ) 頭の中に変更履歴を記憶しておく
3 ) 変更内容をメモしておく
しょぼいと思います?でも大事なことなんです。当然のことですが、一つ一つ説明していきましょう
1 ) バックアップを残しておく
これは基本ですね。何かあっても、復元すれば元どおりな状態を作っておくと言うのは、本当に心強いです。
プログラミングなどのエンジニアリングは、基本的に、触って、コマンド叩いてみないと体得できないモノですが、変なコマンドを打つと戻せなくなってしまい「詰んだ!!!!」となることもあります。
私の昔の例で話をしましょう。
私は昔、Subversionと言うレガシーなバージョン管理システムを使ってましたが、あるプロジェクトでGit(Github)を使うという話になり、初めて使うことになりました
(戦前の話かな?)
Gitは色々なことができますが、Subversionを使っていた私は、なかなか理解しづらい、、と思うことも多かったです。
そして、なんだか危ない気配も感じ取ってました、、。
「これは下手したら今俺が書いたコードとか消えちゃうんじゃないか?」
あり得る話です、慣れてないとやりかねません、、。
さてこう言う場合はどうすればいいでしょうか?
簡単ですね、プロジェクトのディレクトリごとコピーして別で保存しとけばいいのです。
「だ、、だせぇ、、、」
でもこの行動があなたを守ることが沢山あります。
動かなくなった、消えた、元に戻すのが大変ってなってからは遅いのです、、、。
・設定ファイル
・インフラ仮想環境のイメージ
・データベースのバックアップ(ダンプ)
これから変更を加えて動かなくなる可能性のあるあらゆるもの、、、。
慣れてくるとチャレンジする手前でバックアップをとるようになりますが、そもそも未経験の方は全てがチャレンジだと思います。
なので自分が「できた!動いた!」と思ったポイントでバックアップをとると最初はいいかもしれません。
2 ) 頭の中に変更履歴を記憶しておく
3 ) 変更内容をメモしておく
どういうことか?「それって結局覚えてるだけなんじゃ、、」って話ですが、意識してないと保持し続けられないので、個人的に重要なポイントだと思っています。
物理的なバックアップを残しておけるレベルならいいけど、そうではない話の場合は、意識の中などにチェックポイントを作らないといけなくなります。
そう言う場合は、「変更したファイル名」「変更箇所」などを頭のメモリーの中に保持し続けながら作業をします。
もしくはそれが膨大でメモリーに保持し続けられないなら、メモをしましょう(gitなどでバージョン管理してれば、git statusやgit diffなどのコマンドで差分や変更ファイルは見れますので、そういうのも活用するといいですね)
「何を直したかわかんなーい」と言う状態を回避して、最悪元に戻せるようにしときましょうという話です。
正直メモしたりするのは面倒なので、私は頭のメモリーに保持しながら作業することが多いです。
終わりに
経験者には当たり前すぎることですが、無意識にやっていることです。
・「チェックポイントからかなり離れてるな、、、」
→ なので慎重に or 一度チェックポイントを作る
・「とりあえず全部戻す覚悟で色々やろう」
→ なので全部戻ってもメンタルは保てる
などと考えながら作業しているのです。そう、ある意味メンタルコントロールの術でもあるんですね。
最近エンジニアを目指す人が増えており、そして挫折する人もたくさんいるようです。
エンジニアがたくさん生まれて、(私たちのような)小さいサービスにもいずれジョインしてもらえるといいなぁと思っております。
以上