「リファクタリング」を含む日記 RSS

はてなキーワード: リファクタリングとは

2023-06-01

anond:20230531201233

法律って大変だよね。プログラミング言語ならテストコードあればリファクタリングして文章すっきりにできるけど、自然言語にはテストコードがない。コードしかないとか恐ろしい。こういうのもすべて与党不作為だよなあ。

2023-05-27

はてな退職エントリを書いています

私は約3年間、はてなエンジニアとして働いていました。

この期間に、様々なプロジェクトに関わり、多くのことを学びました。

今回は、私が経験した技術的な話を中心に、はてなでの仕事について振り返りたいと思います

 

## RailsでのWebアプリケーション開発

はてなでは、主にRuby on Railsを使ってWebアプリケーションを開発していました。

はてなログはてなブックマークなどの有名なサービスはもちろん、社内向けのツール新規事業プロトタイプRailsで作っていました。

Railsは、高速に開発できるというメリットがありますが、それと同時にコード品質パフォーマンスにも気を配る必要があります

私は、テストリファクタリングコードレビューなどの技術的なプラクティス積極的に取り入れることで、Railsの開発をより効率的安全に行う方法を学びました。

例えば、私が担当したプロジェクトでは、RSpecやRuboCopといったツールを使ってテストカバレッジコード規約をチェックし、GitHub ActionsやCircleCIといったサービスを使って自動化しました。

また、Pull RequestやPair Programmingといった方法を使ってコードレビューを行い、バグ改善点を見つけたり、知識ノウハウを共有したりしました。

 

## クラウドサービスでのインフラ構築

また、はてなでは、AWSGCPなどのクラウドサービス活用してインフラを構築していました。

私は、DockerKubernetes、Terraformなどのツールを使って、コンテナ化やオーケストレーションインフラストラクチャ・アズ・コードなどの技術実践しました。

これらの技術は、開発環境と本番環境差異を減らし、デプロイやスケーリングを容易にするという利点がありますが、それと同時に複雑さやトラブルシューティングの難しさも増します。

私は、モニタリングロギングアラートなどの技術的な仕組みを整備することで、インフラ運用をより安定的信頼性の高いものにする方法を学びました。

例えば、私が関わったプロジェクトでは、DatadogやCloudWatchといったサービスを使ってシステム状態パフォーマンス監視し、SlackやPagerDutyといったサービスを使って異常や警告を通知しました。

また、ElasticsearchやFluentdといったツールを使ってログ収集分析を行い、原因究明や改善策の検討に役立てました。

 

## チームでの協働

はてなエンジニアとして働くことで、私は多くの技術的なスキル知識を身につけることができました。

しかし、それ以上に大切だったのは、チームで協力して問題解決することでした。

はてなでは、エンジニアだけでなくデザイナープロダクトマネージャーなどの他職種とも連携してプロジェクトを進めることが多かったです。

私は、コミュニケーションフィードバックドキュメンテーションなどの技術的ではないスキル重要だと感じました。

私は、自分意見提案積極的に発信することで、プロダクトやサービス品質価値を高める方法を学びました。

例えば、私が参加したプロジェクトでは、SlackZoomといったツールを使って日常的に情報交換や相談を行い、BacklogやJiraといったツールを使ってタスク管理や進捗報告を行いました。

また、FigmaMiroといったツールを使ってデザインアイデアの共有やフィードバックを行いました。

 

## 退職への決断

私は、はてなエンジニアとして働くことがとても楽しく充実していました。

しかし、私は自分キャリアについて考える中で、新しい挑戦をしたいという気持ちが強くなりました。

私は、自分の興味や関心のある分野にもっと深く没頭したいと思いました。

そこで、私はこの度、はてな退職することにしました。

私は今後、別の会社エンジニアとして働く予定です。

 

## おわりに

はてなで働いた3年間は私にとってかけがえのない財産です。

私は、はてな出会ったすべての人に感謝しています

に私が所属したチームのメンバーには大変お世話になりました。

彼らから学んだことや刺激されたことは数え切れません。

