プログラミングを独学で学習していると書籍を見ていてもあまり理解できず、コピペで進んでいると一つ理解できなくなって全て詰まってしまうということもありがちです。
プログラミングは一つずつ理解していくほうが最終的に実装出来るようになるスピードは早いと思います。今回はプログラミングを学習したことがある、もしくは現在エンジニアをしているという方に各言語で苦労した点や詰まったポイントについて聞いてみました。
このページの目次
プログラミング経験者から学ぶほうが早い
学生時代にC言語,VHDL言語を学びました。また、社会人になってからはiOSアプリを作成してみようと独学でiPhoneアプリを作るためにSwiftという言語を学び、現在進行中です。
Swiftのプログラミングを無料で体験レッスンを受けてみた結果はこちらにまとめてありますので、iPhoneアプリ開発に興味がある方はこちらも合わせてどうぞ。
学生時代の人生初プログラミングであったC言語で詰まったところとして、Printfで「Hello World」を表示させる簡単なプログラムでした。何故「Hello World」と表示させるのか意味がわかりませんでした。その疑問自体が直接プログラミングに関係無いことが当時は全く意味がわかりませんでした。
また、言語ですので、文法を学びますが文法書を読むのがかなり苦しかったです。プログラムしたことのある人から、直接PC上でプログラムしてコンパイル・実行しているのを見て学ぶ方がかなり効率的だと思います。
プログラミングでいうと配列が難しかった
今まで学んだことがあるのは、HTML/CSS、JavaScript、VBScript、PHP、ASP.NET、jQueryなどです。
理解するのに時間がかかった点は、配列です。
変数の概念はすぐ分かったけれど、配列は、ひとつの変数になぜ複数のものが入るのか、プログラミング上どういう利点があって配列というものがあるのか、理解するのが難しかったです。
実際にプログラムを書くうえでも、ここは配列を使ったほうが良いというところでも、よく分からずに無理やり変数を大量に使っていたりしました。
今は分かるようになり、活用していますが、初心者にはなかなか難しい点だと思います。
添字が1ではなく0からというのも、難しく感じた
添字が1ではなく0からというのも、難しく感じる一要素だったように思います。
中学時代にBasic、その後大学でC言語を学び、その後ツール作成のために自主学習にてPerl、Unixのシェルスクリプト等を学びながら使っていました。
当初の学習段階ではポインタや、ポインタのポインタ、等についての考え方に関して若干躓くところがありましたが、後に実践を重ねる中で、徐々に理解を深めることができました。
C言語歴4年程の段階で趣味でC++を始めたり、さらに後になってからObjective C等を触ったりしましたが、オブジェクト指向の考え方にの理解が薄く(ニーズ的に、Cで実現できてしまう内容が多かったので覚える気が薄かったのかもしれませんが)、C言語ベースで記述してしまうところがありました。
HTML・CSSの書き方のパターンを理解することに詰まりました
HTML・CSS・JavaScriptを学びました。
Webデザイナーになり、Webページを作る仕事をすることになったので勉強し、
今ではHPやwebサイトのコーディングに活かしています。
最初はHTML・CSSの書き方のパターンを理解することに詰まりました。
その次はHTML・CSSを完成させた時、ブラウザごとに表示が違うバグを見つけ、その修正することでつまづきました。
この修正は今でも煮詰まることがあります。
JavaScriptでは自分が組み立てたプログラムの構想が思うように実現できなかったり、構想すら思いつかない時があります。
何度も考え直し、より質の高い、正常で軽いプログラムを書くことを今でも目指しています。
独学で学んでもコードが最適解か不安な時がある
私はプログラミングでPHP、HTML、CSS、javascriptを独学で学んできました。今はネットに情報があふれている時代ですし、書籍もたくさんあるので、学んでサービスを作る際に詰まるというところは少ないように感じます。
ただし、書いたコードが最適解か?という部分に関してはレビューを他人がしてくれるわけではないので自信を持てない部分があります。
独学で学ぶことはできるけれど、それが仕事につながり、業務として通用するかは別の問題になるので、そういった意味では自分のコードが実務レベルでどうかという部分に不安を感じます。また、セキュリティ的にどうかというところは専門的でわかりづらいため、せっかくサービスを作ってもそれが安全かどうか不安に思うことは多々あります。
直接現役のエンジニアに動画を用いてサービスを見せながらどういう実装をすればいいのかを教えてくれるコードキャンプはおすすめです。サイト制作も29,800円からと破格の金額で教えてくれて、理解度も上がります。さらに無料体験レッスンも行っているので、ぜひ試してみてはいかがでしょうか。
クロスブラウザの対応に苦労
C言語、HTML, CSS を学んだことがあります。C言語でいえば、やはりアドレスとポインタ。構造体をポインタで別関数に渡すところとかですかね。視覚的にイメージがつかなくなると、少し追いつくのが大変です。そういえば、Javaもほんの少し学んだのですが、Cの考え方が身についてしまうと逆にオブジェクト指向をとらえるのが大変だった印象があります。
HTML,CSSでいえば、クロスブラウザの対応に苦労した思い出があります。当時はIEとfirefoxくらいでしたが、こちらを立てればあちらが立たずで、整合性をとるのに大分苦労しました。margin paddig float。ここらへんが特に難しかったです。
余談ですが、これらを仕事にしてみると、大変なのは技術
でないこともわかりました。ワークフローが整っていない。
そもそもワークフローの概念がない職場もありますので、
一番大変なのは「人」だなぁと(笑)
高級言語&OSでは容量オーバーしてしまう場面もありこの部分でも調整が難しかった
C言語を学んでいて、それは組み込みマイコン用ソフト(アセンブラからC言語への置き換え)を作っていました。
詰まったところは、もともとはアセンブラで書かれていたソフトを、高級言語(C言語)&OSに置き換える作業で、アセンブラでは当たり前のように制御できる処理が、高級言語&OSでの実現は難しい場面があった。例えば、顕著な処理としては、リアルタイム時間管理制御があげられます。
とくに高級言語&OSを採用している場合などであると、よりリアルタイム制御を実現するのが難しいと感じました。あわせて、ROM容量に関してもアセンブラで問題なかった容量が、高級言語&OSでは容量オーバーしてしまう場面もありこの部分でも調整が難しかったです。
プログラミングには、頭の若さが必要だと思った
某IT企業にいた関係から、マシーンランゲージを中心に、コボル、フォートラン等多くの言語を学びました。従って作成したプログラムは、会社の方針からナショナルプロジェクトと呼ばれる大型システムに使用するものでした。
代表的なのは、銀行関連、リゾート施設、新聞社の記事検索などがあります。変わったところでは、新聞社の記事検索用のシソーラス辞書作成があります。
これはコボルでのプログラミングでしたが、小回りが利かずおおいに苦労しました。膨大な新聞記事の中から、必要とする記事を探すすとき、ダイレクトに例えば「都知事」と入力して探すと、都知事が中心となり、関連する都議会やオリンピックといった関連記事が抜けてしまう可能性があります。それを防ごうと考えられたのがシソーラス辞書です。酒であれば日本酒やウィスキー、ワインが関連します。従って辞書は膨大になります。
いまでは、効率の良い辞書が開発されていますが、私が携わった頃は日本語辞書片手にプログラミングしました。
デバッグのため徹夜、徹夜の連続ではありましたが、一応の成果が出たときは正直ほっとしたものです。プログラミングは、苦労を厭わず考えに考え、積み木のように、崩れたらもう一度試す。この連続で頭の若さが必要と痛感しました。
上場企業の有名IT企業でのエンジニアの年収はこちらにまとめてあります。
スピーカー等のハードウェアの知識も必要となったところ
パソコン用のゲームソフトを作成したくてC言語を学びました。
文字を表示したりキーボードから文字を入力したり、電卓を用いてするような計算だけをするプログラムであれば、さほど難しくなくすぐに習得できます。
文字や数値を入れる入れ物には、変数、配列、構造体、ポインタといった入れ物が存在し、特にポインタに関しては、その入れ物にデータが入っているのではなく、データが入っている別の入れ物の場所をしめす値が入っているという概念になっており、なかなか理解できませんでした。
理解するためには、C言語というプログラム言語の勉強はもちろん、メモリなどのハードウェアの知識を得るための勉強を同時に行いました。
ゲームソフトの作成には、絵を出すためにモニターのハードウェアの知識を必要とし、音を出すためにはスピーカー等のハードウェアの知識も必要となりました。
自分が理解できるように頑張ったはことは、実際にプログラミングを書いてみること
プログラミング言語はC言語とJavaを学びました。
私が学びに詰まったところは、まずプログラミング言語の意味が全く分からなかったことです。
仕事でプログラミングを習得しなければならなかったのですが、最初は法則性も言葉の意味も全く分からなかったです。
大まかな記述方式を覚えてもそれが、どうやって適応させるのか全然分からなかったです。
既に記述されているプログラミング言語を読むのにも苦労しました。
ここからどうやって飛んだらこの処理になるのか?
最初は全く分からなかったです。
自分が理解できるように頑張ったことは、実際にプログラミングを書いてみることです。
最初はテキストを呼んで、内容を理解しようとしていましたが、それでは全然理解できませんでした。ひとつひとつ実際にプログラミングを書いてようやくわかるようになりました。
プログラミングは一人でやっていると悩みがちです。
プログラミングについて教えてもらうことができるサイトもありますが、その返答が自分の質問にあっているのか。また、その質問の答えが返ってきてもそれを自分が理解できないこともあります。
そういうためにオンラインやオフラインで短期間でウェブサービスやアプリを開発するというサービスが流行ってきています。
こちらにそういうサービスを比較してみましたので、プログラミングを勉強したいけどどうしようかなと悩んでいる方はこちらもぜひどうぞ。