プログラミング　体系的に学んだ方法

programming Technical Writing

## Target audience
You need at least a little writing proficiency in English.
久々にプログラムに携わったため昔を思い出すために行うこと。

## Goal
Goal→dairy learn task

## 勉強の仕方
人によるため自分のルーティンを見つけること。
自分の集中力の質は、深い、長い、遅いな場合が多い気がする。また朝が最も集中できる。個人タスクは午前実施。
午後は打ち合わせが楽。

https://zerobito.com/leftysellen-true-identity/#:~:text=%E3%81%9D%E3%82%8C%E3%81%AF%E3%80%81%E9%9B%86%E4%B8%AD%E5%8A%9B%E3%81%AE%E3%80%8C%E6%B7%B1,%E3%81%AF%E9%9B%86%E4%B8%AD%E5%8A%9B%E3%81%AE%E5%BC%B7%E5%BA%A6%E3%80%82&text=%E3%81%A4%E3%81%BE%E3%82%8A%E3%80%81%E3%81%93%E3%81%AE3%E3%81%A4%E3%81%AE%E6%8E%9B%E3%81%91%E7%AE%97,%E5%8A%9B%E3%81%AE%E8%B3%AA%E3%81%A7%E3%81%82%E3%82%8B%E3%80%82

### Learning objectives
- Dynamic　Programs(動的計画法）　→youtube見る
- アルゴリズム　NP完全問題
- 巡回セールスマン
- 確率
- n選択
- 繰り返し解決するエレガントなソリューションは再帰
- プロセスにどのようなリソース分配できること。
- バブルソート
- 平衡2分木の削除に掛かる計算量は？
- std::[vector]のランダムアクセス1回に掛かる計算量は？
- [幅優先探索](http://d.hatena.ne.jp/keyword/%C9%FD%CD%A5%C0%E8%C3%B5%BA%F7)ってどういう時に使う？
- Arrsys(配列）
- Linked lists
- Stackｓ
- Queues
- Sets
- Maps
- Binary　Trees
- Heaps
- Graphs
- Atcoderの登録、問題実施過去問題500問解く　-
- 英語で課題を解くサイトLeetCode Problems: 100問
- Technical Writing

https://developers.google.com/tech-writing/one#learning_objectives

## Golden Circle　People don't buy what you do; they buy why you do it.
自分が集中するためのルーティンを行う。自分の場合は動画を見る。
[Ted Golden Circle by Simon Sinek](https://www.ted.com/talks/simon_sinek_how_great_leaders_inspire_action/transcript?language=ja)

https://www.ted.com/talks/simon_sinek_how_great_leaders_inspire_action/transcript?language=ja



## なんのために働くのか
↓紹介　おもしろかった
https://www.slideshare.net/kinukox/how-to-run-a-bigger-project-as-a-swe-manager

<iframe src="https://docs.google.com/presentation/d/e/2PACX-1vQs3cnZTfwaEnEOfiaDJJIyGkP0dfbvBGd-TxDVzMYsI6jORfeN_Iw3hQKBSzi3jndYyxpSDrs_8S7N/embed?start=false&loop=false&delayms=3000" frameborder="0" width="960" height="569" allowfullscreen="true" mozallowfullscreen="true" webkitallowfullscreen="true"></iframe>


## 最近思うこと
　若いときは言われたことだけや、目の前で困っている課題を解決するだけで良かった。
　現在の立場では、いろんな人と会話し、本当の課題を見つけることが大事だと感じる。
　例）獲得した契約情報を、客先の場で基幹システムへ連携したい。一度自社に戻って入力して、
　複数のシステムを立ち上げそれぞれ部分的に情報を入力し、フェーズをすすめるのは時間がかかるし大変。
　シームレスに1つのシステムで短時間で行えるようにした。

　→昔の自分だったら、速度を上げる方法を考えていた。
　→現在の自分では、どこに課題があるのかまずは確認し、技術的にどう解決できるのか考える。
　　→本当は、顧客との接触時間を増やしたい。話す内容の質をあげて契約を獲得できる提案を行いたい。
　　→社内業務に時間がかかり十分な提案が顧客にできない。

　　→ここの問題は、獲得した顧客情報を簡易に連携も大事であるが、仮説＆検証を繰り返し行えるような
　　　仕組みを用意したい。つまり、データを溜め込むだけでなく、売上増加となる施策を繰り返しパターンを変えて
　　　試したい。が課題であると考えることが必要。

　→自分にできることは複数案件を走らせるため単独行動ではなく、ベンダーを抱えてマネジメントしてドライブする必要がある。
　　そのためベンダーマネジメントに必要な、要件定義、システム化要件作成、プロジェクト計画書作成、WBS作成をずっとやっている、
　　チームを自走するために、TLとして任せれる人を見つけその人に任せて動いてもらうことが大事。
　　マイクロマネジメントではなく、適切な権限を与える。


　・モチベーションは困っていることを技術で解決できることに喜びを感じる。
　・最近は安定しており、このままでいいのかと考えている。次のプロジェクトを探す必要あり。


## 競技プログラミング　初心者問題４０問　まずは解いてみる。　
Codewars（せんぶ英語のため最初はaizuがいいかも）

https://www.codewars.com/users/hide6974

[まずは解いてみる](https://judge.u-aizu.ac.jp/onlinejudge/finder.jsp?course=ITP1)


## 人類知識も大事であるが、rapid doingも必要だと感じる

## Dynamic　Programs(動的計画法）
以下youtubeで勉強。日本語字幕欲しい人は以下拡張機能入れて字幕でみる。

https://chrome.google.com/webstore/detail/language-learning-with-yo/jkhhdcaafjabenpmpcpgdjiffdpmmcjb

https://www.youtube.com/watch?v=OQ5jsbhAv_M

##以下順次実施する知識を補う。
- [3/21実施]アルゴリズム　NP完全問題　

http://motojapan.hateblo.jp/entry/2017/11/15/082738
https://www.math.nagoya-u.ac.jp/~garrigue/lecture/2008_AW/np.pdf
https://www.momoyama-usagi.com/entry/info/p-np

- ナップザック問題
- 巡回セールスマン
- 3 彩色問題
- 確率
- n選択
- 繰り返し解決するエレガントなソリューションは再帰
- プロセスにどのようなリソース分配できること。
- バブルソート
- 平衡2分木の削除に掛かる計算量は？
- std::[vector]のランダムアクセス1回に掛かる計算量は？
- [幅優先探索](http://d.hatena.ne.jp/keyword/%C9%FD%CD%A5%C0%E8%C3%B5%BA%F7)ってどういう時に使う？
- [3/21Copmlete][Arrsys(配列）](https://www.cc.kyoto-su.ac.jp/~yamada/programming/array.html)
- Linked lists
[連結リスト Linked lists - Wikipedia](https://ja.wikipedia.org/wiki/%E9%80%A3%E7%B5%90%E3%83%AA%E3%82%B9%E3%83%88)


 [LinkedListとArrayの速度が全く違う件](http://yasuand.hatenablog.com/entry/2013/08/26/024920)
LinkedListは基本的にArrayListと同じ.ArrayListよりも挿入や削除が速い。
その代わり値の取り出しはArrayListよりも遅い。
利用用途：検索しながら、要素を削除するなど追加する処理。苦情の電話を最初から順に処理し、終われば待機のSTSに移動する。
- [Stackｓ](https://ja.wikipedia.org/wiki/%E3%82%B9%E3%82%BF%E3%83%83%E3%82%AF)
- Queues[スタックとキュー](https://www.momoyama-usagi.com/entry/info/algo/stack-queue#%EF%BC%92%E3%82%AD%E3%83%A5%E3%83%BC)
- Sets
- Maps..mapはkeyからvalueを検索するのが得意
- Binary　Trees　[探索木](https://ja.wikipedia.org/wiki/%E6%8E%A2%E7%B4%A2%E6%9C%A8)
https://www.momoyama-usagi.com/entry/info/algo/tree
深さ優先探索(DFS)
幅優先探索(BFS)

[赤黒木-探索方法](https://qiita.com/kgoto/items/b15b9a494deae010d660)
- Heaps
- Graphs
- Atcoderの登録、問題実施過去問題500問解く　-
- 英語で課題を解くサイトLeetCode Problems: 100問

##Google社のテクニカルライティングの基礎教育資料
https://developers.google.com/tech-writing

参考良

https://speakerdeck.com/namura/shui-gadoujian-temosoutosikashou-kequ-renaiwen-shu-shu-gong-kai-ban


以上（執筆３０分）