彼らと一緒に仕事ができたことを誇りに思います

彼らに感謝する気持ちを込めて、このエントリーを書き終えたいと思います

 

以上、AIによるフェイ記事です。

どの程度、真実味がありましたか

2023-05-23

可読性悪すぎるコード拡張を頼まれたらリファクタリングするか?

自分なら自分拡張のために書き直さないといけない部分だけ書き直すし、書き方も前の人に合わせて書く

それ以外は怖いので書き直さな

2023-05-22

零細だろうがメガだろうがベンチャー技術力はない

そもそも高い賃金が欲しくてプログラマーになったようなやつは勘違いしているようだけど

技術系は普通社員より給料が低くて当たり前だ

なぜなら経済として会社を支えているのはどんなときでも営業から

優秀な営業なら技術がなくても売れるし

現に9割9分の会社技術などないが営業が優秀なので存続している

(ちなみにここでいう営業というのはプロモーション戦略系も含まれる)

例えば流行機械学習生業としているようなベンチャー企業であっても

価値の大半は要件課題定義ドメイン知識抽出であって

最新のトレーニング手法パラメータ定義なんかを使っても得られる利益ほとんど無いのだ

Web系でもAngularだろうがReactだろうがVueだろうがどうでもよくて

とにかくデザイナーの出したものを忠実、もしくはそれ以上のものを生み出せれば技術などどうでも良いのである

「5年後に技術負債になるかもしれない」

という人もいるが、残念ながら全ての技術は5年後に負債になっている可能性が等しくあるということを理解していただきたい

そんな中で日本での人材流動性の高まりであるとかプログラマー育成問題なんかもあって

技術系(プログラマー)の市場価値が高まりたまたま今だけ高給になっているわけである

卵が少なくなって卵の値段が上がったとしても

その卵が美味しいかと言われるとそんなわけはないのだ

どちらかと言うと腐った卵まで流通するのが恐ろしいところである

私が見てきたベンチャーの腐った卵には下記のようなジャンルがある

テックマウントパワハラ

メガベンチャーや伸び盛りのベンチャー系に多く、特に旧帝大出身特に東大)に多いのがこのパワハラ

とにかく(自分の)理論が正しいということを前提に自覚無くパワハラを繰り返す

これが雇われ社員ならそれほど問題でもないのだが、経営者側のCTOなどだった場合は目も当てられない

テックだろうがベンチャーだろうが雇用主と雇用者という関係性は変わらないのに平気でゴリゴリパワハラを行う

雇用主側に主張されると組合も無い弱い立場雇用者は何も言えない

その状況を理解していないのか雇用主側のパワハラエスカレートしていく傾向にあり

社員退職するが新しい人材は集まらずたいていの場合は逆に雇用主側が病む

この手のテックマウントパワハラ系の特徴は、ドメイン駆動や過度の抽象化、もしくは無駄高速化機械語への執念などが挙げられる

例示するのは難しいが、PRを上げてきた新人社員Slack上で公開にボコボコ論破した上に

「こんなことは一般企業として当たり前のこと」

社会人としてできて当たり前」

「他の企業に行っても絶対役に立たない」

みたいなことまで説教を始める人を何人か知ってる

結局全部自分でやる系

小さめで大きくなってきているベンチャーに多いのが、この結局全部自分でやる系

部下や委託者に対する指示はかなり抽象的、もしくは指示が無く

締め切りの前日もしくは当日、もしくは過ぎた後に自分で全部やり直す人

それまで部下や関係者が相談しつつ進めていても結局は全部ぶち壊して全部自分でやる

「全部自分でやるなんて技術的に凄い」

などというのは完全な素人で、単に他者業務依頼できない人である

その証拠に出来上がったもの特殊ことなどなく

「言ってくれればもっと早く出来たのに」

ということしかない

そんな調子で依頼することができないので結局は自分実装を繰り返し更に時間がなくなる

本人は多忙なくせに部下は暇という典型的ダメ管理者なのだ

「俺ほどの技術力を持った人がいなくて困る」

