Casser Notes

SASメインで使っていたエンジニアのステップアップの記録

板挟み感

昨日は案件の次フェーズ進行の打ち合わせだった

お客様と1次請け社の期間の認識などがズレていて、我々がそこのリカバリをすることに

 

向こうはまだ要件定義なのにこちらは設計に入っていて、

インターフェース決めたいんですけど、と言っても向こうはまだ設計を始めてないのでズルズルと向こうに引きずられる…

というよくある光景が目の前に

 

そのために、かっちり作り込まずにプロトタイプを重ねていって仕様が決まったらガッチリ作るという、ウォーターフォールなのにエセアジャイルなことをやってる

 

まあ、悪い人はいないと思ってできることはやろう

 

他に、先日のNTTコムの方のスライドを社内展開したら、

U35ぐらいで本音トークして会社を良くする会、みたいなのをやろうという話も出た

この流れがもし本当に会社を変えたなら、少しでも世界を変えたことになるかな

 

昨日も楽しかった

多重ネストマクロプログラムのデバッグつらい

PL業務ばかりやっていたけど、手を動かしたい&手も足りないのもあって、自分にプログラム開発タスクを振った

 

ここ最近は他の案件でもPLをやることが多く、正直自分でプログラムを書くのが何年ぶりか…という感じ

(前の案件はDIS、EGのGUIメインだったし)

 

それをやり始めたはいいけど、プログラム開発の勘所が自分から全く失われていることに気づく

これが、自分のずっとなりたくないと思っていたリーダーの姿、自分がそうなりつつあることにまた危機感を覚える

 

 

詰まったところは、既存のマクロのネストが深く、デバッグに苦労してる

 

知っている環境ならこれがここ読んでるのね、と分かるけど、あまり知らない環境だと、

このマクロはどこにあってどこで定義されてんのか、がいまいちよく分からない

 

例えば

◾️createList.sas

%macro main();

〜処理いっぱい〜

%macro step1();

%macro step1_1();

%let whereStr=%str(なんたら条件);

%commonExtract(data001,&whereStr);

〜処理いっぱい〜

%if &extractCnt. = 0 then do;

    %goto :zeroEnd;
%end;

%mend;

%step1_1();

%mend;

%step1();

〜処理いっぱい〜

%mend;

%main();

みたいなのがあって、&extractCntってどこで作ってんの…と見ると

◾️ batAutoexec.sas

%macro commonExtract(tabName,whereJoken);

proc sql noprint;

create table extractTab as

select count into:extractCnt

from &tabname.

where (1=1) &whereJoken;

;

quit;

%mend;

 

をsysinのプログラムからさらに%includeしてたりする

 

この辺りの値の遷移とかがどうしても脳内でマッピングできないし、プログラム間のCRUDみたいなのは本当はあるべきなのかな?

どれがどれ読んでるかみたいな紐付きがピンとこない

 

 

あとは、マクロが何層もネストされてるのでどこでエラー出てるのかもよく分かんないし、

ステップ実行でデバッグしたくとも、そこだけオープンコードで実行するもの比較的苦労する

 

せっかくEGで実装されたDATAステップデバッガもマクロ内には使えない…

 

 

オープンコードで書いてからマクロに起こす、が定石だけど、既存の知らないマクロゴリゴリプログラムを書き直すときのテクニックが知りたいところ

 

とはいえ、自分の課題、足りないところが分かったので昨日も楽しかった

 

P.S.

GMOさんのイベントも申し込んでたけど、この開発の遅れで行けなかった…

草の根コラボレーション

ようやくプロジェクトのWBSをざっくり、開発フェースは成果物レベルで作成した

 

これまで何回か作ってるけど、未だにWBS作るのは根気が要るし慣れない

特に、この人はこの日1人日超えてるよ…みたいな要因間の工数の整合性みたいなのが苦手、みんなどうやってるのか知りたい

 

