mk-toolブログ

エンジニアと家のことをごちゃごちゃと書いてます

【本】シリコンバレー式最強の育て方

【概要】

人材マネジメントの新しい方式として、1on1ミーティングを取り入れてみることが有効である。仕事をする上でもっとも大切なことは上司と部下が信頼関係を築くことであり、信頼関係が築けていなければ部下は「上司とはなんだかやりにくい」「自分のやりたいことはこれじゃない」といったことはもちろんのこと、せっかく育てた人材も能力がつくと「自分はこうなりたい!」とよそへ新たな活躍の場を求めて飛び出していってしまう。このようになる前に、しっかりと部下と1on1ミーティングを行い、職場環境や体調、夢など仕事以外のことを把握する必要がある。職場環境に不満がある場合は、その問題を取り除いてあげ、夢がある部下へは「いま君にはこんな仕事をしてもらっている、これができるようになれば君は将来このようになれる」と現在の作業をさせている理由とこれからの未来について納得のする話をしてあげる必要がある。そのような職務とは少し異なる話をするミーティングを日常的に設けることで、部下との信頼を気づくことができる。また、毎回のミーティングは必ず成功的なものでなくても良く、しっかりとした話し合いよりも楽しい話し合いにすることを目指して、部下が「定例会」としてミーティングを捉えるのではなく「週1回の楽しみ会」として開催することができれば非常に効果は期待できる。

また、ミーティングでは、部下の話を最後まで聞き切り、部下の話を理解してあげる(これを承認という)ことが大切であり、「私の若かった頃は。。。」や「お前はたるんでいる」などという話をする場ではないことに気をつけたい。あくまで中心は部下である。

【所感】 

この本は上司向けの本であるが、私(現在24歳部下)向けの本でもあると感じた。

部下も上司に1on1ミーティングを依頼し、自分のことを知ってもらう、自分が何をしていきたいかを語る、もっと先輩のことを知る、どういうキャリアを積んでいけば良いか、など様々に聞き出したいことがある。そのため、1on1ミーティングは自身の成長や組織への貢献に非常な有効な手段であるものと感じた。もちろん、上司になった場合には部下のパフォーマンスを最大に保つために、部下の理解(仕事の状況も可能な限りプライベートも)をしていきたい。

【使えそうなツール】

・1on1ミーティングで話すレベル

レベル1:内容を話す(世間話程度をこちらから)

レベル2:内容を聞く(部下自身の話)

レベル3:感情を聞く(レベル2をしている時の感情を聞く)

レベル4:価値観を探る(レベル2をしている時に何を考えたかを聞く)

 

・業務のことに関する話をする時

業務改善:現場業務の把握・改善

組織改善:組織への貢献

 

・部下へ納得感を与えるMGC目標作成法

部下に目標を設定してもらう上で大切なこと

MUST:会社として絶対にやってもらうことを伝える(Why,Whatの視点)

GET:それをすることで部下が得られること

CAN:部下が目標達成を行える感覚を持つこと

 

・能力開発で有効なコルブの経験学習モデル

具体的経験:実際の業務をする

内省的観察:振り返り

抽象的概念化:内政的観察で気づいたことを概念として理解をする

能動的実験:理解したことを元に新たなチャレンジをする

 

 

【checkio】Roman Numerals(Electronic Station)

【他の人のコード】

def _make_roman_nums(i, v, x):
    return ['', i, i * 2, i * 3, i + v, v, v + i, v + i * 2, v + i * 3, i + x]
<200b>
roman_nums = [_make_roman_nums('I', 'V', 'X'),  # ones
              _make_roman_nums('X', 'L', 'C'),  # tens
              _make_roman_nums('C', 'D', 'M'),  # hundreds
              _make_roman_nums('M', '', '')[:4]]  # thousands
