A Day In The Boy's Life -146ページ目

A Day In The Boy's Life

とあるエンジニアのとある1日のつぶやき。

この不景気のあおりで予算を削られ、何もできないって状態になりつつある情報システム部門も多いかと思いますが、個人的な見解としては「今だからこそ、強い情報システム部門を目指すべきじゃないかな」と思ったりします。



蔓延する動くことが悪という雰囲気


不景気になって無駄な投資ができない、ということがイコール自社のエンジニアに無駄なところに働かせたくないという思いになり、新規のシステム開発などにはエンジニアを投入しないという状況のシステム部門も多いのではないでしょうか。

ただ、今あるシステムの運用・保守を淡々とさせ、何かしようとするエンジニアを激しくけん制したり。


こういうエンジニアを取り巻く環境をがんじがらめにしてしまっては、エンジニア自身のやりがいを奪っていくことになります。

また、淡々と運用・保守のルーチンワークをさせるだけではエンジニアの能力も伸び悩み、情報システム部門がより弱体化していく結果になるのではないかと思います。


出来合いのパッケージソフトウェアを導入したり、外部のSIerに開発を依頼し、自社の情報システム部門は上流工程だけをしようという雰囲気のところが多いですが、そうなったときに弱体化した情報システム部門でよいものができるのかどうかが疑問です。

外部のコンサルタントを雇い入れて、あの手この手と改善を繰り返そうとはしますが、その人たちの言うことにただ、「はい。はい。」とうなずいているような情報システム部門では価値がありません。


客のことを本当に考えてるベンダーっていったいどれぐらいいるだろうね 」に書いたように、外部から参入してくるベンダやSIerの提案について、本当にそれがいいものかわるいものか、コストが高いのか安いのか、ちゃんとわかるような要員を育てておかなくては、ただ単に言いなりの情報システム部門となります。


そうならないためにも、自社のエンジニアをより積極的に動かしていく戦略が必要なんじゃないかなと思います。



外部ベンダ / SIerへの偶像崇拝


不思議なのは、自分たちが情報システム部という自社のシステム基盤を支える屋台骨となる存在なのに、外部のベンダやSIerをプロとしてあがめている雰囲気があること。

特にあの企業と決めているわけでなくって、ベンダやSIerという存在そのものに信仰のようなものを持っている人たちもいるように思えます。


ただ、そういう人に限って、あそこに任せていれば大丈夫だ、と丸投げを行い自分たちはひたすらそれが出来上がるのを待つ、細かなシステム要件は、「いいようにやってくれ」と放り出し、トラブルが起きたらヒステリックにベンダに詰め寄る、というような対応を行うことが多く、そういう人が指揮するシステム部門ではよりよいシステム投資や運営を行えるはずもありません。


もちろんベンダが持つノウハウが有用であることはありますが、全てがそうであるはずもありません。

自社でできるところもあるはずです。

エンジニアの行動にはこと細かく指示を出して無駄な投資を抑えようとするのに、外部に発注する際には丸投げを繰り返す辺りは、とても矛盾しているように見えたりします。

そもそもどんな優秀なベンダであっても、指揮系統はこちら側にあるわけなので、うまく駒を動かしていかないと悲惨な結果になることは目に見えています。


それが自社でできないのは、自社の戦力を削っていった結果であると思いますので、強い情報システム部門を取り戻すためには、本当に自社でできないのか、というところをもう一度見直してみる必要があるんじゃないかなと思います。

目の前のコストだけを考えてどんどん自社でやることを削っていって、それが近い将来に本当に有効に働くのか考えるべきじゃないかなと。


こういうときだからこそもう一度、情報システム部門の役割とその価値を見直すべきじゃないかな、と感じます。




[仕事術]タスク管理と資料整理のコツはツール選択じゃなかった!? @ livedoor ディレクター Blog


タスクの管理方法って色々ありますけど、私はなるべくシンプルな方法のほうがいいと思っています。

良くあるのがプロジェクトごとにExcelとかでタスク管理表とかを作って、メンバーで共有するとかいうものですが、これだと他の人のタスクに埋もれて見づらくなったり、入力しないといけない項目(例えば完了日とかステータスとか、関係者とか)が多くなり、こまめに更新していく気力が続きません。


私の場合は、Googleデスクトップのタスク管理のガジェットを入れて、そこにひたすらやらないといけないことを追加していくというやり方をしています。


- Googleデスクトップで使うタスクガジェット
A Day In The Boy’s Life-Googleデスクトップ-タスク


- タスクのガジェットの追加
A Day In The Boy’s Life-Googleデスクトップ-ガジェット



Googleデスクトップのタスクガジェットを使う基本ルール


私は、こんな感じにしています。


・ やらないといけないことができたらタスク管理のガジェットへ追加

・ 基本1つの作業で完結する(※)ようなもっとも細かい単位のタスクとする

・ 他に登録されているタスクと比べて優先度や緊急度が高いものは上に持ってくる

・ 少し先でやらないといけないものに関しては、タスクの後ろに日付を書いておく