また別の話で、こんなスライドをお見かけした

 

エンプラ系大企業でソフトウェアエンジニアリング文化を開花させるために
https://www.slideshare.net/iwashi86/ss-203448193

 

うちの会社はNTTコムさんほど大きくは無いけれど、まさにこの状況とマッチしてる

昨日書いた、辞める気になったら吹っ切れてやる気が出てきた…も、まさにこのスライドに書いてある通り

 

これを社内のSlackに載せたら反応してくれた人がいて、自社でどうやったらコラボレーションの文化が根付くかとか、

そもそも情報が上から降りてこない風通しの悪さもどうにかならないか、という話にまでなった

 

 

今までだと自分でぶつくさ言ってるだけだったのが、人を巻き込むと具体的な話にまでなり得るので良い

 

今後も嫌がられたとしても積極的に人を巻き込んで、手を上げていきたい

 

昨日も楽しかった

吹っ切れてからのやる気

もう辞めてもいいや、と思って上司にその意向を伝えてからは吹っ切れたように体が軽くなった

 

仕事のやり方もそうで、今までなら臆病でできなかったことも、

「どうせダメなら辞めるからやりたいことはやってしまおう」

の精神でいたら色んなことに手を挙げて関わらせて貰っている

 

弊社の社風的に事なかれ主義な感があるので白い目で見られたり我関せずの立場の人ももちろん多くいるけど、

少し興味を持ってくれたり行動しようとしてくれる人がいることがわかって救われている

 

 

年度内に…と思っていたけど、ひょっとしたらこの会社でまだできること、むしろこの会社だからこそ自分主体で変えていけることがあるんじゃないかと思った

 

 

自分がやりたいのは、皆が楽に楽しく働けてなんでも話せる職場、お客様に対して小手先で無く全力で課題解決を支援するような雰囲気を作ること、

行動の背景にある意思をきちんと伝えて、受けても汲み取る会社、

もう少し頑張ってみようかと思う

 

昨日も楽しかった

Oracle | TO_変換がエラーになる場合のデフォルト値が設定できる

Oracle 12cから、TO_DATEに DEFAULT return_value ON CONVERSION ERROR句 というのが使えるようになって、変換できない異常値が入ってきた場合はデフォルト値を設定できるようになたとのこと

 

オプションのDEFAULT return_value ON CONVERSION ERROR句により、charからDATEへの変換中にエラーが発生した場合にこのファンクションで戻される値を指定できます。https://docs.oracle.com/cd/E82638_01/sqlrf/TO_DATE.html#GUID-D226FA7C-F7AD-41A0-BB1D-BD8EF9440118

 

知らなかった… 

 

スロースターター

昨日も比較的ゆっくりした日だった

 

やる気が出るのはだいたい日を跨ぐ直前で寝るのは日を跨いでテレビでドキュメンタリーをやっている辺り

 

それで寝るとだいたい朝も遅く起きる

なんとかならないか

 

昨日読んだ何かで、3日坊主の人は3日坊主を繰り返せば良い、と書いてあった

まさに自分が3日坊主だけど、

連続記録が途絶えると途端にやる気がなくなる

 

ここの閾値というか、途絶えても続けるモチベーションみたいなのを決めたらやる気が連続するようになった

 

気をつけてるのはいつも「やらないよりやった方がいい」ということ

どんなことでも無駄にはならないし学ぶことはある、というマインドで今週もやっていく

 

昨日も楽しかった

土曜日の行動力

昨日は土曜日、先週の記事にもあるように、平日の疲れからか全く動けず…

 

夕方に出かけた以外は寝たきり😪

 

勉強をしたかったのでもくもく会に初参加してみるか…とConnpassを金曜にいじっていたけど、疲れが取れてないだろうなということで断念した

 

次の休みで予定のない日はもくもく会を入れよう

 

しかし、英気を養ったという意味では良い土曜日だった

 

昨日も楽しかった