> For the complete documentation index, see [llms.txt](https://yutakatay.gitbook.io/katapedia/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://yutakatay.gitbook.io/katapedia/doc/enjiniaringusukiru.md).

# エンジニアリングスキル

## エンジニアリングスキル

### 能力指標

* コンピュータサイエンス
  * データ構造
  * アルゴリズム
  * システムプログラミング
* ソフトウェアエンジニアリング
  * ソースコードのバージョン管理
  * ビルド自動化
  * 自動テスト
* プログラミング
  * 問題の分解
  * システムの分解
  * コミュニケーション
  * 同一ファイル内におけるコードの秩序
  * ファイル間におけるコードの秩序
  * ソースツリーの秩序
  * コードの可読性
  * 防御的プログラミング
  * エラー処理
  * IDE
  * API
  * フレームワーク
  * 要求仕様
  * スクリプト言語
  * データベース
* 経験
  * 業務レベルで使用経験のある言語
  * 業務レベルで使用経験のあるプラットフォームの数
  * 職業プログラマとしての経験年数
  * 専門知識
* 知識
  * ツール知識
  * 触れたことのある言語
  * コードベースの知識
  * 最新技術に関する知識
  * プラットフォームの内部
  * 読んだことのある書籍
  * ブログ

<http://postd.cc/programmer-competency-matrix/>

#### 適当に考えたエンジニアとして必要そうなスキル

1. 突破力

   &#x20;自分のやったことない領域でも自主的に動いて実装,インテグできる
2. システムデザイン力

   &#x20;曖昧な要求から（モダンな）システムの概要を設計できる(耐障害性やスケーラビリティとかも)
3. 業務プログラム作成力

   &#x20;プログラムを適切な粒度で構造化できる、テスト書ける、CIできる
4. 不具合分析力

   &#x20;バグの概要からどこに問題があるかあたりをつけることができる(コードリーディング力)
5. アルゴリズム記述能力

   &#x20;ソートとか、二分木とか書ける
6. 作業効率化力&#x20;

   &#x20;作業環境をどこまで効率化しているか
7. 継続的学習能力

   &#x20;GitHubとか、プロダクトとか、読書実績（Twitterにつぶやいたやつとか）見るしかない
8. ググり力

   &#x20;つまったときに適切なワードで検索できて解決につなげられるかとかツール選定を適切にできるかとか

### できないエンジニア

* 優先順位がつけられない
* 疑問や課題感を感じない、感じても放置する
* 失敗やうまくいかなかったケースを共有しない
* 過去の自分（過去の技術）を過信している
* IT技術やプログラミングが嫌い・興味が持てない

<http://paiza.hatenablog.com/entry/2018/02/08/%E3%80%8C%E4%BB%95%E4%BA%8B%E3%81%8C%E3%81%A7%E3%81%8D%E3%81%AA%E3%81%84IT%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2%E3%80%8D%E3%81%AB%E5%85%B1%E9%80%9A%E3%81%99%E3%82%8B5%E3%81%A4%E3%81%AE%E7%89%B9>

### エンジニアの成長曲線

<http://yshibata.blog.so-net.ne.jp/2013-10-10>

### ITエンジニアが「成長できる」環境と「成長できない」環境

| 項目名       | 「成長できる」                                          | 「成長できない」                             |                              |
| --------- | ------------------------------------------------ | ------------------------------------ | ---------------------------- |
| 触るシステムの種類 | 時期により、いろいろなシステムを触ることができる                         | ずっと1つのシステムを触る                        |                              |
| テーマの変化    | いろいろな課題に取り組み、新たに問題解決する日々                         | 日々のタスクに新しいことが少なく、決まった手順でオペレーションをしている |                              |
| 扱う技術の種類   | 複数種類の技術を扱える                                      | 特定の技術のみ                              |                              |
| 扱う技術の新しさ  | 新しい技術に触れる機会がある。バージョンアップにも積極的                     | 古い技術のみ。コスト節約や安定稼働のためにバージョンを固定している    |                              |
| 扱う技術の汎用性  | 世界的なスタンダードや、その候補となっているオープンな技術が多く、転職しても活用できそう     | 自社の独自フレームワークなどを使っており、覚えたこ            | との大半が転職したら無価値になる             |
| 仕事の範囲・大きさ | 大きな目標に向かって、アーキテクチャの選定・設計などの上流・初期段階の活動に参加できる      | 仕事が場当たり的で細切れで、まとまった作戦に基づいて取          | り組む機会が少ない                    |
| 仕事の難易度    | 難しすぎず、簡単すぎない。または、難しくはあるが相談相手がいて何とか進めることができる      | 簡単すぎる。または、本人にとって難しすぎる上に相談相手もお        | らず、物事を進められそうもなく思える           |
| 仲間        | いろいろな技術者と仕事ができ、刺激を受ける。優秀な技術者と一緒に仕事ができる           | 一緒に働く技術者仲間が少なく、固定的で、刺激を受けることが少ない     |                              |
| 社外活動      | OSS開発や勉強会といった社外的な活動に理解があり、支援がある                  | 社外での活動がしづらい                          |                              |
| インターネット   | インターネットを自由に利用でき、SNSなどを使って知人と情報交換を手軽に行える。ブログなども自由 | 職場から自由にインターネットを検索したり書き込んだ            | りといったことができない。個人的な活動も良い顔をされない |
| 技術的な業務の割合 | ITエンジニアリングに費やす業務時間が多い                            | 管理・事務・営業・サポートなどITエンジニアリング以外の業務の割合が高い |                              |

<https://itjinzai-lab.jp/article/detail/856?p=3>

## 作業効率化

### [Webブラウジング](/katapedia/doc/webburaujingu.md)

### 日本語入力

Google日本語入力を入れる

サジェストを9件（Max）にする

### 職場環境

#### バカ環境

* 作業に使うPCのメモリ容量とディスプレイの画素数と枚数を教えてください。
* メモリ8GB未満→論外。「我々は、たかだか数千円の費用をケチって従業員の作業効率や快適性を下げているバカの集団です」と言っているも同然。
* フルHD未満→論外。「我々は、たかだか1〜2万円の日用をケチって（同上）」
* フルHD以上のディスプレイが1枚→可もなく不可もなく。ノートPCと外部ディスプレイ(フルHD以上)ならまあ可か。
* フルHD以上のディスプレイが2枚以上→合格
* 設計やコーディングや試験項目のレビューを行う体制が整っていますか？　「レビューをしてください」とお願いしたらしてくれるのではなく、組織としてレビューを行うように決まっていますか？
* 開発用の仮想環境・試験用の仮想環境・本番の環境の3つは少なくとも用意されていますか？　また、それらを構築するためのマニュアルが整備されていたり、スクリプト等で自動的に構築されるようにしていますか？
* 派遣社員・契約社員・正社員を問わず、定期的に不満や改善してほしい点を吸い上げるためのミーティングの場を設けていますか？
* 開発用のPCは、OSがWindows/Mac/Linuxなど選べるかどうか？キーボードがJISかUSか選べるかどうか？
* 職場にウォーターサーバーはあるか？　コーヒーやお茶などは無料か？　また、椅子は1万円以下のものではなく、少なくとも数万円以上のものを貸与しているか？ パーティションはあるか？
* スーツや、ワイシャツ＆スラックス着用が必須か？　また、男性従業員のみがそうであって、女性従業員は比較的自由な服装か？
* 言語のバージョンは、最新のメジャーバージョンに比べてせめて1世代前程度か？（例えばJavaなら7以上、PHPなら5.6以上か？）

<http://anond.hatelabo.jp/20160903010757>
