私がWebエンジニアになるまで(前編)
// 目次
$table_of_contents = [
"はじめに" => "はじめに",
"はじめてプログラミングに触れた大学時代" => [
"C言語でプログラミングの授業",
"卒業研究でどのようなプログラミングを書いたか"
],
];
はじめに
スタートアップでテックリードをしています。horiです。Webエンジニア歴4年目です。
最近、「未経験からWebエンジニア」という言葉をよく聞きます。
今はどんなにすごいエンジニアでも、最初は誰でも未経験です。ただし、色々なパターンがあるでしょう。
・業務で初めてプログラミングに触れる人
・学生時代に授業や研究でコードを書いてきた人
・個人でサービスを開発してきた人
・progateなどのオンラインサービスで勉強してきた人
私自身は理系の院卒であり、授業や研究やインターンで就職前にプログラミングの経験がありました。
Webエンジニアを目指している人や興味がある人は、現役のWebエンジニアがどのようにプログラミングを勉強したか、どのような業務を経験してきたかに興味があるのではないでしょうか。
また、プログラミングをしていると様々な問題が出てきます。
・既存のコードが複雑で読めない
・バグがたくさん発生してしまう
・言語、ライブラリ、フレームワークなどの技術選定をどうすべきか
・チームの開発スピードが上がらない
上記のような問題は業務を通して経験してみないと知ることが難しいです。プログラミングをどのように勉強したかだけではなく、どのような問題が出てくるかを知っておくことも重要です。
今回、私が初めてプログラミングを書いたときから、新卒1年目までを振り返り、私がどのように未経験からWebエンジニアになったかを書くことにしました。それを通して、実際の業務では何が重要なのかを伝えられればと思います。
本記事は大学卒業までです。今後、大学院時代や新卒一年目の振り返りを記事にする予定です。
こんな人に読んでほしい
・プログラミングに興味がある
・Webエンジニアを目指している
はじめてプログラミングに触れた大学時代
私が初めてプログラミングを書いたのは、大学のC言語の授業でした。以前からプログラミングに興味があり、授業が始まる前は楽しみではあったのですが、型やポインタなど覚えることが多いことに加え、冗長な書き方を強いられるC言語に苦しみます。
その後、研究室で数値計算をするプログラミングをC言語で書きました。この時、C言語である程度のコーディングはできましたが、メンテナンスしやすいコードを書くスキルがなかったため、なぜバグが起きているのかが分からず、自分で書いたコードに悩まされます。
振り返ると、学生のときに身につけたプログラミングの基本的な文法は、今も役に立っていると感じます。基本的な文法とは、forループやif文やwhileなどです。
一方、Web開発に不可欠なMySQL などのデータベース、Apacheやnginx等のWebサーバーには触れなかったため、まだまだ、Webエンジニアまでの道のりは長いという状態でした。(当時は目指していませんでしたが。。)
C言語でプログラミングの授業
私がはじめて触れたプログラミング言語はC言語でした。
初めてプログラミングしたときに思ったことはおまじないが多いということです。
実際にコードを見てみましょう。はじめて書いたコードは、画面にhelloと表示するだけのプログラムでした。おそらく、以下のようなコードだったはずです。(動作確認をしていないので、動くかどうかわかりません。)
#include <stdio.h>
int main (void) {
printf("hello");
return 0;
}
まず、私は一行目で躓きました。結局、一行目はおまじないという理解で次の行に進みます。。void.. 二行目もよくわかりません。。という感じで、一行ごとに分からないことが増えていきました。なんとなく、printfがhelloを表示しているのでは?という予想はできましたが。。
最初は分からないことだらけでしたが、だんだんコードが書けるようになりました。授業では、forループやif文やwhileを使って、ニュートン法で二次方程式の解を求めたり、巡回セールスマン問題を解いたりなど、よくあるアルゴリズムを実装し、その結果をcsvファイルに出力するという課題が多かったです。
授業で課題を通して、プログラミングの基本文法は使えるようになりました。
また、文字列の数字と計算に使う数字は、プログラミングの世界では別のものとして扱うという型の概念を理解しました。もちろん、今でもif文などは使いますが、授業でやったアルゴリズムは、Web開発ではあまり使わないというのが本音です。もちろん、覚えておいて損はしないですし、開発するアプリケーションによっては、必要になるかもしれませんが。
卒業研究でどのようなプログラミングを書いたか
大学4年生になり、研究室に配属され、私の研究テーマはサプライチェーンマネジメントに決まりました。サプライチェーンとは、商品が材料から消費者に届くまでの一連の流れのことであり、その一連の流れのなかで、「どうすれば、コストを抑えて利益を最大にできるか。」などの経営課題を解くための手法として使われます。
私が取り組んでいた研究テーマは、ある企業が利益を最大化するために、商品の発注費用、発注数をどのように設定すれば良いかという問題でした。
この問題を解くためには、利益を数式で表現し解く必要があります。また、数式にはいくつもの変数があるため、手計算で解くのは難しく、数値計算をするプログラミングを組む必要がありました。
実際に出来上がったプログラミングは以下のようなforループが何重にもネストされているコードでした。
for (int i = 0; i <= 100; i++) {
...
for (int j = 0; j <= 100; j++) {
...
for (int k = 0; k <= 100; k++) {
...
for (int l = 0; l <= 100; l++) {
...
}
}
}
}
約1ヶ月くらい時間を掛けて書いたコードなので、実際のコードは1000行くらいでしょうか。その長さのコードが1つのファイルに書かれていました。
当時の私はメンテナンス性の高いシンプルなコードを書く知識やスキルがなかったので、コードを書けば書くほど、コードはどんどん複雑になりました。それゆえ、バグや仕様変更でコードを修正するとき、どこをどうすれば良いのかを考えるために時間が掛かってしまいました。また、git等のバージョン管理を使っていなかったため、コードをどのように編集したかがわからなくなってしまうこともしばしば。。
無事にプログラミングを書き上げ、卒論を完成させることができたのですが、良いコードを書くにはどうすれば良いのか?という課題は残りました。この課題は全てのプログラマーにとって永遠の課題なのではないでしょうか。
参考 : サプライチェーンマネジメント(SCM)とは何か? 基礎からわかる仕組みと導入方法
大学時代まとめ
大学の授業や研究を通して、数値計算をするためのプログラミングを書くことができるようになりました。
forループやif文やwhileなどの基本的なプログラミング文法や型・ポインタなどを理解できれば、C言語でそのようなプログラミングを書けるようになるでしょう。
一方、Webサービスを開発するためには、
・ネットワーク(TCP/IPなど)
・Webサーバー
・データベース(MySQLなど)
・HTML
・CSS
・javascript
・phpまたはRubyなどのサーバーサイドの言語
・オブジェクト指向
・gitなどのバージョン管理
・フレームワークの概念
・vimのバインド (興味ある人はぜひw)
などを理解し、使えるようになる必要があります。
また、これからWebエンジニアを目指す方には、最初に触れる言語としてC言語はおすすめしません。Webサービスを開発するとき、C言語を読み書きする機会はほとんどないからです。(MySQLなどのソースコードを読む必要があるときは、読む必要がありますが。。)
初学者には、phpやRubyがおすすめです。macでterminalを開くだけですぐ始められるからです。ブラウザさえあれば動く、javascriptもおすすめです。
次回、大学院時代から新卒一年目までを書く予定です
本文は以上です。投げ銭記事なので、よろしければ応援よろしくお願いします!
ここから先は
¥ 200
この記事が気に入ったらサポートをしてみませんか?