はてなキーワード: ネストとは
そう思っている。
結論から言えば、SIerで数年働いてウォーターフォールを身に刻みつつWeb技術を趣味で学ぶ。その後アジャイルを標榜しているWebスタートアップに転職すれば良い。
往々にして(少なくとも日本における)Webスタートアップのアジャイルは上手く行かない。なぜならアジャイルとはなんたるかをきちんと学ばず、「なんとなく楽そう」とか「今時でイケてそう」みたいな動機で採用するからだ。
あらゆるプロジェクトが炎上しまくった結果、ウォーターフォールに回帰する瞬間が必ずやってくる。しかしWeb系でウォーターフォールの上流工程ができる人材は割と限られていて、その中にSIer出身でコテコテの上流工程やってたエンジニアが入るとかなり重宝されるのである。
アジャイルは、ウォーターフォールの酸いも甘いも経験してその対比でこそ真の利点が見えてくる。そうしてウォーターフォールもアジャイルも分かってる人材になれば、それだけでそのスタートアップでは唯一無二の存在である。
オーケストレーションだとか自然言語処理だとか純粋関数型だとかCSだとかで技術的に尖ろうとしても、そういう高度なものを求めているスタートアップは実際多くはない、というか既に席が埋まっている場合が多い。
T型人材とよく言われるけど、難しいことは何もなくて、タイトルに掲げた人並のものを2つ持っていればいい。OOPも知らない奴らがネストの深さは何層までだとかタブスペースは2つだとかforeach文使ってるやつはクソだとか表面ばかりに囚われて本質見誤って伸びきったスパゲティを量産しているような現場に、レガシーから飛び出したお前らが新風を巻き起こして欲しい。
そんな私の年収は400万です。
まずはじめに言いたいのは、単なる要望ではなく批判になってる人がいるのはどうなのかなーということ。
そんなに言うなら他にもプロジェクト管理ツールあるんだからそっちに乗り換えればいいのに。
そりゃ自社で承認されてるツールの関係で使わざるを得ない人もいるでしょうけど、自分に合わせるのではなくツールの方に合わせていくのがスマートな使い方だと自分は思います。
というのがあるのですが、タスクの切り方がざっくりしすぎなんじゃないですかね・・・?
ある程度決まったら上のタスクを書き直したほうがいいのでは?
「○○バグ対応」みたいなタスクであればそのタグをつけてもいいですし。
これはあるあるですよね。
オッス、オラオメ子!風俗嬢だ!なんの風俗かって?風俗っつったら性風俗(ソープ)に決まってんだろブッ●すぞ!
これはオラたちから見ればげぇはんだしネスト浅いからまだマシだな!ねぇはんだったりSEXがSEX雇ったりしてると地獄だぞ~!前には冗談でなく6次請けくらいまでみたことあっぞ!どうやって多重派遣じゃないことにしてんのか不思議だぞ~!
「いやいや月70万もらうとか最高やん」?…これは当たり前だけどSEX会社が貰う金だ。新人をほぼ無料でいれたり不採算の他部門に回す金、福利厚生、営業費、事務部署やどっからか来て何してるかわからない老人のために払う給料もこっから出る。別に悪いこととかじゃねぇんだぞ?会社に所属する利益を享受する以上当然のことだ。分業してるだけだからな。嫌ならフリーランスになるってことができる。おめえが「風俗嬢」ならな。
まあなんにせよ実際に本人に落ちてくる金は3,4割ってとこか。客から100くれぇ取ってるオラが40くれぇだしな!それでも上司(チチ)からは利益全然ねぇって怒られんだ!ひゃ~!賞与査定のためにももっとSEXから現場経験ある人引っ張ってこねぇと!
オッス、オラメー子!エンジニアだ!なんのエンジニアかって?エンジニアっつったらIT(システム)に決まってんだろブッ●すぞ!
これはオラたちから見ればげぇはんだしネスト浅いからまだマシだな!ねぇはんだったりSESがSES雇ったりしてると地獄だぞ~!前には冗談でなく6次請けくらいまでみたことあっぞ!どうやって多重派遣じゃないことにしてんのか不思議だぞ~!
「いやいや月70万もらうとか最高やん」?…これは当たり前だけどSES会社が貰う金だ。新人をほぼ無料でいれたり不採算の他部門に回す金、福利厚生、営業費、事務部署やどっからか来て何してるかわからない老人のために払う給料もこっから出る。別に悪いこととかじゃねぇんだぞ?会社に所属する利益を享受する以上当然のことだ。分業してるだけだからな。嫌ならフリーランスになるってことができる。おめえが「エンジニア」ならな。
まあなんにせよ実際に本人に落ちてくる金は3,4割ってとこか。客から100くれぇ取ってるオラが40くれぇだしな!それでも上司(チチ)からは利益全然ねぇって怒られんだ!ひゃ~!賞与査定のためにももっとSESから現場経験ある人引っ張ってこねぇと!
よし、お前の熱い気持ちしかと受け止めた。バズるのは時間帯が悪かったと思うので、次に投稿するときには夜ご飯ぐらいがいいよ。それでは添削してやろう。
継承はだめ、という主張はわかるぜ。継承のネストが深くなるとメンテナンス性が落ちるし、習い初めのバカは勝手にクラスを使うからな。これは同意する。
そう、昨今の業務では継承とか使わない方が良い。何故か?フレームワーク上でビジネスロジックを記載する時代だからだろ?でもな、そのフレームワーク自体はテンプレート・パターンといったパターンが満載で、アスペクト指向を介してログを排出しているのよね。まぁ、素人に継承を使わせるのはキチガイに刃物なのは事実だが、今という時代はフレームワークで刃物をラップできている時代だと思えば、悪くないと思うよ。うん。
リスコフの置換原則は、継承したメソッドは上下で型の変化を無くせ、というだけだろ?それは、ちょっと能力検定には弱いよね?SOLIDの原則について調べてみよう。
「動けばいいじゃん」ってなると思ったので、最初からインデントある世界でやろうってことで、Pythonで教えた。
インデントあるのが普通ってとこからスタートしたから、無いと気持ち悪いらしい。
ぶっちゃけこれも「動けばいいじゃん」って話だと思う。
「○○をするために△△を調べよう」ってのは初心者が嫌がるポイント。
「○○が動いたね」「じゃあ今日は△△の中身を見てみよう」みたいに問題を分ければ達成感あったみたい。
これも上と同じで、「動いたね」「じゃあ今日は昨日作ったコードを整理して行数を半分にしてみよう」とか分けてやった。
その際、「コードをキレイにしよう」とか「コードを高速化しよう」じゃなくて、「ネストを最大3つまでにしてみよう」とか「実行速度を20%早くしよう」とか数値で表せる目標にした。
プログラミングしてて、ある条件のときだけ処理をしてそれ以外は初期値を返す様な関数を作るとき、俺はif文で関数の中身全体を括ってしまう。その方がどんな条件のときに処理をするのかが分かり易いから。
これだったら処理をしない条件をifに書いてその中で初期値を返し、それ以外のところはネストを浅くした方が読みやすい、と言うのがレビュアーの主張だ。
まぁ俺はペーペーだしレビュアーの指摘なので、ド・モルガンの法則を使って処理をしない条件を書くのだけれど、使ってる言語がPHPなこともあっていまいち!の効力を信じきれないし、処理をしない条件を書かれるより処理をする条件を書いた方が読みやすいと思うんだよな。
ネストが浅い方が読みやすいってのは、ループ文のネストだったらまだわかるんだけど(ループ文のネストは処理時間的にも避けた方がいいし)if文でそれを言われるの(3重くらいになってたら言われるのも仕方ないが)あまり納得がいかない。
しかもそのために処理をする条件の逆条件を書くの、スッゲー分かりにくくない?
ねぇXちゃんさぁ。なんでこんな動的なオブジェクトをstaticにしてんの?
これさぁ、そこそこ重いけどさ、セッションごとに生成される一時的なインスタンスで持ってるだけでも十分パフォーマンス的に問題ないよね?
なんでプロセス間でわざわざ共有してんの?
ネットワークリソースつったって利用者はたかだか数百人でしょ?
その中でリソースを同時利用するってゆってもたかだか十数人でしょ?
プロセス内でこのオブジェクトを全共有することでリソースの削減なんてたかが知れてるよね?
それをわざわざプロセス内でこのオブジェクトを全共有ってマジ管理できるの?シンクロナイズドとか書いてっけどさぁ?削減できるリソースの量に比べて超危険すぎねぇ?
コミットログ見たけど、ぜんぜん性能問題とかと関係のない問題の修正だったみたいだけど、なんでこんな危険なコードになったわけ?
Xちゃんさ、そもそもコードが品雑なんだけど、これエンプラJava案件なのよ
なんでCの組み込みコードみたいにif文の鬼ネストとか、引数に空のList渡して破壊的に値を設定するような、読みづらいコード書いてるわけ?
Listくらい普通に返り値で返しなさいよ…
状態管理もif文の鬼ネストやめて専用クラスとかEnum使ってコマンドパターンで対処しなさいよ
もしかして、Xちゃんオブジェクト指向にピンときていないのかな?
俺ちゃんはどっちかってーっとPHPパーなので、ゴリゴリのオブジェクト指向はそりゃ専門じゃないよ
それでもさ、interfaceとか使って、各処理の実装を切り分けるとか、やりようはいくらでもあるじゃん。
あと不要なnullチェックも多すぎです。コンストラクタで初期化が保証されているfinalなフィールド値がnullかどうかなんて確認しないでください
ユーザー入力、DB入力、環境リソースとか、外部の情報起源じゃない変数がnullとか、明らかなバグなんだから暗黙的なぬるぽでクラッシュさせましょう
こんなバグが出荷に乗ることなんてありえません。わざわざ専用のエラー処理で専用の例外飛ばすとか無意味です。
いちいちなんか冗長で複雑なんですよねぇ。
俺ちゃんみたいな若造が、ベテランのXちゃんにこんなこといいたくないけどさ、
Xちゃんのコード。どこか昭和の匂いがするんだよねぇ。悪い意味で。
僕は音ゲーマー、26歳。
あれは2年前のことだった。
キッカケはわからない。突然何もかもがわからなくなってしまったんだ。それまでは、自分の人生を疑ったことなんてなかった。もちろん、24歳で「彼女いない歴=年齢」ということで、色んな人に色んなことを言われたものだ。でも気にしていなかった。僕には音ゲーがすべてだった。
音ゲー。みなさんは音ゲーを知っていますか?僕は知りません。。。
音ゲーって一口に言っても一杯ある。みんなの知ってる太鼓の達人、jubeat、DDR、一杯あるけど、僕は不器用なのでBeatmania IIDXしかプレイしたことがない。しかもSPといって、両手をダイナミックに動かすカッコイイやつじゃなくて、7key+スクラッチという狭い空間を両手でやるプレイスタイルしかやっていない。正直、音ゲーマーを名乗っていいのかわからない。
でも僕は音ゲーが大好きだった。どんなに嫌なことがあっても、音ゲーをしている間は没頭していた。DOLCEさんみたいになりたい。それなのに。。。
突然、「普通」にすごく憧れるようになった。いや、僕はいたって普通だ。特筆する特技もないし、秀でたものもない。成績も普通だった。IT系の専門学校を出たけれどIT系に就職したわけでもない。でも普通じゃない部分があった。人並みの人生経験が足りないということだ。
恋愛はもちろんのこと、旅行もしたことがない、海にも行ったことがない、海外にも行ったことがない。そのことを今までなんとも思っていなかったのに、突然ひどく気になってしまった。こういうの、クォーターライフ・クライシスとか言うらしい。今までの人生のすべてを疑ってしまった。なんだか取り返しのつかないことになってしまった気がした。焦るままに、マッチングアプリに登録した。
。。。そこで何があったのかは書かないでおこうと思う。とにかく、ひどい失敗をした。全部僕のせいだ。
それからしばらくは、何にも手がつかなかった。今までの人生、これでちょうどキリがいいかなとも思った。でも決めた!恋愛はダメでも、ちゃんと自分なりに楽しく生きようと。何もかも「どうせやってもダメだ」と最初からあきらめるのではなく、やれるだけやってみよう!人生、恋愛だけがすべてじゃない!恋愛なしでどれだけリア充できるか挑戦だ!!!
それからは、本当に色んなことに手を出してみた。
まずボルダリングジムに行ってみた。スポーツはからきしダメだったけど、ボルダリングはマイペースにできそうなのが良いなと思ったのだ。小さい頃、木登りに憧れていたけど、身体が弱いので、友達が登っているのを黙って見ていた。でも本当は登りたかった。
ボルダリングはそれはそれは楽しかった。あれは、ただ突起を登るだけじゃない。ちゃんと「コース」が決められているんだ。一つ一つの課題には「使って良い突起」が決まっている。それを上手に使ってゴールする瞬間!!!!!その達成感!!!!!クリアの快感。そこには、もう一つの音ゲーの世界があった。
山登りも始めた。なにより、ボルダリングで女友達ができて、一緒に山に行くようになった。恋仲というわけではなくても、たわいもない話をしたり、一緒にホットサンドを作ったりするのが楽しかった。
そして、IT系にコンプレックスがあったので流行りのAtCoderを始めてみた。頑張るとGoogleに入れたりもするらしいと噂のやつだ。最初はとんでもない天才ばかりかと思ったけど、いや天才ばっかりなんだけど、意外と僕にも解ける問題も用意されていた。AtCoderは登録は簡単だし、初心者用のBeginner Selectionというのがあるし、沢山の人が解説記事を書いていて、とても始めやすかった。最初は何をやっても「WA」とかいうのしか出なくて、ナニコレ!?と思った。WAはWrong Answerの略、つまり間違ってるというこだ。けど、あれこれ試すと突然、緑色の「AC」という文字列が目に飛び込んだ!正解だ!
これはもう、なんというか、凄まじい快感だった。そしてその瞬間気がついた!!お前も音ゲーと一緒か!!!
これはいい!専門学校時代、一応プログラミングを少しは学んでいたけど、特に作りたいものがなくて、プログラマはやっていけないと思った。でもAtCoderなら音ゲー感覚で楽しめそうだ。そう思ってから、いつの間にか沼にはまっていた。「恋愛なしでどこまでリア充できるか」ということで色々やっていたはずなのに、気がついたらAtCoderばっかりやるようになっていた。
最初の壁は厚かった。なかなか茶色になれなかった。でも、あるときふと気がついた。
for (int i = 0; i < n; i++) for (int j = 0; j < n; j++)
こういうfor文がネストするやつ、みんなは抵抗ないだろうか?僕はあった。こんなのが当たり前に出て来るのだ。意味がわからない。でも、ふと気がついた。これって、ゲームのステージ5-3みたいなやつと一緒じゃないかと。外側のループは「レベル」で、内側のループは「ステージ」だ。各レベルのステージを全部クリアしてはじめて、レベルがインクリメントされるのだ。つよつよな人から見たら当たり前のことかもしれないけど、僕にとってこの気づきは決定的だった。なんか急にC問題が解けるようになってきた。だってAtCoderの問題って、「なんか二つ決めるべきことがあって、両方バラバラに考えてると訳がわからないけど、一つを固定するとなんか解ける」みたいのがすごく多いの。
そして300点、400点が解けるようになってきた頃、AtCoderで有名な方が「東大の数学の問題は300〜400点くらい」なんて言うもんだから、「え?なになに!?僕ってもしかしたすごいの!?」と思えてきた。で、調子に乗って東大の問題を見てみた。
。。。。。。。うん...なんもわかんないね。まあそんなもんか。。。
でも、そこには驚きの光景があった。解き方はわかんないけど、問題の意味はわかるようになっていたのだ。僕は学生時代、数学なんて宇宙語でしかなかった。でも今は、問題が何を聞いているのかはわかる!これってすごいことじゃない!?
(ちなみにその有名な方にはいつも本当にお世話になっていて感謝しています。)
びっくりしたので、それまで以上にAtCoderにのめり込んだ。そうしてとうとう緑色になった。Twitterでふと呟いたら、沢山の人が祝ってくれた。嬉しかった。最高の達成感だった。なんだか、ようやく自分の居場所を見つけたような気がした。人の生き方は人それぞれだ。人それぞれ、みんな自分のやりたいことがあって、それぞれの居場所があって、それぞれ一生懸命生きている。そんな当たり前のことにようやく気がついたのだ。
そのときLINEの通知が届いた。いつも一緒に山登りしている友達だ。よくわからないうちに「私と付き合って」と言われた。
びっくりした。でもなんとなく予感はあったのかもしれない。その場で「もちろん!僕も嬉しい!」と返事していた。それからは、僕ららしい生活。特に派手な服を着ることもなく、派手なことをすることもなく、今まで通り山に登ったり、一緒にAtCoderを解いている。こういう等身大なあり方が心地良い。
こんな僕のこと好きと言ってくれてありがとう。