仮想サーファーの波乗り

仮想サーファーの日常

プログラミング・エンジニアのスキルアップ・ブログ運営などに関してよく書く雑記ブログ

【まとめ】非エンジニアがエンジニアと技術の会話をできるようになるための記事・本


f:id:virtual-surfer:20191203214438p:plain

「ITエンジニアとして働いているわけじゃないけど、ITエンジニアと技術的な話がしたい!」という方へ。

ITエンジニアと技術的な会話をしたいとは思っているけど、なかなか会話についていけない...。

「サーバーって?インフラとは?黒い画面でカタカタなにしてるの?」など、プログラミングのことが全くわからない方でも、IT系のエンジニアが普段何をしているのか、プログラミングとはなんなのか?を、ある程度は理解できるようになるところまでを目指します。


以下のような方の参考になればと思います。

この記事の対象読者

  • IT系のエンジニアと技術的な話ができるようになりたい、IT系のエンジニア採用担当者の方
  • プログラミングのことはよくわからないけど、これからプログラミングを勉強しようとしている方
  • 学校でプログラミング教育に関わることになった教師の方


それでは、どんな記事や本を読めばいいのか、学ぶこと別にオススメの情報を紹介していきます。


Webの全体像をざっくり理解する

Webサービスとはどのような仕組みで成り立っているのか、Webサービスを開発するとは何をすることなのかをざっくりと理解することができます。

この記事が読めるのも、はてなブログがWebサービスとして動いていて、あなたのスマホやパソコンに記事ページを表示してくれているからなのですが、その仕組みはどのようになっているのか。


Webサービスの仕組み

www.youtube.com

Webサービスの仕組みは、TECH::CAMPというエンジニア育成のためのプログラミングスクールを運営をされている マコなり社長(@mako_yukinari)さんの↑の動画がわかりやすいのでオススメです。


上の動画でまこなりさんが話されている内容からさらに学びを広げたいという方は、↓の本も読むと一気に理解が広がります。

イメージしづらい技術に関して図とともに説明されているので、めちゃくちゃ理解しやすくてオススメの一冊です。


IT系のエンジニアの種類と特徴を理解する

つぎに、IT系のエンジニアとは具体的にはどんな種類があるのか、どんな仕事をしているのかを理解できる記事と本を紹介します。

IT系のエンジニアの種類と仕事内容

あなたが目指すのはどれ?ITエンジニアの種類大解剖

↑ IT系のエンジニアとひとくちにいっても、様々な種類のエンジニアが存在することが理解できます。

それぞれのエンジニアの仕事内容は、どんなものなのかを理解することができます。


プログラミング言語ごとの特徴と用途を理解する

プログラミング言語とはなにかを理解する

プログラミング言語とは、コンピューターなどの機械に「ボタンがクリックされたら、Aさんのブログ記事一覧を表示して!」などの命令文を指定することができるものです。

プログラミング言語とは何かを理解したいという方にオススメの本がこちら。

Pythonというプログラミング言語の基礎的な書き方から、Pythonを利用したエンジニアの仕事内容まで網羅されていて、プログラミングに対しての理解が広がります。


サッカー選手の本田圭佑さんがプログラミングを学習している貴重な様子の動画↓も必見です。

www.youtube.com

こんな感じで英語のような文字をコンピューターや紙に書いていくことがプログラミングと呼ばれます。


プログラミング言語の種類とはなにかを理解する

プログラミング言語にはたくさんの種類があります。ブログを例にとると、ブログの記事の文章を表示するためのHTML、文章の色などのデザインを調整するCSS、ブログページの表示内容を変えたりするJavaScript、スマホアプリでブログ記事を読めるようにするための言語として、iPhoneアプリだとswift、AndroidアプリだとJavaやKotlinという言語などなど。

用途によってさまざまなプログラミング言語がありますが、どの言語がどんな役割を持っているのかざっくり知っていると、エンジニアと技術の話をしやすいです。


speakerdeck.com

↑ プログラミング言語の種類と用途をざっくりと学べるよいスライド。エンジニア採用担当者向けにまとめられた記事ですが、エンジニアについて理解を深めたいすべての方必見のスライドです。


Webエンジニアの仕事内容を知る

Webエンジニアの仕事は、プログラミングをするだけではありません。

Webエンジニアの仕事内容

何かWebサービスを作ろうと決めたら、Webサービスにどんな役割や機能を持たせるかを決める「要件定義」を行い、要件定義をもとに機能を実現するためにどんな技術を使ってどのように機能を実現するか「設計」し、設計をもとにプログラミングをしていく「実装」と「テスト」があり、実装をだれか他のエンジニアに見てもらってフィードバックをもらう「レビュー」をへて、レビューがOKになったら機能として「リリース」します。

リリースしたら、機能が当初予想していたくらいに使われているのか「検証」し、検証している中で何か不具合や改善点が見つかったら「修正」を行って、再度「レビュー」をしてもらって...。

と、エンジニアのやることは連鎖的に続いていきます。


現役SEの仕事内容を徹底解説!〜1日の流れ・将来のキャリア〜

↑エンジニアは1日どんなことをしているのか、具体的な仕事内容に関してはこちらの記事めちゃくちゃわかりやすくてオススメです。


エンジニアが普段使っているツールについて理解する

エンジニアが仕事中や週末によく使っているツールの紹介もしておきます。

エンジニアが普段触れている情報やわかれば、エンジニアの考え方が理解しやすくなるので知っておくとよいですね。

プログラミングやエンジニアのTips記事投稿サイト:Qiita

ferret-plus.com

Qiitaは、エンジニアのエンジニアによるエンジニアのための技術投稿サイト。

