makotan _at_ gmail dot com

データ

データを可能な限り最小単位の意味まで分類してた

 

データの意味は大きく4つ、細かく分けると3つはさらに3つに分類される

  • 構造を表すデータ(強、弱、演算)
  • 制御するためのデータ(強、弱、演算)
  • 状態を保持するデータ(強、弱、演算)
  • 値を保持するデータ

 

理想的なデータの持ち方は、

  • これらを全て独立した項目に保持すること
  • データを複合項目で表現しないこと

この二つ

 

 

個人プロジェクトのススメ

makotanはプログラミングを本職としてる(特に若い)人は個人プロジェクトをやってみた方が良いのでは?って思ってる

こんなにデメリットが少なくてメリットが凄く多いのはそんなにない気がする...

 

個人プロジェクトとは

個人で好き勝手に好きな物を作るプロジェクト

仕事ではないし、他の人が参加するかどうかも関係ないし

OSSにするかどうかも自由

 

個人プロジェクトの為に必要な物

開発出来るパソコン

作るネタ

開発環境一式(物によっては無料だし)

作るための時間と少しの根気(子育てするとだいぶ大変なので若いうちがチャンス)

 

個人プロジェクトの何が良いの?

誰の指示も受けずに好き勝手に出来る

色んな事を思うがままに試せる

色んな技法を好き勝手にぶっ込める

延々と一つのプロダクトを作る楽しみもある

作っては捨てるもまたよし

 

職業での開発 vs 個人プロジェクト

他の人の為のプログラミング vs 好きなプログラミング

期間内で成果を出す必要 vs 無期限、成果無しでもOK

自信が無くてもリリース vs 工夫し放題、試し放題

会社の成果 vs 自分の成果

 

個人プロジェクトのデメリットは?

やる気の継続が大変

次々と作りたい物が出てきて散らかる

時間確保が意外と大変

 

個人プロジェクトのメリットは?

もっと良いやり方があるかも!?って工夫して経験値爆上げ

無制限に試す事が出来るので経験値爆上げ

興味のあるものをどんどん投入できて経験値爆上げ

仕事では試せないツールとか手法とか試し放題で経験値爆上げ

OSSにすれば興味のある人が見つけてくれて知り合いが増える

経験値が上がれば仕事にもフィードバックできるし、その後も色々と有利

 

 

 

昔の経験から良かったなぁ〜って思ってることを書いてみただけ

エンジニアの評価

