おはようございます。
IT関係を生業とし、プログラムは20年以上作っているぷるぷるほっぺ家族パパです。
実際にはいろんな業務をこなしているので、プログラムだけをやってきたわけではありません。
運用も設計も実装も、サーバーやクライアントの管理まで様々なことをこなしながらやってきています。
これは小さな会社なので、大変な面も、楽しい面もあって、なんとかやってこれたというのが正直なところです。
私が長年IT関係で仕事を続けてこれたのは、プログラミングのスキルがあったからです。
コンピューターでは、プログラムで物を作れると解決できることが多いですよ。
知っているだけで重宝がられ、感謝されるのです。
これからプログラムを学習しようとする初心者の方にアドバイスがあるとすれば、「最先端を目指して挫けるよりも、実際に使えるスキルを身につけていって欲しい」と言うことです。
もちろん、大きなプロジェクトチームの中で働く、デキる人はその道をどんどん進んでもらうべきです。
そういうデキる人はどこかにヘッドハンティングされたりして、すごい仕事に突き進んでもらいたいですね。
でも出来る範囲をうまく活用して、自分の仕事をきちんとこなしていけば充分やっていけますよ。
出来ることが見えていると、意外にも職業としてやっていくことが出来るものですよ。
私は大したスキルもありませんが、20年以上IT・PC関係を仕事にして働いています。
もちろん、常に新しいことを学習・チャレンジして見分を広げていく意識は必要です。
広く深すぎないけど浅すぎないように、日々勉強していく覚悟が必要です。
プログラミングは簡単で難しい
プログラム言語の基本は文法と概念です。
言語によって作法が違うので、言語に合わせないとプログラムが組めません。
実際には以外にも人間臭い問題や悩みがあるのです。
仕事をしていくには当然と言えば当然なのですが・・・。
プログラムは簡単
文法さえわかれば、簡単なプログラムさえ組めれば、なんとなくやっていくことも可能です。
最近の私は都度ググって思い出しながら解決しているのが現状です。
それでも実用的に組めるプログラムはたくさんあります。
長年やっていると、コツをつかんで適当に作るようになります。
難しいことはしないのですが実用的なプログラムはそんなものです。
そのような面で考えると、プログラムは意外に簡単です。
特に近年は検索でほとんどの答えが導き出せるので、(数年前のように)悩んで数週間困ることは殆どなくなりました。
でも、仕様変更やバグ潰しには知識が必要ですし、テクニックも必要ですよ!
プログラムは難しい
プログラムを書いているときに大事なのは、組み方やアルゴリズムです。
つまり目的に達するための手段と方法が重要で問題です。
ある程度、定石的なものがあるような場合もありますが、目的にたどり着くまでに遠回りしていたことも何度もあります。
私の場合、きっちり考えが決まらないまま、バックアップも取らずにプログラムを変更して、うまくいかなかったことも何度もあります。
目的への到達手段が見定まらないと、プログラムを組むことも出来ません。
私のようにすべてを自分で決めなければならない場合は特にそうです。
自分自身が分からないものは作れないのです。
しかし、立場によっては、マネージャーが決めた仕様を作成するだけの仕事もあるでしょう。
プログラマーという仕事ですね。
そのような場合には問題はありません。
相談も出来ますし、皆と一緒に仕事をするので、モチベーションも保たれます(と思います)。
そのような方は、これからもどんどんスキルアップしていけます。
ただ、自分の思い通りに仕事をするのは、そのままでは難しいか、或いは無理です。
業務用のプログラム
業務では、無駄なことをいちいち組み合わせないとユーザーのニーズに応えられないなどと言うことも多々あります。
説明しても分かってもらえなかったり、頭の固い上司もいるわけですから、「こうすれば簡単」と言うのが通じない時もあるわけです。
私のような小さな会社で働くと、そういう意味で設計の難しさと楽しさがあり、やりがいがあります。
プログラミング学習は独学でも良い
プログラムが組めるということは、「理系で勉強が良くできた」と言われるのですが、私は真逆でした。
高校時代、数学のテストで、本当の「0点」を取ったこともあります。
実際に0点を取ったと言う人は、意外に数少ないと思います。
私は大学こそ卒業していますが、文系です。
数学も好きでしたが、ある理由により高校の途中で勉強しなくなりました。
つまり中学までの数学しか頭に入っていません。
そんな私がこの業界で20年以上仕事をしているのですから、きっと皆さんにも出来るはずです。
過去の学校の成績は関係なく、独学でプログラミングをしていくことは出来ますので安心してください。
出来れば頭が柔らかい方が良いですが、私の経験上いくつかポイントがあります。
英語は必要です
ただ一つ、勉強では無いですが重要なことがあります。
それは英語力です。
英会話が出来るほうが良いとか、そういうことではありません。
(もちろん出来るほうが良いに決まっています)
英語が理解できると、プログラムの理解が早まります。
業界では、(世の中と同じように)英語が標準で使われています。
サンプルを見るにも、ググって解説を読むにしても、ほとんどが英語です。
そもそも、勉強するのは人間が理解しやすいよう(高級言語と言います)でしょうから、アルファベットで記述します。
予約語程度なら覚えればよいですが、変数も英語の意味が分かるほうが助かります。
いちいち辞書片手に学習していたら、少し大変です(私はそんな感じですが)。
もちろん、日本語で教えてもらえる場所はたくさんありますし、入門書もたくさん発売されています。
当初は英語がそれほど分からなくても、問題ありませんので安心してください。
ただ、長くやっていくと、途中で必ず英語力が必要になります。
英語力が無いと困る瞬間が出てきます。
最新の情報をはじめ、様々な問題や技術は、日本語より英語で議論されている量が圧倒的に多いのです。
だから英語力が必要なのです。
私も、Google翻訳である程度分かって何とかなっているのですが、翻訳なしで分かればもっと格段にスキルは上がっています。
諦めのタイミング
学習していくにあたって、きっと理解に苦しむ内容が出てきます。
その時にどのように対処するかという話です。
参考書によくあるのですが、「はじめにいつもの呪文を入力しましょう」と言ったものが出てくることが多いです。
もちろん、意味があって入力するのですが、当初は知らなくても良いものがあるわけです。
上の話はひとつの例として出したのですが、そのようなところに引っかかって調べて行くのも良いですが、後で理解できるようになるまで放っておくのも手です。
唱えれば動く呪文なのですから。
何故ならば、プログラムは再帰的にややこしくなる面があるのです。
卵が先か鶏が先かと言うことです(実際は順がある場合が多いですが)。
気にせず進む勇気が必要な時があるのです。
プログラミングを学習する気持ちが強いほど、引っかかったり、難しくて理解できないことを考え、理解しようとしますが、必ずしもそればかりが正解ではない場合もあることを覚えておいてください。
いつも諦めろと言いたいわけではありませんが、たまには諦めて次に進むようにしてみても良いかもしれません。
独学の問題点
入門書や参考書を片手に勉強していくことは出来ます。
私は独学でやってきました。
前章でも書きましたが、本などに書いてあることが理解が出来ず、立ち止まってしまうことが良くあります。
そんな時は一日置いて再度考えてみたり、読み飛ばして後で考えてみたりしました。
それでも分からないこともたくさんありました。
今でも、独学でやってきたがゆえに理解できていないことがたくさんあるわけです。
Webで検索して分かれば良いのですが、往々にしてそういう問題ではないことが多いのが現実です。
Webで相談したりしている人もいますが、うまく説明できることと、そうでないこともあるので注意が必要です。
Webで、文面にクレームつけられても困りますし・・・。
周りに相談できる人がいれば、即解決できますよね。
他のことも相談できるでしょうし、有難いこと、この上無し!
一日たってから、もう一回考えるとかしないでも、分からないことがすぐに解決するんですから!
自分の学習の進み具合や状況が分かってくれる人がいるのは、本当に助かりますよ。
私は人見知りの面があります。
気軽に相談できれば、分からないことが分かるかもしれません。
そのような期待もあってソフトハウスに就職をしましたが・・・・まぁそれは良いとしましょう。
文法はともかく、独学だけでプログラム業界に通用するのは難しいと思います。
プログラミング講座を利用すれば、私のようなおかしなSE?エンジニア?技術者?にはならなかったはずです!
独学でも、プログラミングの学習に問題はありません。
でも私のように、ある種の自信がないまま仕事をするのはどうかと思われる方は、是非プログラミング講座を活用してください。
払った分は、就職後の給料としてだけではなく、自信も手に入れられるわけですから損はありません。
実はUIこそ重要
ユーザーが目にする部分(UI)と操作性が重要です。
最終、UIができていれば問題ないのではないかと思うことすらあります。
少々、プログラムの出来が(プログラミング的に)悪くても、ユーザーの感じる使いやすさ・分かりやすさに勝るものはありません。
計算処理時間をプログラムで1秒早くするより、UI・操作性の分かりやすさを改良する方が、ユーザー受けもよく、評価も高くなります。
これはプログラミングができる人ほど、見た目は気にしないという悪しき習慣ですが、事実なので気に留めておいてください。
何が伝えたいかと言うと、UI・操作性もプログラムの一部だということです。
Microsoft(Windows)が多く採用された結果で開発作業が「見た目部分」と「中身の処理(バック)部分」に分業になった影響ですが、見た目も大事ということです。
私のように何もかも自分でやるような仕事は、すべては自分で開発しなければならないので分かることではありますね。
学ぶ言語を選ぶには
あなたは何を目指して学ぼうと考えているのでしょうか。
ゲームを開発したいとか、ソフトが作りたいとか、サービスを作りたいとか、何にしてもそのやりたいことを実現する言語を調べて学習します。
最近では言語の学習ではなく、ツールの操作を覚えれば出来ることが増えてきているようなことも多く、何がどこまでプログラミングと言えるのかも難しくなってきています。
目標の定まった方は、調べれば自然に学習すべき言語が分かると思いますので、それを学習すればよいでしょう。
勉強する言語が決まっていない人は
おすすめはHTML・CSS、そしてPHP・JavaScript
転職などを検討していてプログラムを勉強しようと思っている方や、将来のためになんとなくプログラムを学習しようと考えている方もいらっしゃるでしょうか。
何を勉強すべきか悩んでいる初心者にお勧めするのは、「HTML」「CSS」です。
Webページを作れる勉強をしましょう。
そんなの簡単だという方は、「PHP」「JavaScript」学習をしましょう。
Web全盛と言われて長いですが、それでも尚Web関係の仕事が無くなりそうにはありません。
サーバー側処理としてPHP、クライアント側の処理でJavaScriptがあれば、結構なシステム構築も可能です。
Web系は、まだまだ何年間も使えそうですよ!
パパの場合はC++でした
元々「C++」を独学で学習し、「HTML」「PHP」「CSS」「JAVA」「JavaScript」など、なんでもかじってきました。
学習してないですが、「Perl」「VB(VBA)」「Python」など、いくつかの言語をその場で触ったりもします。
私がC++を学習したのは、C++の本があったからです。
「Cマガジン」と言う雑誌もありました。
大量に持っていましたが、まとめて捨てた記憶があります。
Basicの本もありましたが、ベーシックと言う名前が気に入らなかったのです。
ほぼそれだけの理由です。
しかしC++を勉強したおかげで、王道の作法・文法が学習出来て、そのスキルが今も生きています。
(C言語の文法と言うべきかも)
柔軟な考え方で望みましょう
プログラマーとは職人気質なものですが、やはりそれだけでは向上しません。
私は長年SE的に働いてきましたが、失敗や経験がものをいう職種であることは確かです。
ゲームプログラマーはゲームプログラマーの、組み込みソフトプログラマーは組み込みソフトプログラマーの失敗や経験があり、それが次のステップに繋がっています。
仕事や内容に差はありますが、すべて柔軟な考え方で物事を受け入れ、前に進むしかありません。
何事も脳内実験する余裕をもって臨みましょう。
デジタルだが、奥が深い仕事である
コンピューターはデジタルなので0か1しか無いので、正解か不正解かしかありません。
しかし実際には問題が複雑に絡んでややこしいこともあります。
バグやエラーがはっきりわかる設計も必要です。
単純なものが繋がって奥の深いものになっています。
奥が深いということは、大変でもありますし、楽しくもあるということです。
頑張りましょう。
コメント