みたいな自己肯定感を醸成しているのでそのうち上のパワハラ系へと移行していく

特徴としてはSlackしろPRしろ話が抽象的すぎて文章力が無い人である

「1を聞いたら10を知るのが当たり前だろ!」

と言う人が多く(1と10から100は分かるけど1だけで10を知ったら変態ですよ)

タスクの分割や共通化などがひどく苦手な印象がある

ヒドイ人になるとIssueやPR管理全然できず、ブランチ規則無く乱立してしまっていて

新しく入った人もいったい何をどうすればいいのかさっぱり分からない状況で放置してしま

これも例示すると、新サービス仕様だけは決まっていてページレイアウトが無い状態

デザイナーの配属が難しいので実装側が考える、ということになったとき(割とある

「せめてテーマカラーかぐらい決めて下さい」

と言っても音信不通で渋々とこれまでのレイアウト踏襲して3人できっちり作ったところ

リリース前日になってCTO徹夜で全部作り直す、ということがあった

レイアウト全然変わっていて、実はニュースリリースの段階から新規テーマになることが決まっていたらしく

それに合わせて全部作り替えたそうだ

新規テーマは1ヶ月も前から決まっていたのだから共有さえしてくれればそれに合わせて作ったのになぁ、という話をした

余談だがこういうときにこの手の人が「デザイン共有できず申し訳なかった」というような一言ほとんど無い

そういうコミュニケーションが取れる人は最初から業務依頼ができるのだ

技術無いけどとにかく頑張る系

最後最近一番多いのだが、単に技術力が無くて頑張ってるだけの技術

社員だけでなくCTOにも多い

技術力が無い、というのがどういうレベルかというと

JavaScriptリストの中に'apple'があるかどうかを調べる時に array.includes('apple')と書くとして、

10個のフルーツリストがあってそれらが含まれいるかを調べる時に10個のincludesを書いてしまうような人である

「せめてfor文で書こう」「そもそもデータ構造おかしい」「というか本当にやりたい処理は?」

などなど様々な疑問が出てくるが、不思議なことにこれらを指摘しても絶対に直ることは無く、全く同じことを何度もやる

他にも例えば男性女性かでメッセージを変えて出力しているコードがあったとする

if( gender === 'male') {
...
} else {
...
}

これに、20歳以下の場合は男女共通で違うメッセージを出す場合

if( gender === 'male') {
  if ( age <= 20 ) {
   ...
  } else {
  ...
  }
} else {
  if ( age <= 20 ) {
  ...
  } else {
  ...
  }
}

みたいなコードを書いてしまう(20歳以下の部分は同じコードコピペ

メッセージ表示させるだけなら大したことないが、実際にはもっと複雑な処理をコピペで貼り付けるのである

そのため

20歳以下の表示部分のバグについて、男性場合は直ってるけど女性場合に直ってない」

という謎のバグを生成するし、そのバグ修正

if ( gender === 'female' && age <=20 ) {
...
}

というコードをこれより前に追加して更にカオスになっていく

これでもだいぶオブラートに包んでいて、実際にはもっと複雑なロジックをぐちゃぐちゃのまま整理せずに追加するのでとてもじゃないがメンテできない

最近だとそういう部分はまとめてChatGPTに放り込むと綺麗にしてくれるので非常に助かっている)

こういう低レベル技術者は結構いるのだが、大企業だと時間をかけて成長していくのに対して

ベンチャーになると自己肯定感が高いのか成長せずに偉そうである

「動いてるものは触らないで欲しい」

こちらの方が自分は分かりやすい」

Javaだとこういう書き方するんだよね」(そんなことはない)

みたいなことを言って、とにかく学習しない

CTOシニアエンジニアに非常に多く

曲がりなりにもそういう職に一度就いてしまうと指摘されることもないので学習しないんだと思う

特にCTOだとあくま雇用主側の立場なので雇用者側から指摘されることも少ないし

同業他社レビューなんてのもないからそこで時間が止まってしまうんだろうな、という感じ

こういう技術者のコードでも、見た目は動いているので営業から見ると売るには問題ないのだ

なので営業が優秀だと下手に売れてしまって成功体験からますます自己肯定感が増して手が付けられないモンスターCTO誕生である

メガベンチャーありがちな

成功してから伸び悩んで大手企業が買収したけど技術負債が凄まじ過ぎてリファクタリングだけで一大プロジェクトになる」

リファクタリングが上手く行かずに仕様変更することになって『大手企業に買収されてダメになった』というレッテルが貼られる」

「当時のCTOは別の会社で新しい事業CTOとして活躍している」

という流れはこうして生まれている

ベンチャーに行っても技術力は身に付かない

以上のようにまともに技術力を伸ばしたいのであれば大手企業に入ってプロダクトに携わるか

もしくは自分セミナー等に参加して技術収集をするしかない

「一流技術者として将来は高収入を」

などと考えてベンチャーには絶対に行ってはいけない

2023-05-21

リファクタリング追放ざまぁ

幼馴染同士で作ったベンチャー企業でクソコードメンテナンスばかりやってた主人公追放されて転職して、元の会社は重複するコード分散してバグフィックス不能に陥って損害出して倒産して、主人公転職先の安定した大手メンテナンススキルでめちゃくちゃ評価される話を書いたら、コメント書いてただけの人にめっちゃウケそう。

anond:20230521022512

酷いコードリファクタリング、書いた人よりも能力がないと大抵上手くいかないので、「酷いコードだな〜」と思いながらほーんと読めるくらいの能力がないのにリファクタすれば読めるようになる!はそりゃあ失敗するわと思うし、まずは能力をつけるために頑張って手を動かすのが重要だったんじゃないですかねえ

リファクタリング話題で「テスト」というワードが出てこないとき

[B! エンジニア] 自社開発メガベンチャーをわずか半年で鬱退職した雑魚エンジニアの話|JoanOfArc

あのさ、リファクタリングを扱った書籍では「まずテストを書け」ってほぼ確実に書いてあるんだよ。

なぜかというと、挙動を変えないのは難しいから。

意図せずバグが発生するように、意図せず挙動を変えて壊してしまうことは不可避だから

なのでまず(粒度は荒くてもいいから)回帰テストをできるようにする。

リファクタリングはその後の話。

だというのに、元記事には一切「テスト」というワードが出てこないんだよ。

挙動保証せずに「挙動は **たぶん** 変わってません」と言ってソフトウェアを壊したら本末転倒だろ。

リファクタリングという手法の上っ面だけマネして、中身をまったく理解してないんじゃないか

彼の提案がなぜ受け入れられなかったのか、それは彼の行為カーゴ・カルトだったからだと俺は思うけどな。

2023-04-22

anond:20230421235820

あなたプログラミング言語Rubyの熱心なユーザーですプログラミング言語Disコンテストというものがあり、静的型付け言語を動的型付け言語でもあるRuby視点からバカにすることになりました。ユーザーなら思わず納得するような視点も交えつつ、静的型付け言語デメリットを200字程度で攻撃してください。

ChatGPT(GPT-4)

静的型付け言語の愛好家よ、それでも本当に静的型付け言語が優れていると思ってるのか?Rubyのような動的型付け言語の柔軟性と自由さを体験したら、君たちも考えを変えること間違いなしだ。

まず、静的型付け言語は、コンパイル時に型チェックを行うため、開発速度が著しく遅くなる。それに対してRubyは、型の宣言不要で迅速にコードを書き進められる。煩雑な型宣言時間を浪費するなんて、プログラミングの真髄から外れているだろう。

次に、静的型付け言語は、型の制約が厳格すぎて、柔軟な実装が難しくなることがある。それに対して、Rubyは動的型付けのおかげで、データ構造アルゴリズム自由自在に操れる。革新的ソフトウェアを生み出すのは、やはり柔軟性が重要だ。

最後に、静的型付け言語ユーザーは、型の間違いを恐れてコードリファクタリングをためらうことがある。しかし、Rubyなら型に縛られず、思い切りリファクタリングができるので、保守性も抜群だ。

まり、静的型付け言語は開発速度の低下、柔軟性の欠如、保守性の悪化を招く。Rubyのような動的型付け言語を使えば、これらの問題解決され、プログラミングもっと楽しくなるぞ!

自分で設定しといてなんだけどめんどくさいなRubyユーザー

2023-04-12

副業プログラミングしんどい

副業案件ってだいたい

っていう感じのばっかりで揃ってゴミソースなんだよね

バグがあるとかないとかそういうレベルじゃなくて

「よくこれでビジネスやってるな」

っていうレベルのものばかり

おまけにコミュニケーション取りづらい陰キャばっかりだから

セキュリティ的に相当マズいですよ、これ」

とか言っても全然直そうとしないし

「ここリファクタリングしないと新機能なんて追加できないですよ?」

っていう意見全然分かってくれない

まぁ上手く行ってるとこは副業採用しないか

だいたいがヤバイ状態のものばかりなんだよな

そんな感じでストレスしかまらいから2,3ヶ月もするとしんどくなってくる

報酬は貰えるけど時間は削られるので余暇を楽しめなくなるし

なんのために報酬貰ってるんだっけ?っていう気分になる

2023-03-20

クソコードを直してくれない

大手メーカープロダクトについて手伝って欲しいってことで業務委託で入ったんだけど

元々のコード大手メーカーの中堅社員自作したものらしく

見させてもらったんだけど、まぁクソコードでした

どれぐらいクソかっていうと{ apple: 100, banana: 200, orange: 300}ってなってる中からorangeの値を取ってくるとき

for文でkeyループして一つ一つをイコール比較して見つけたらbreakするっていうコード日常的に使われてるぐらいクソ

他にも数え上げたらキリが無いんだけど「難しくて読めない」じゃなくて「アホすぎて読む気が失せる」っていうコード

そんでそのクソコードに対して追加機能を入れてくれって言われたんだけど

こんなクソコードだとバグを引く可能性がめちゃくちゃ高いし作業効率化のためにリファクタリングしましょう、って提案

速攻で却下されて結局そのままのクソコードを使って実装

結果としてはこの半年ぐらいで想定の進捗の半分ぐらいしか行ってない

最初半年でコレぐらいができるって言ってたのに半分しか進んでないぞ!」

とか言ってくるんだけど

「だからリファクタリングしないと作業効率悪すぎて全然進めないですよ、まずはリファクタリングしないと無理ですよ」

って言っても全然理解してくれない

ちなみにその人の実装スピードはこっちの3分の1ぐらいなので慣れたら早いとかそういう問題じゃ無い

非エンジニアリファクタリング理解してくれない人ってのはまだ分かるんだけど

エンジニア自分コード書いてて自分も困ってるのにリファクタリング同意しないとかホントどうかしてる

2023-03-14

ChatGPTでソースリファクタリングしてると

snowが世に出てきて顔面に加工というものを初めて施した当時の気持ちになるな

うわーめっちゃ一瞬で良い感じになった、でもちょっとキモいところがあるから微調整したいなっていう

2023-02-15

純粋質問ですが」なんていう純粋質問存在しない

質問するシーンというのは

1.無知により分からいから教えて欲しい時

2.意図が読み取れなかった時

3.変更して欲しい時

4.複数案があって、ソレを選択した理由がほしい時

5.承認するかどうか迷ってる時

 

1の時は言葉尻が変わる、「◯◯について詳しくないんですが」あたりが付くだろ

2の時はコードが悪いわけだから質問じゃなくて「意図が読み取れなかった」わけだから悪いコードだ、「修正しました」というのは「修正したけどこれなら意図わかるか?」だ

3は質問ではなく指摘

4も表現が変わるはず、「AとBがあると思いますが、Aにした理由は何ですか?」

 → 特に理由もなく、Bのほうが良いと思ったら「修正しました」となる

 → Aにした理由があれば、回答が返ってくる

5はただの圧、上司による「やりなおし、理由自分で考えろ」と同じ

確固たる理由があれば返ってくるが、そうじゃない場合はよりリファクタリングをした上で理由をつけて返したくなるので「修正しました」となる

 

まり純粋質問ですが、どうして〜〜なんですか?」なんていう純粋質問は基本存在しない

多義性を孕むので表現を返るべき

 

1.「◯◯について詳しくないんですが」

2.意図が読み取れないので、説明修正をお願いしま

3.◯◯は修正してください、もしくは説明をお願いしま

4.AとBがあると思いますが、Aにした理由はなんですか?私は優劣つけられないんですが

5.この部分について◯◯の懸念がありますが、〜〜とした理由修正をお願いしま

 

てか、「どうして〜〜なんですか?」ってレビューで書く人、リーダブルコード書けないだろ?

(難しいコードを扱えると言う意味で)優秀な人の中に沢山そう言う奴らが居るから嫌なんだよな

2023-02-09

100年後、結婚家族は消えるのか?

そもそも結婚があって、家族があって、両親があって、姓名があって、というのは数十万年人類生活方式によるものだった

それは一族を作った方が生き残れたからという自然淘汰の話だが

ようやくその傾向が薄れてきていると思う

原因はインターネットの登場だろう、これにより全国民に対して一律のサービス提供できることになった

まだ国の枠は残っているが、インターネットサービスによっては国の枠すら超える

平等もこの数百年で勝ち取ったので、もう必要なのは人権のみだ

 

そうなると、家族の意義はかなり薄れてくる

血族は現実問題消えないだろうし、幼少期の育ての親という関係も消えない

ただ成人してしまえば本当に関係希薄になる

成人してから人生は約60年もある、こっちのほうが圧倒的に長く、社会家族主義の設計にしなくても良くなってきた

何ならそういうしがらみが嫌な少数派の声が大きくなってきている

シングルマザーシングルファザーもそうだし、LGBTQもそうだし

じゃあ家族主義の設計は無くしていく方向にリファクタリングするんじゃないの?というのは考えとして自然だと思う

 

とは言え置き換えるコストが大きいし、今特別困っているわけではないので、その変化はゆっくりと起きると思われる

100年後か200年後か

というか、そこまでいくと子供が母のお腹から出てくるかどうかも怪しいね

2023-01-03

Colabo騒動自由を得るため皆で関われば良いのでは

以前このようなエントリ投稿したのだが、このエントリ文脈を前提にColabo騒動を考えるのであれば「自由を得るため皆で関わろう」という考え方になる。
ボクのような性質を持った人間情報オープンであることが望ましいと考えるし、その観点から言えばColaboは保護している女性危害が及ばないよう慎重になりながら情報可能な限りオープンとし、我々市民自治体や団体と連携しつつオープン情報活用してデバッグ(検証)とリファクタリング(最適化)を行えるような体制を築いたほうが良い。

そのようなもの理想論だと言いたくなる人も居るだろうが、我々は理想を実現するためにFLOSSやGNU標榜しているのでは無かったか
理想論、それは褒め言葉だろう感謝する。

GNUそもそも製品無償提供サポート業務有償で請け負うと言ったビジネスモデル提唱されている。
そのような中で発展したGNU/Linuxはプロプライエタリ代表格であったMicrosoftWindowsのサブシステムとしてGNU/Linuxを取り込むといった成果が近年見られるし、より一般大衆目線で事例を挙げるのであればAndroidスマートフォンGNU/Linuxベースだ。

FLOSSやGNUの事例を参照し、女性保護無償で請け負いつつも生活サポート有償で行うというような、無償を支えるための有償ビジネスモデルとして様々な無償-有償パターンを洗い出し・議論し・試験し・実現していくことこそ、女性が、そして我々が自由を得るために必要な行動なのではないかと皆さんへ問いたい。

ボクは以前のエントリで語ったように思想には詳しくない。
しかしボクがよく知るハッカー文化は、万人が自由アクセスできる環境や道具や制度を揃え、万人が自由にそれらを選択活用し好きなものを好きなように好きなだけ生産できる社会を是とする。
様々な事情により不自由であった女性保護された先で、自由に使うことが可能選択できる環境や道具や制度社会にあることを知り、好きなものを好きなように好きなだけ生産できるようになることは素晴らしいことじゃないか
更にその生産するまでの過程オープンであるのならば、それを見て憧れ、1人2人と自由に至る女性が増えていくことへ繋がる。

「失敗したらどうするのか?」と言いたくなるだろう。
そんな意見への返答は「動かせばバグ出る!ボクたちはそれをよく知っている!」だ。

バグを恐れるな先ずは動かせ!壊れたら、落ちたら、問題が見つかったら検証し取り除こう!
それがボクたちのやり方だし、だからこそ検証可能性は担保しておかなければならない。だからこそブラックボックスはいけない。

Colaboだけでなく全ての団体へ言おう!
自由オープン社会を目指そう!自由オープン団体となろう!

ボクはそうなれるようこれからもColaboだけでなく全ての団体応援し、FLOSS活動を通してColaboだけでなく全ての団体へ貢献していく!

2022-12-02

anond:20221202113512

恐らくニーズが変化しないような機能しか実装してきていないからそういう感想を持っているんじゃないか

基本的プログラム機能が増えるほど複雑性が指数関数的に増えて行くので

如何に単純な機能の組み合わせで実装を進めていくかっていうのが大事だけど

それを最初から考えて実装するのは無理なので実装リファクタリングを繰り返す必要がある

最初から完璧設計が出来ていればリファクタリングしなくて良い」というのは正解なんだけど

ユーザーニーズは常に変化するから最初から完璧設計っていうのは神にしか出来ない

設計を変えず、リファクタリングもせずにユーザーニーズに応えようとすると単純な機能の組み合わせで実現できなくなってくるから難解な作業になる

この辺が「プログラミング単純作業じゃ無い」っていう根本にあるんだけど

ニーズが変化せずに最初設計から変える必要がないようなシステムだと「プログラミング単純作業」とかいう発想になるんだと思う

2022-11-30

並列処理をまともに書けてる人をほとんど見たことない

オーダを知らないで書かれたコードなんかよりもっとやばいのが並列処理な

爆弾みたいなもんだけど、世の中のシステムにかなり内包されてる

レベル1:単に並列処理として書いてあるだけ

レベル2:とにかくロック

レベル3:並列処理しない

レベル4〜99ぐらいまで

  • この辺は無い

レベル100:アーキテクチャレベルでのシンプル設計と性能保証


こんな感じで人類はまだ並列処理の最適解を見つけていない

そのくせに「並列化したら早くなるよね!」っていう人が多いので事故ることが多い

2022-11-24

Twitterが糞コードの巨塔みたいになっちゃうのはほぼ確実かな

Twitter社員がよくわからん基準で次々に解雇され、週報まで求められるようになったとのニュースを読んだ。Twitter社員に対し、明確に「すぐに目に見える成果を出せないやつはクビだ」というメッセージを発している。

こうなると、社員としては受けの良いタスクばかりに集中することになる。具体的には、新機能実装だったり、新しいインフラへの移行だったり、UIの変更だったり。

バグ修正……3週間調査してコード修正は1行だけみたいなのはザラ……は、当然のように優先順位が下がる。というかそういうタスク時間を使っちゃったエンジニアは、自動的解雇される。既存不具合が直ることはもう期待しないほうがいい(いやもちろん、週報読む人が「これは難易度インパクトも大きいバグだったんだな」って評価してくれればいいけれど、期待できないでしょう)。

新しく作られたものも、品質はおそらく悲惨ものになる。コードレビューは手抜きになるだろう。だって自分の実績として週報に書けないし。普通リファクタリング(コードの整理)をしてコードの複雑度を下げてから機能を足したり修正したりするのだが、雑にコードを足すだけになってコードの複雑度が一方的に増加していくようなことになるはず。だってリファクタリングとか人事考課評価されないでしょ。

そもそも、残っている全員が誰もTwitterの持続可能性を気にしていないんじゃないかと思う。ビザホルダーは永住権取るか良い転職先が見つかるまで職を維持できればいいやとしか思ってないだろうし、「ハードコア」に共感した人もなにか一発当てて去っていくことしか考えてないだろう。だから、誰にとっても技術負債なんて知ったことではない。どうせ数年以内にクビになるか転職するし。

心理的安全性のなくなった職場生産性の低下度や、SREがいなくなったことによるサービス品質の低下については、正直なところよくわからない。まぁ、上がりはしないんだろうけど、もしかすると大して影響ないのかも。

ただ、Twitterが糞コードの巨塔みたいになっちゃうのはほぼ確実かな、とは思う。

2022-11-01

anond:20221101000929

リファクタリングができなくなるとか、書いたものリライトが難しくなるとか、そういうイメージだな(こっちは)

とりあえずコンサータはもう滅多に出ないんちゃうけ?

不幸にも例の試験でアウト判定食らって病院通いになった奴なら一度はリタさんとコンサータリクエストするけど

2022-09-26

生産性ってなんだろ

ある部分を修正してくれと頼まれとき

という2種類がいるらしく、俺の場合は前者の対応が多いんだが、後者対応をするようなのもいる。まあ開発者個性だけじゃなく状況要因もあるかもしれんが。

「とりあえず終わらせろ」には賛否があるが、リファクタリングがきちんとできるプロセス運用してるなら「とりあえず終わらせろ(そして段階的に修正していけ)」でいい気もするが、「一度書いたら修正が難しいです」とかバカなことを抜かす連中は「とりあえず終わらせろ」という指針でゴミを作ってもらっちゃ困る。

追記: 30分考えて2行削減、というのもある。

2022-08-23

SIer業界にいて不思議だったこ

客が大企業で古いシステムサポートが切れるから新しいものを入れる、みたいなやつ。

なんか新しいシステムを入れるのに、古いシステムのどれだけ満たすか、独自開発がどれぐらいいるか、みたいな調査をするのだけど、なんかアホだなって思ってた。

古いシステムそもそも魔改造されてるわけで、サポートが切れるっていう意味もよくわからず、古いソースコードが急に消え去ったりするということなのだろうか、という疑問があった。例えばJavaフレームワークが古く、アップデートできない状況ならば、なんとかしてリファクタリングするなりして解決したらいいのではって思ってたんよね。

なんで全く新しいシステムを入れて、炎上プロジェクトにするんだろうって思ってた。

2022-08-18

anond:20220818112719

リーダブルコードコードコンプリートを読み読みやすコードの基本を知る

アルゴリズムをきちんと勉強をする

リファクタリング系の本を読みクソコード観を養う

・何か適当要件に沿ったコード自分実装する

 実装後に本のサンプルやOSSなどお手本と自分実装を見比べて改善点を学ぶ

OSS開発に参加してボロクソに叩かれる

2022-06-14

anond:20220614010758

時給1000円だと16万5000円にしかならないのヤバい

まともなインターンでも酷くて時給2000円とか普通で時給3000円なのに、それよりも低い価値しか提供できないのか?

技術検証とか、リファクタリング試行とかインターンやらせたりするが、10年やってもそのインターンよりも低いレベルなのか?

孫請けSIer零細企業だと月給20万円とかい世界があるのかもしれんが、もしインターンより安いのが当たり前だと思うなら転職した方が良い。

クソみたいなJST大手SIer雇用してる低レベルプログラマーでも月100万円/人月で、

月稼働時間が(22日*7.5時間/日=)165時間だとすると、時給6060円だぞ。

200万円/人月だと時給1万円越えるんだぞ。

簡単なことをやるにせよ、

2022-05-24

anond:20220524083518

そのとおり。

だけどマウント取りたいやつらはドヤ顔で「リファクタリング(笑)」するんだよなあ。

一部のベテラン様がそういう性格だと終わりだね。

パワハラもつながるからあっという間に崩壊する。というかしてきたところをいくつか見てきた。

ログイン ユーザー登録
ようこそ ゲスト さん