・ いつかやろうという程度のタスクは、下のほうに追いやっておく(忘れないためにとりあえず登録はする)


※ メールを書く、打ち合わせを行う、ある単体機能を実装するとか


というツール以上にシンプルなルールで管理するようにしています。


基本的に、仕事でのタスクを管理するには


・ 何をするのか

・ いつまでにやらないといけないのか

の2点を抑えておけばよいと思っています。
なので、「何をするか」を達成するためになるべく細かな作業レベルのタスクに落とし、それらをいつまでに行えばいいかを考えて、タスクの順番を入れ替え、ひたすら完了したら削除、というフローで管理していってます。

誰に対して行わないといけないとか、どこでやるとか、どういう風にするとかっていうのはある程度頭に入っていると思いますので、あまりそういうことは書くようにはしません。

タスク管理をすることが仕事だ、という風にはしたくありませんからね。


あまり大きな単位でタスクを管理してしまうと、作業の漏れが出てきてしまったり、やること自体に億劫になってしまったりするんですよね。

なので、ホイホイとこなしていけるレベルのタスクに落としておいて、リズムよく仕事ができるようにしています。

また、仕事の量が多くなるとあせってきたりしますが、何をやればいいのかがリスト化できれば、あとはそれを一つ一つ期限までにやればよいだけなので、気持ちも少し楽になります。

期限が迫ってきているタスクが多いのであれば、その中の幾つかについて誰かに助けを求めるってこともできますからね。


これは個人レベルでのタスク管理ですので、そのタスクの状況を共有したい場合、私はTracを使ってメンバー間の共有と、後から簡単に情報を参照できるようにしてたりします。

ただ、自分の中で完結するタスクはそこまで細かく管理しなくても良いので、うまく仕事の時間を作っていくには、やらないといけないことを簡単にメモでき、それをリズムよくこなしていくのをサポートしてくれるツールがあれば十分かと思っています。

そういう意味では、メモ帳に書き出しておくということでも全然問題ないかもしれません。

(簡単に追加できる、順番(優先度)の入れ替えができる、完了(削除)が簡単にできる、という手間を考えれば、もう少し高度なツールのほうが良いかもしれませんが)


自分の仕事のやり方にあったものを選んでみて、効率よく仕事していきたいですからね。




ユーザーに割り振る初期のパスワードを生成する際には、ある程度ランダムなものを渡す必要があったりします。
例えば、このランダムなパスワードを単純に作るのであれば


<?php

function createPassword($length = 8) {

// ASCIIコード表の!から~までの英数字・記号を配列に格納
    $letter = range('!', '~');

// ランダムにパスワードの文字数分だけキーを取得
    $pwd_key = array_rand($letter, $length);
    $pwd = array();

    foreach ($pwd_key as $key => $value) {
        $pwd[] = $letter[$value];
    }

// 出来上がったパスワードの配列を結合して文字列に
    return implode($pwd);
}

echo createPassword();

?>


のように作ってもよいのですが、これだと運が悪ければ(良ければ?)、英字だけとか、数字だけのパスワードが出来上がってしまいます。

簡単に解説すると、range 関数により、記号と英数字を一つの配列に入れて、そこからarray_rand 関数で任意の文字列を取ってパスワードを作り出しています。

array_rand関数でランダムに文字をとっていますので、英字だけの場合や数字だけのパスワードが作られる可能性もあります。(確率的には低いですけど)


もう少し複雑なものをつ作るためには一工夫が必要です。

下記のサンプルでは、英小文字、英大文字、数字、記号を最低1つずつ含むパスワードを生成しています。

<?php
function createPassword($length = 8){

    $pwd_strings = array("sletter" => range('a', 'z'),
                         "cletter" => range('A', 'Z'),
                         "number"  => range('0', '9'),
                         "symbol"  => array_merge(range('!', '/'), range(':', '?'), range('{', '~')));

    $pwd = array();

    while (count($pwd) < $length) {

// 4種類必ず入れる
        if (count($pwd) < 4) {
            $key = key($pwd_strings);
            next($pwd_strings);
        } else {
// 後はランダムに取得
            $key = array_rand($pwd_strings);
        }
        $pwd[] = $pwd_strings[$key][array_rand($pwd_strings[$key])];
    }

// 生成したパスワードの順番をランダムに並び替え
    shuffle($pwd);

    return implode($pwd);
}

echo createPassword() . "\n";

?>



業務上の理由からこういう複雑なポリシーの元でシステムを利用いけない場合もありますからね。

whileのループ内をうまく改変するともっと違ったポリシーのパスワードを生成できます。

(記号は除きたいとか、数字は必ず2つ以上入れたいとか)


後は、記号や数字を含んだパスワードの場合、見分けがつきにくい文字列もあったりしますので、ユーザーが見間違うことを考慮して、そういった紛らわしい文字列は、初期のパスワードには含めないというような考えも必要になるかもしれません。(数字の0と、英小文字のoと、英大文字のOは見間違いやすいから含めないようにするとか)

パスワードはどんなシステムでもつき物になることが多いので、こういう関数を一つ作っておいたら幸せになるかもしれません。