はじめに
2019年、私ははれてプログラマーになりました。メインの使用言語はC#。そうは言っても他の言語はからっきしわからないのですけれど。
この記事は、プログラマーになってから私は何に困ったかをつらつらと記していくものです。これがプログラミング始めたての方々にも当てはまるかどうかはわからないですけれど。7, 8割は自分の振り返りとして、1割はQiita初投稿という趣旨のもと書く記事です。残りの1, 2割でお役に立てますかね...?
困りごと
言葉がわからない
「メソッド」って何?「プロパティ」って何?といった具合に、そもそも「オブジェクト指向」とは?さらに言うと「データ」とは?何か質問をし、答えを聞くにしても、こういった単語の意味がわからないがために答えてもらった内容の意味が結局わからないなんてことになってしまいました。何のための時間だったんだろう。意味を調べてからどこかのタイミングで再び聞くことに。
時間がかかる
私自身とにかく頭が固いのもあるんですが、ある処理を記述しようにも長いときは数時間単位で手が止まることがしばしば。その昔受験勉強の際には「あれこれ自分の頭で考えろ」と言われ、1つの問題に熟慮することは多かったのだけれど、プログラミングの世界においてそれは不適な手段な様子。確かにわからないものはわからないですし、そうなったら調べるなり聞くなりさっさとしましょうね。
どうやって調べるの?どう聞くの?
止まったらさっさと調べにゃならん、さっさと聞かにゃならん。それは確かに私もそう思うのですが、問題は何を?どうやって?これがまた難解。「自分が何をわからないのかがわからない」この状態になることが多いこと多いこと。一言に「○○がわからないですぅ」と言ったところで「何がだよ」と返されるのが関の山。困りました、何を聞きましょう。これでまた時間が延びること延びること。
スケジュール感
時間無制限で進められる作業というのは往々にして存在せず、「今自分が進めている作業はどれくらいで終わる?」と、いわゆる納期を定める必要があるのですが、何にどれだけ時間がかかるかの感覚がわからず、後から「やっぱりもう少し先に延ばしてください...」と言う羽目に。あるいは作業の中身にわからないことがあると手が止まり、後から「やっぱりもう少し先に延ばしてください...」と言う羽目に。
こいつらが未だに解決できていない
私にとっては、もうこれに尽きる。
自分なりにやってみたこと
とはいえこれらに対して全くの無抵抗というわけでもなく、自分なりにやってみようとしたことはあります。本当にそれが意味をなしているのかどうかは...どうなんでしょう。
- 単語帳を作る。
「クラス」とか「プロパティ」とか、ものによっては単語の意味だけではなくサンプルソースコードで示してみたり。
namespace oop //*1
{
public class Cars() //*2
{
//*3
string maker;
int emissions;
string color;
}
}
*1 名前空間
*2 クラス名
*3 プロパティ
(参考:初心者向けに徹底解説!オブジェクト指向とは? URL:https://eng-entrance.com/what-oop)
- 時間を決める。
よく「15分考えてわからなかったら調べるなり聞くなりしましょうね」という話は耳/目にするので、そのあたりの意識を持つようにはしました。これはプログラミングに限らず、1作業についても30分やって5分休むといった形を取ってみたり。
- 「調べ方」、「質問の仕方」を調べる。
技術的な話題について行けるほどの力量がなくてもQiita漁りは結構楽しいです(仕事しろ?)。なぜなら「勉強法」であったり「方法論」的な位置付けの記事も多数上がっているから。「なるほどそういう考え方もあるのね」「やってやろうじゃねぇかこのヤロー!!!」そんな気持ちにさせられます。以下にそんな記事をちょっとご紹介。
- プログラミングでよく使う英単語のまとめ【随時更新】(https://qiita.com/Ted-HM/items/7dde25dcffae4cdc7923)
- 個人的に超絶為になったので新人エンジニアに勧めたい記事まとめ(https://qiita.com/shimajiri/items/501828dc8d589e214470)
- [あるある]「詰まったら、すぐに質問してください」の克服法(https://qiita.com/yasuX/items/bca386bc47322f22072a)
- プログラミングで一番難しいのは「見積もり」だと思う(https://qiita.com/yuno_miyako/items/8678cd542fbb7050e40e)
- 新人プログラマに知っておいてもらいたい人類がオブジェクト指向を手に入れるまでの軌跡(https://qiita.com/hirokidaichi/items/591ad96ab12938878fe1)
- 進捗がなかったらメンターが現れるATOM(https://qiita.com/iwamatsu0430/items/8e19995d3eedf1d6a823)
他にも探せば面白い記事があると思います。文章の書き方についても参考になりますし。
- 聞き方を変える
単に「○○がわからない」という聞き方をしても、結局その問題の所在がわからない、だから有効な回答を得ることができない。これを回避する一つの方法として、「自分はこうしたい」という自分なりの理想の状態を投げかけることは有効だと思います。コードを書くにはその目的や意思があるはず。それがないなら「そもそもその機能必要?」という問いかけによって解決するかもしれないですし、「こうしたいから、こうやってみたけど、こうなってダメ」と言葉にすることができれば原因の特定は確かにしやすいですね。単語の意味であったり自分が引っかかっているところについて言葉に表すことがある程度できるようになるのは、自分の中では大きいです。
- 菠薐草
ほうれん草ってこう書くんですね。言ってしまえば「できないものはできない。無理なものは無理」だと割り切ってしまい、それをちゃんと相手に伝える。これをしないとやっぱりダメですね。解決策というわけではないですけれど。
まとめ
結局のところ、困っていたことと言えば「技術不足」というより「進め方」です。自分なりに対策を考えてこそいても、「あれやってみよう」、「これやってみよう」、「あ、これ参考になるな」で終わっちゃダメですよね。これらを自分のものにし、あるいはするに値するかを検討し、自分に必要な能力・仕事をしっかりと見極め、その上で実践をする。それができるようになれば私は多少ましになるんじゃないかな、と思いながら頑張っていこうと思います。
いずれは技術的に興味深いような内容も投稿できたり、それこそ初心者向けの記事も書けたらいいなって思います。