ワクチン接種でうなされてたときにふと思いついたのを書き起こしてるだけで、わるいのはぜんぶワクチン接種2回目です(他の物のせいにするでない!w

 

よく聞くエンジニアの(自己・他者)評価って

普通以下、普通、できる、めっちゃできる、秀才、天才、神レベル

みたいにあって、これを評価するにはどうすれば良いんだろうって考えてた

 

普通以下、普通、できる、めっちゃできる、秀才

ここまでは一直線に並んでる(何がw

わりと本人が努力すればある程度まで変化させることが出来る

あと、努力と環境で変化するなぁ〜と思った

ということで、まとめてカテゴリA

 

天才、神レベル

この二つは全く次元が違ってるので普通に評価出来ないw

そして努力でカテゴリAからなんとか出来るか??ってポイントもある

ということで、まとめてカテゴリB

 

そのあと、何らかの評価基準を作ってもそれをハックするよなぁ〜って事に気がついた

なのでハック耐性のある評価基準が必要って事になった

単独の人(もしくはグループ)が評価する人は評価される人と同等かそれ以上の位置に居ることが必要なので、神レベルを評価するには神レベルを数人揃える必要が出てくる。その神レベルを認定出来る神レベルの人を...あ、無限ループした。ということで無理ですね

会社での評価は大抵これを上手く出来ないので...360度評価を使うんですね

 

何らかの評価基準を捨てて(早っ)、相互評価と個人特性とクラスタ化によるスコア化を考えた。まぁ普通に360度評価みたいなもんですね

エンジニアが知ってるエンジニアを評価する(しまくる)のでそこそこ正しくなる

ただ人によっては辛口評価になったり、激甘評価になったりするのでその辺の補正と、クラスタ化してるはずなので色んな方向からの補正が必要と

なんか出来る気がしてきた...

 

カテゴリAは多分これで評価出来るけど、カテゴリBをどうするか問題が残った

(そもそも人数少ないんだから放置してればって一瞬思った

これも(自称・他称含む)カテゴリB同士による相互評価しかないのかなぁ〜と

 

こうやって評価基準が出来上がれば適切なポジション・役割・お仕事で適切な給料貰ってみんなハッピーになれるプラットフォームが作れるんじゃないかなぁ〜

Githubとか転職何ちゃらとかより全然いいと思うんだけどw

 

以上、COVID-19のワクチン接種2回目でうなされてた時のメモでした

 

両利きのエンジニア

一時期フルスタックエンジニアっていう流行があって(最近あんまり聞かないなぁ)

フルスタックエンジニアって開発の企画からインフラ設計から開発して運用までやるエンジニア?って一瞬思ったけど違うらしくて...

開発の企画から要件定義からインフラ設計からシステム開発して運用まで全てをある程度のレベル以上でやれるエンジニアなんて知ってる範囲で1人くらいしか思い浮かばない超レアキャラだなと

殆どの優秀な人は、ある特定の範囲を中心にT字に伸びてる感じ(たまにTTTみたいな人も居る)で、ここまでだとそんなにレアじゃない(それでも転職には困らないレベルな気はしてる)

そして深掘りしてる部分がある日突然他の物に置き換わる恐ろしさを感じる日々を過ごすことになるので技術の一本足打法は止めましょう得意な周辺への拡張も頑張りましょうって話になりやすいんですがw

 

そんなことを思いつつYoutube西野七瀬を探す生活してたら、両利きの経営っていうのを真面目に解説している動画があったんですね(西野七瀬関係なかった)

それをみると、探索と深掘りの両方が大事で、イノベーションは深掘りからはなかなか起きないと...

エンジニアも得意な部分とその周辺だけを頑張って深掘りしてる人いるし、世間で言うフルスタックエンジニアっていっても基本はサーバサイドとフロント側だし、それはそれで良いけどレアキャラにはほど遠いなぁ〜って印象

じゃあ探索ってなんだ?って話になって有名な人がTwitterで言ってるので興味を持ってそれを調べるのは探索ではなく情報収集の一環に過ぎなくて、有名な人は有名なので情報が自然と集まってくる特性があるし

まったく仕事とかに関係ないエンジニアリングな何かを興味をもって探して、それを応用方法を考えていく人・・・更なるレアキャラな予感しかしない

 

そんな両利きのエンジニアを探すのも面白そうな気がした

 

最適化できるかどうか

ここで言ってる最適化は殆どの場合、performanceじゃなくて設計と実装の事

 

流れの中で、無理な部分とか大変な部分を見つけ出す

流れをスムーズにしていく

それを色んなレベルでバランス良く実施する

 

ということに気がついてて、頑張ってやってはみるものの、難しいな〜って思う

 

そんな中で結構重要なキーなのはデータ構造だって事に気がついて早数年。

わかっちゃいるけど、やっぱり難しい

プログラミングが普通の人とか出来る人とかの差

注意:過去の観察に基づいた個人的感想です

 

 

普通の人

過去の経験、知識はある程度持ってるけど、なかなか苦労する人

脳内で過去の経験とか知識が一部しか紐付いてないので、ほぼ類似の作業以外は苦労する

 

 

出来る人

過去の経験、知識を総動員して、方法を見つけ出す人

過去の経験とか学習した知識がちゃんと整理されてる

結果的に何かするときに方法を簡単に見つけ出す事が出来るので、作業が早くて正確

差は知識と経験の量をどれくらい質に転化してるかどうかだけ

結構いっぱい見かけるし、同じ業種をやってると上手く出来るようになるのもこの辺が理由っぽい

 

 

めっちゃ出来る人

最適そうな構造を見つけ出して解決する人

何かをするときに、突然普通に思いつかないようなものをあてにいくタイプ

(このタイプはリアルで数人しか知らないのでレアっぽい

 

 

 

この先にもう一つありそうなんだけど、まだ見たこと無い

まさかここが認知能力の限界?

GitHub Copilot をみてふと思った

これだけでエンジニアが必要なくなるかというとそんなことはないなと思った

ただ、(自分にとって)未知の実装方法を誰かの過去の実装で支援してもらえるのは強いなと思った

 

 

めっちゃ能力の高いエンジニアは希少価値があるとして

その人たちが書いたコードが山のようにgithubに転がってて

能力がそれほどでも無い人がコードを書くときに「こんなコードが書きたい」って言えば適切そうな実装をサジェストしてくれるって

どう考えても凄いなと思った

 

 

色んなアルゴリスムを覚えたり、ライブラリの使い方を1からドキュメントとgoogleに頼って調べて覚えたりしなくて良いんだよなぁ・・・いいなぁ〜

 

 

はやく、こんな実装が欲しいって言えば作ってくれるCopilot欲しいです