はじめてさわるプログラミング言語の入門的な内容や、プログラミングをしていてエラーが出たときに解決した方法など多くのエンジニアが投稿しているので、技術的な勉強をするためやトレンド情報を知るために活用しているエンジニアが多いです。


プログラミングやエンジニアのTips記事投稿サイト:Medium

tomokazu-kozuma.com

英語圏の人がよく利用している投稿サイトのMedium。

ここで技術系の内容が投稿されることも多いので、チェックしているエンジニアもいます。


アプリケーションのコードを管理することができる:Github

techacademy.jp

Webアプリケーションを開発したら、そのときに書いたプログラムを保存しておきたいですよね。

Githubを利用することでプログラミングしたコードを保存しておくことができ、さらに1日前、1年前など、どの時点で書いたプログラムを参照したい場合にもバージョンが全て保存できるので、Webアプリケーション開発にとってなくてはならないものです。

上で紹介した他人の書いたコードをレビューするときにも、Githubサイトでコードを確認して、レビュー内容をコメントすることができます。


気軽にコミュニケーションすることができる:Slack

https://businesschatmaster.com/slack/slack-line-chigaibusinesschatmaster.com

気軽にコミュニケーションをとることができるコミュニケーションツールであるSlack。

IT系の企業だと、SlackかChatworkのどちらかのコミュニケーションツールを導入している企業がほとんどでしょう。

ちなみに、仕事中にSlackに熱中していても遊んでいる訳ではありません。

Slackでエンジニアがよくわからない話を長文でしているときは、大事な話であることも多いのです。


matomedane.jp

↑エンジニアと非エンジニアのSlackに対する印象の違いが顕著になった事例。


仕事のお供に:Twitter

仕事中に熱中していても遊んでいる訳ではありません(2回目)。

Twitterでは、技術的なニュースや障害速報などが流れることがあるので、それを監視している意味ありもあるのです。

自社のWebサービスで利用している外部の技術にセキュリティ的に脆弱な箇所が見つかったり、利用している他社のサービスが止まることで、自社のサービスまで止まってしまうこともあるので、外部の技術情報を定期的にチェックしておくのもエンジニアのお仕事ですね。


エンジニアの趣味とは何かを知る

「エンジニアは週末も技術の勉強をするもの」というイメージがある方も多いかもしれませんが、エンジニアは週末どんなことに時間を使っているかご存知でしょうか?

エンジニアが技術の学習やアウトプットのために週末に何に取り組んでいるのかを紹介します。


技術を学びながら身の回りの課題解決:個人サービス開発

エンジニアの中でも一部の人たちは、週末にも趣味でWebアプリケーションやスマホアプリを開発しています。

身の回りの困りごとを解決するWebアプリケーションやWebツールを開発することで課題解決になるし、技術的な勉強にもなるので一石二鳥ですね。

ごくごく一部ですが、Webサービスやスマホアプリケーションの個人開発だけをして生活しているひともいます。

www.virtual-surfer.com

↑個人開発をして、月に10万以上稼いでいる/稼いでいた事例のまとめです。


↑ 個人開発をしている方々の事例が満載の本です。個人開発って具体的に何をして、何を作って、どんな結果になってるの?ということがきになる方は読んでみるとよいです。


より難しいアルゴリズム問題を解くコンテスト:競技プログラミング

競技プログラミング(通称、競プロ)というものを聞いたことはありますか?

より難しいアルゴリズムの問題をより多く、より速く解くことを競うプログラミングのコンテストのことを競技プログラミングといいます。


ちなみにアルゴリズムとは、ざっくりいうと「なんらかのことを行うルール」のことです。

たとえば、数年前にお笑い界で流行った世界のナベアツさんの「3の倍数と3の付く数字だけアホになる」というネタも一種のアルゴリズムです。


atcoder.jp

競技プログラミングのサイトとしては、AtCoderというサイトがあり、そこで不定期に開催されている競技プログラミングに取り組んで日々プログラミング能力を高めているエンジニアも多いです。

persol-tech-s.co.jp

↑AtCoderを運営している髙橋直大さんの記事も読むと雰囲気がつかめるかとおもいます。


↑ アルゴリズムに関して具体的にどんなものがあるのか知りたい方には、プログラミングでよく使われるアルゴリズムの種類を学ぶことができる初心者向けのこちらの本もオススメです。


機械学習のモデルの精度を競うコンテスト:Kaggle

aizine.ai

機械学習のスキル向上に直結する機械学習モデルの精度を高めることを競うコンテストKaggle。

DeNAなどの一部の企業では業務時間の一部をKaggleに取り組む時間にあてていいという制度を設けています。


普段つかっている技術に貢献:OSS開発

qiita.com

普段利用している技術やアプリケーション開発に無償で貢献するオープンソースソフトウェア開発に取り組むエンジニアもいます。

自分が使っているプログラミング言語やツールのバグを見つけたら、Github上で問題の箇所を修正したプルリクエスト(修正したコードを本番に反映してもらう申請)を出して、技術への貢献をするとともに技術力をつけることができます。


まとめ

以上、「【まとめ】非エンジニアがエンジニアと技術の会話をできるようになるための記事・本」でした。

今回紹介した記事と本をさらっと読めば、IT系のエンジニアと初歩的な技術的な会話ができるようになると思います。

プログラミングやエンジニアの仕事内容に関して、より詳しく学びたい方は以下の記事も関連で読んでみてください。


あとは、会話を実際にして見る中でわからなかった技術単語や概念をググってなんとなく理解する。ということを続けていけば、エンジニアへの理解がさらに深まっていくと思います。

では。