<200b>
def checkio(number):
    # 852 -> (3, 0), (2, 8), (1, 5), (0, 2)
    digits = [(place, number // (10 ** place) % 10) for place in range(3, -1, -1)]
    return ''.join(roman_nums[place][value] for place, value in digits)
<200b>||<

【自分のコード】
>|python|
def checkio(data):
    roman_list = []

    #1
    roman_list.append(create_roman_list("I", "V", "X"))
    #10
    roman_list.append(create_roman_list("X", "L", "C"))
    #100
    roman_list.append(create_roman_list("C", "D", "M"))
    #1000
    roman_list.append(create_roman_list("M", "", ""))

    str_data = str(data)
    
    #replace this for solution
    return_data = "".join([roman_list[len(str_data)-1-i][int(str_data[i])] for i in range(len(str_data))])
    
    return return_data
    
def create_roman_list(i, v, x):
    return ["", i, i+i, i+i+i, i+v, v, v+i, v+i+i, v+i+i+i, i+x]

if __name__ == '__main__':
    
    #These "asserts" using only for self-checking and not necessary for auto-testing
    assert checkio(6) == 'VI', '6'
    assert checkio(76) == 'LXXVI', '76'
    assert checkio(499) == 'CDXCIX', '499'
    assert checkio(3888) == 'MMMDCCCLXXXVIII', '3888'

【checkio】Pawn Brotherhood(Home)

【他の人の驚きコード】

def safe_pawns(pawns):
    return  sum(str(chr(ord(i[0])-1))+str(int(i[1])-1)in pawns or str(chr(ord(i[0])+1))+str(int(i[1])-1) in pawns for i in pawns)

【自分の書いたコード】

def safe_pawns(pawns):
    potential_position = []
    for val in pawns:
        temp_list = calc_cross(val)
        potential_position += temp_list
    count = [i in potential_position for i in pawns].count(True)

    return count

#斜めの位置のコマ位置を計算
def calc_cross(analyze_str):
    return_list = []
    
    for loop_cnt in range(2):
        if 0 < int(analyze_str[1]) < 8:
            if(ord(analyze_str[0]) == 97):
                data_1 = chr(ord(analyze_str[0])+1)
                data_2 = int(analyze_str[1]) + 1
                return_list.append(data_1 + str(data_2))
            if(ord(analyze_str[0]) == 122):
                data_1 = chr(ord(analyze_str[0])-1)
                data_2 = int(analyze_str[1]) + 1
                return_list.append(data_1 + str(data_2))
            else:
                data_1_1 = chr(ord(analyze_str[0])-1)
                data_1_2 = chr(ord(analyze_str[0])+1)
                data_2 = int(analyze_str[1]) + 1
                return_list.append(data_1_1 + str(data_2))
                return_list.append(data_1_2 + str(data_2))
    return return_list

if __name__ == '__main__':
    #These "asserts" using only for self-checking and not necessary for auto-testing
    assert safe_pawns({"b4", "d4", "f4", "c3", "e3", "g5", "d2"}) == 6
    assert safe_pawns({"b4", "c4", "d4", "e4", "f4", "g4", "e5"}) == 1
    print("Coding complete? Click 'Check' to review your tests and earn cool rewards!")

【checkio】Pawn Brotherhood(Home)

【他の人の驚きコード】

def safe_pawns(pawns):
    return  sum(str(chr(ord(i[0])-1))+str(int(i[1])-1)in pawns or str(chr(ord(i[0])+1))+str(int(i[1])-1) in pawns for i in pawns)
<

【自分の書いたコード】
>|python|
def safe_pawns(pawns):
    potential_position = []
    for val in pawns:
        temp_list = calc_cross(val)
        potential_position += temp_list
    count = [i in potential_position for i in pawns].count(True)

    return count

#斜めの位置のコマ位置を計算
def calc_cross(analyze_str):
    return_list = []
    
    for loop_cnt in range(2):
        if 0 < int(analyze_str[1]) < 8:
            if(ord(analyze_str[0]) == 97):
                data_1 = chr(ord(analyze_str[0])+1)
                data_2 = int(analyze_str[1]) + 1
                return_list.append(data_1 + str(data_2))
            if(ord(analyze_str[0]) == 122):
                data_1 = chr(ord(analyze_str[0])-1)
                data_2 = int(analyze_str[1]) + 1
                return_list.append(data_1 + str(data_2))
            else:
                data_1_1 = chr(ord(analyze_str[0])-1)
                data_1_2 = chr(ord(analyze_str[0])+1)
                data_2 = int(analyze_str[1]) + 1
                return_list.append(data_1_1 + str(data_2))
                return_list.append(data_1_2 + str(data_2))
    return return_list

if __name__ == '__main__':
    #These "asserts" using only for self-checking and not necessary for auto-testing
    assert safe_pawns({"b4", "d4", "f4", "c3", "e3", "g5", "d2"}) == 6
    assert safe_pawns({"b4", "c4", "d4", "e4", "f4", "g4", "e5"}) == 1
    print("Coding complete? Click 'Check' to review your tests and earn cool rewards!")

【checkio】Pawn Brotherhood(Home)

def safe_pawns(pawns):
    potential_position = []
    for val in pawns:
        temp_list = calc_cross(val)
        potential_position += temp_list
    count = [i in potential_position for i in pawns].count(True)

    return count

#斜めの位置のコマ位置を計算
def calc_cross(analyze_str):
    return_list = []
    
    for loop_cnt in range(2):
        if 0 < int(analyze_str[1]) < 8:
            if(ord(analyze_str[0]) == 97):
                data_1 = chr(ord(analyze_str[0])+1)
                data_2 = int(analyze_str[1]) + 1
                return_list.append(data_1 + str(data_2))
            if(ord(analyze_str[0]) == 122):
                data_1 = chr(ord(analyze_str[0])-1)
                data_2 = int(analyze_str[1]) + 1
                return_list.append(data_1 + str(data_2))
            else:
                data_1_1 = chr(ord(analyze_str[0])-1)
                data_1_2 = chr(ord(analyze_str[0])+1)
                data_2 = int(analyze_str[1]) + 1
                return_list.append(data_1_1 + str(data_2))
                return_list.append(data_1_2 + str(data_2))
    return return_list

if __name__ == '__main__':
    #These "asserts" using only for self-checking and not necessary for auto-testing
    assert safe_pawns({"b4", "d4", "f4", "c3", "e3", "g5", "d2"}) == 6
    assert safe_pawns({"b4", "c4", "d4", "e4", "f4", "g4", "e5"}) == 1
    print("Coding complete? Click 'Check' to review your tests and earn cool rewards!")

【Python】str()でエラーが起きてしまう

エラー内容は以下。

TypeError: 'str' object is not callable
<
自分でも笑ってしまったが、自身のプログラムの中でstrという変数を宣言していた。strはビルトイン関数のstr()の名前と重複していることが原因みたい。