次世代LiveDataであるKotlin Coroutines StateFlow・SharedFlowについて
Kotlin Coroutines1.3.6で投入されたStateFlow、1.4.0で投入されたSharedFlowに関しての備忘録です。
続きを読む「事業がわかるエンジニア」を深堀りする
今ホットな当話題に関して、個人的にすごく抽象的で一見上記記事内で言う「経営層」と「エンジニア」のそれぞれの領域を曖昧にしてしまう内容にも見ることができる気がしたので、ちょっと書いておきます。
そしてこの記事も個人的なものなので、これに対する見解はそれぞれ異なっていいものだと思ってます。
「事業がわかる」エンジニアとは
記事内で、
技術特化で成果を出す
チーム内の改善、UX改善の提案・実装にコミットする
他部署を巻きこみプロジェクトを推進できる
経営ビジョンを加味した技術選定、組織編成、戦略決定ができる
とあります。その中で経営層が「事業がわかる」と評価する「経営ビジョンを加味した技術選定、組織編成、戦略決定ができる」に若干のミスリード?行きすぎる点があるように感じます。
なぜなら「経営ビジョンを加味した技術選定、組織編成、戦略決定ができる」と言う課題や最終的な意思決定を達成すべきなのはエンジニアやプログラマーではなく経営層であるからです。
「事業がわかるエンジニア」がみな「経営ビジョンを加味した技術選定、組織編成、戦略決定」をしてよいとするのであれば事態の収拾がつかないことになりかねません。
その「事業がわかるエンジニア」を善としてみながそれを目指し、遂行し始めたら組織構造のレイヤーにかかわらず皆が組織編成に口を出し、戦略決定事項に異議を発言し、最終的には「この会社はエンジニアの意見を尊重してくれない」などの理由でその組織を去っていくこともあります。
つまりここで言う「事業がわかるエンジニア」とは「経営層(マネジメント層)」であるべきと考えます。
(仮にここで言う「事業のわかるエンジニア」が「経営ビジョンを加味した技術選定、組織編成、戦略決定」を行っていたとして、またその上層や別に事業の意思決定をするポジションの人間が他にいたとしたらその人たちは何をするのでしょうか?と私は疑問に思います。)
ではエンジニアやプログラマーは事業に対してどのような姿勢でコミットすべきか?と言う疑問に関しては、「経営ビジョンを加味した技術選定、組織編成、戦略決定のそれぞれの選択肢やその選択肢のバックグラウンドを経営層に正しく伝えることができるか」と言う視点で留めておくべきだと思います。
事業の遂行には多くの様々なシーンで意思決定を行う必要があるかと思います。その度にその事業の責任者や経営層、スタートアップなどでは社長が行っているかと思いますが、かなりの心身的な責任・負担がのしかかります。
その責任・負担を達成・解決するのはその負担を背負っている人物あるいはレイヤーでしか行えないものだと認識しています。
ただその事業遂行の中でエンジニアリング観点での意思決定が必要なシーンに「エンジニアが経営層に選択肢をそれぞれ提示する」必要があるかと思います。
その上で経営層あるいはマネジメント層が経営ビジョンと照らし合わせて最適な意思決定を行っていくべきだと思います。
つまりここではエンジニア・プログラマーは「事業がわかるエンジニア」ではなく「事業に沿った選択肢を考慮できるエンジニア」であるべきかと思います。
そして本当の意味で「事業がわかるエンジニア」は「エンジニアリングがわかる経営者・事業責任者」である必要があるかとも思います。
おわり
この記事を書いた理由は、該当記事の認識を間違って「じゃあ経営・マネジメントレベルの意思決定にも積極的に口を出した方が喜ばれるんだ!」とエンジニアが誤認してしまったり「うちのエンジニアたちは経営者視点・当事者意識が薄い」みたいな責任転嫁とも取れるようなことを感じてしまう経営者が増えないといいなぁ、と言う思いで書いてみました。
またエンジニアリングとビジネスのそれぞれの責任とそれを負うべきポジションの人達が、変に責任の押し付け合いや責任転嫁からくる不満を持たないで欲しいので、うまく役割分担して欲しいなぁと思ってます。
【Android】BottomNavigationの選択を自前で管理する
AndroidStudioからプロジェクトを作成するときに"Bottom Navigation Activity"を選択すると、上記のBottomNavigationが作成された状態でプロジェクトが作成されます。
続きを読む【Android】RecyclerViewでHorizontalScrollを実現する[備忘録]
掲題の通りRecyclerViewでHorizontalScrollを実現します。
RecyclerViewHolder.kt
import android.view.View import androidx.recyclerview.widget.RecyclerView class RecyclerViewHolder(view: View): RecyclerView.ViewHolder(view) { // layoutファイルのUIコンポーネント }続きを読む
Firestoreの特定のCollectionをCloudFunctionsで監視してPushNotificationを送信する[備忘録]
チャットアプリなどでFirestoreの特定のCollectionが変更された際に対象ユーザーにPushNotificationを送信するといったシーンの実装方法の備忘録です。
CloudMessagingがPushNotificationを送信する際に必要になるfcmTokenはFirestoreに保存しておきます。 アプリ側でfcmTokenを取得する際のコードは下記になります。
続きを読む