「競技プログラミング」を含む日記 RSS

はてなキーワード: 競技プログラミングとは

2024-07-06

https://b.hatena.ne.jp/entry/4755864976177875616/comment/thongirl

偏見を恐れずに言えば、こういう人たちが競技プログラミングに惹かれていくんだと思う

これはあるかもしれんなあ

ソフトウェアエンジニアリングっていろんな能力集合体承認を得るのは相当大変なんだけど、あれはコーディングだけで端的にスコア順位承認が得られるもんね

2024-07-02

自称パソコンに詳しい氷河期世代おっさんプログラミングやらせたら、セグメントツリーも尺取法も知らなくてドン引きした…今まで何を学んできたんだ?

会社ホームページ求人プログラマ)欄に申込があったので

見てみた


見ると46歳のおっさんだった


面接を設定して自信満々に「プログラミングには自信があります!26年間勉強してきました」とのことだった


試しに簡単コーディングテストをやってもらった

するとセグメントツリーも尺取り法も知らないようでびっくりした

大学1-2年生くらいのアルゴリズムで習う知識なのに


びっくりして詰問してみると

しどろもどろになった

聞くと今まで高度なアルゴリズムをあまり使わず…とか言い出した

いやいや高度どころかガチで初歩的な内容じゃん

競技プログラミングとかでも初歩的な内容だから高校生とかが勉強して2-3日目に覚える知識でしょ?


26年間何を勉強してきたんだ?

お前の人生なんなの?嘘をついて他人嫌がらせするために生きてるの?って

2024-06-29

anond:20240625191650

IT業界関係ないけど、弊社の問題児のこと言ってるのかと思っちゃった

競技プログラミング出身者っていうわかりやすい(しかも本人は喜んで教えてくれそうな)目印があっていいなぁ

人を雇うのってどこまで行ってもガチャ要素あるよね

2024-06-28

みなさんは本当にプログラミングができない人ってどういう人なのかご存じない

プログラミングできることをどうやって証明するか?その一つが競技プログラミングであって、それ自体は素晴らしい取り組み

それだけでプログラミング言語を読み書きできるってことがわかるわけよ

普通、そういう客観的指標を持ってる奴いないよ?基本情報とか応用情報なんかでもプログラミングできることは証明できないからね

会社の人事は「本人はプログラミングできるって言ってましたー」程度で採用して良いと考えてる節まである

採用実績さえ上げれば中身なんてどうでも良いと思ってる

競技プログラミングが実務で役立たないのは分かったけど、はてな匿名ダイアリーって役にたつの

俺は役にたつと思ってるよ(チュッ

競技プログラミングが実務で役立たないのは分かったけど、isuconはどうなん?

https://isucon.net/

ISUCONとはLINEヤフー株式会社運営窓口となって開催している、お題となるWebサービスを決められたレギュレーションの中で限界まで高速化を図るチューニングバトルです。

過去の実績も所属している会社も全く関係ない、結果が全てのガチンコバトルです。

<<<

競技プログラマーみたいにisuconerのクソなとこってあったりする?

anond:20240628132620

正解が「数学的」に決まるところ。たとえば「1■1=2 のときに ■を答えなさい」というときに競プロは■を答えるだろうし、それを早く答えて悦に入るだろう。

それもいいけど、いちど数学的に答えが決まっちゃう問題ライブラリにまとめられて、一般的コーダはなにも考えなくてもインポートして処理できちゃうわけ。上の例えだとふつーのプログラマなら「枯れたライブラリインポートして、正しく答えが出ると確信できるなら『答えは正しいとか考えなくても』それを使って対処する」ので、データの振る舞いとか気にしないで済む。たとえば SQL なんて、実行時計画という「アルゴリズムを常に指定するなら不要な」話題があるのだけど、データ量によって適切なアルゴリズムが変化するから仕方ないし、概ね RDB は賢いのでヒューマン考慮するのは問題がある場合だけなのだ。よって、競技プログラマが生産性を確実に上げるという根拠はない。

もちろん、アルゴリズム知識を身につけるのは大切だし、クヌース先生も書いてたけど分散処理アルゴリズムフロンテイアだろうよ。というか、暗号分野やセキュリティ領域や、条件が過酷場合宇宙線の影響下とか、メモリの少ないエッジコンピューティングとか)だと、アルゴリズム研究や追求は大切なのは今も同じだ。でも、競技プログラマが新規アルゴリズムを開発したり、セキュリティに向上したという話は聞いたことがないが、レッドコーダ諸君は自前で創造して使われた実績はあるのだろうか?

ついでに聞いてみたいのだが、競技プログラマたちは「マルチスレッドコードで早く書こうとしないのはなぜ?」「そもそも競技プログラミングで使うコードは便利なスニペッツがあるけどそれってチートでは?」「ときどき正規表現で解く問題があるけど、そのとき計算量は無視してない?」という矛盾を抱えているのてはないか?と思うのだが如何か。

究極的には競技プログラミングに必要知識というのは、産業用途要求される知識の一部でしかないのが問題なんだと思うよ。ほら、アレだよ、むかし話題になった「数学だけデキる人向けの東工入試をやったら、英語ができなくて卒業できなかった」という童話に近いんだよ。競技プログラムってインとアウトしか見てないブラックボックステストから、ここだけしか計算機科学の知識が無いというヤバ人材の育成しかなってないのだろうな。

それで、結語として「答えのある問題に特化した競技プログラマー」のヤバい理由として、列挙していくと

ということは、競技プログラマーは考えても良いのではないか

競技プログラミングって仕事ができない人が現実逃避のためにするものって理解でよろしいか

anond:20240627155027

コーディングインタビューするときにその辺のセンスを問うような問題を出すようにはしてるね。

最近採用インターンからが多そうだからそもそも一緒に働いて難がある人は採用されないようになっている気がする。

入社してからは可読性・保守大事って相当叩き込まれる気がする。

コードのものの書き方もコードコメントもそうなんだけれど、コミットログとかレビュー依頼とかからも気を付けるようにしている。

レビュー依頼でもその変更をするにはどういう背景があって、何をやっていて、選択肢がある場合はなぜこの選択肢を選んだのかについて説明する。

それはレビューアーのためというよりも未来自分のために。

競技プログラミングをやる人を採用するにしても、末端のプレイヤーではなくて競技プログラミング用のライブラリー保守メンテナンスしている人を採用したほうがいいと思う。

保守メンテナンスには長期のメンテナンスという視点がどうしても不可避だと思うので、産業としてのプログラミングを割と理解やすいかすでに理解していると思うので。

競技プログラミングの人もIQEQ労働力が低ければ相応の身分

コードリボ払いのように賢いと自負してても労働力としてみれば商品価値生産環境に対してたいして貢献しないなら無価値

仕方なく競プロやってる就活生だけど正直競プロは滅んでほしい

宮廷修士M1現在就活中。絶賛インターン先を探しているところ。

逆求人インターン先を探しているわけだが、ジ◯スタイラスもサポ◯ターズもキ◯リアセレクトも、ぜーーーーーーーんぶ自己PRポイントとして競技プログラミングのレートを書かされる。

仕方ないから一度受けたけど、そもそも休日の21時頃じゃないと参加できないのがダルいし、半分提出できたからこれでええやろと思ったら「参加回数が少ないので予測より低いレーティングになります」とか言われて強制的に最低ランクになるしで本当に最悪だった。

出題内容も論理的思考力を問うとかコーディングスキルが問われるようなものじゃなく、「過去問対策しておけば解けるし、知らなかったら(時間内に解くのは)無理」みたいなクソ問題ばっかり。

調べてみたら、攻略するためにはC++を使い、事前にテンプレを用意しておく必要があるらしい。

今どきC++の開発環境なんてどこにあるんだよ(いや無くはないんだろうけどさ)。using namespace std;なんて実務で書くわけねーだろ。

テンプレ必要って、それ結局覚えゲーってことじゃねえか。いや覚えゲー以下だよ。カンペ持ち込み可能試験ってことじゃん。

これでコーディング力の一体何を測れるというのか。時間無駄すぎる。本当にしょうもない文化


聞くところによれば、最低ランクの一つ上の緑に到達するには、半分正解を8回、つまり2ヶ月はこのゲームに参加し続けなければいけないらしい。

それだけの時間があったらWebアプリの一つや二つは作れる。ゲームジャムに参加したって良い。

だけど、就活のためにはこのクソゲーに律儀に毎週参加する必要がある。プログラマーってそういう文化じゃねーだろ。

怠惰でもない、短気でもない、ただ傲慢なだけのパンチャーを量産するための装置しか思えない。

chokudaiはもう少し競プロerを守ったらどう?

就職を間近に控えた現役競プロerとしての意見匿名で書きたくなった。

競技プログラミングは役に立たない今月号で一番クソだなと思ったのはchokudaiさんのこのツイート

ちなみに競プロ上位勢に結構高圧的っぽい人がいるのは事実で、それをかっこいいと思って真似してる人結構いると思うんだけど、あれはマジでリアルでは擬態できる高度なコミュ力を持ってて生き残るタイプ」か「マジで仕事どうでもいいタイプ」の2パターンなので、迂闊に真似しないようにね……。

https://x.com/chokudai/status/1805846710671097998

いやいやいや、「上位勢に高圧的な人がいるのは事実」って、それをあなたが認めちゃいかんでしょ…

代表なんだから「そんなtoxicな奴はうちにいないし歓迎するつもりもありません」くらいに言ってくれるもんだと思ってたかビックリした。

2024-06-27

anond:20240627155027

ここまで体験談が出てくると

競技プログラミング大好きマンゴミカス人材

と思って良いかもしれない

転職とか就活サイト

就職に有利と言われてる競技プログラミング、それって本当?実は重大なミスマッチの原因になる事も!」

なんていう記事が生まれるのも時間問題かもしれない

anond:20240627111550

これらの投稿から日本IT業界における人材育成組織文化に関する課題が浮き彫りになっていますね。いくつかの重要ポイントを整理してみましょう:

1. エンジニア多様性専門性バランス:

競技プログラミング機械学習経験者は、特定の分野で高い技術力を持っていますが、実務で求められる幅広いスキルセットとのミスマッチがあるようです。

2. コミュニケーションとチームワークの重要性:

技術力だけでなく、チーム内でのコミュニケーション能力協調性重要であることが強調されています

3. 実務と理論ギャップ:

学術的な環境競技での成功が、必ずしも実務でのパフォーマンスに直結しないという現実があります

4. コード品質保守性:

効率性だけでなく、可読性やメンテナンス性の高いコードを書く能力が求められています

5. セキュリティ意識の不足:

実務環境でのセキュリティ対策重要性が指摘されています

6. 組織理解の欠如:

会社組織指揮命令系統プロジェクト管理基本的理解が不足している事例が挙げられています

これらの課題に対する可能解決策としては:

1. 総合的な教育プログラムの導入:

技術スキルだけでなく、ソフトスキルビジネス知識も含めた包括的研修プログラム実施する。

2. メンタリング制度の強化:

経験豊富な先輩社員新人エンジニアサポートし、実務スキル組織文化理解を促進する。

3. プロジェクト体験の機会提供:

インターンシップや社内プロジェクトを通じて、実務経験を積む機会を増やす

4. コードレビュー文化の醸成:

定期的なコードレビューを通じて、コード品質向上とベストプラクティスの共有を図る。

5. セキュリティ教育の強化:

セキュリティ意識向上のための定期的なトレーニングワークショップ実施する。

6. キャリアパス明確化:

技術専門職管理職のキャリアパスを明確にし、個々の適性に応じた成長機会を提供する。

これらの施策を通じて、技術力と実務能力バランスが取れた人材育成を目指すことが重要です。また、採用段階での適切な評価基準の設定や、組織文化とのマッチングにも注意を払う必要があるでしょう。

anond:20240626232423

TopCoderに色があったのはそうだけど、ぜんぜん意味合いが違うっしょ。競技プログラミングができる前に遊んでた日本人ほとんどいなかったし。

あと、どっちかというと、おかしくなったの出題でしょ。

2024-06-26

anond:20240626211016

さらに横だけど、もともと競技プログラミングレーティングとか色とかもなかったのよね。年に一回集まってみんなで楽しむ感じ。

競技プログラミングを始めた人たちができていたことが、その少し下の世代ではみるみるできなくなっていったと思われます。」

https://nuc.hatenadiary.org/entry/2021/03/31

とか書かれているのはそういうことかと。

まり東大慶応SFCカルチャーのもの営利企業理想に真っ直ぐ100%完全逆行したカス思想

東大はいカルチャーだったのが、SFCに移ったところでおかしくなったっぽい。

anond:20240626165248

ガチだよ

競技プログラミング」って言葉東大で生まれ慶応SFCに盗まれ言葉

ttps://nuc.hatenadiary.org/entry/2021/04/02

anond:20240625191650

その瞬間のパワーよりいか環境適応できるかがチームで働くときには重要なんだなぁ

競技プログラミングだけで食べていければいいんだけどね

ちゃん仕事に使える競技プログラミングを作ろう

アイディア

・チーム戦(3〜10人)

評価に可読性をいれる

問題が5問あって、どんどん仕様変更が入っていく

問題文はない、口頭で伝える

UIも組み込む

 

仕事やん・・・

そもそも、競プロって名乗ってんのが経歴詐称だろ

競技プログラミングって、10ちょっと前にあった東大サークル名前なのよ。それまではプログラミングコンテストと呼ばれてた。

そこのサークルグーグルに大量採用されていたり色々すごかったので、関係ないやつらまでが「俺も競プロ」って名乗りだしたのが10年前。

サークル関係ないのに、競プロって名乗るのは「俺の先輩、東大卒でグーグル」って意味

anond:20240625192311

非エンジニアだけどClaude3に増田ミュート作ってもらったよ

これを改善してってお願いした。何書いてあるかわからないけど動いたよ。

https://anond.hatelabo.jp/20240125203115

// ==UserScript==
// @name         増田ミュート(白塗り版)
// @namespace    http://tampermonkey.net/
// @version      2024-06-26
// @description  ミューワードを含む最小限の範囲白塗りにする
// @author       You
// @match        https://anond.hatelabo.jp/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=hatelabo.jp
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    const muteWords = [
        "弱者男性",
        "弱男",
        "弱者",
        "婚活",
        "男",
        "女",
        "年収",
        "下方婚",
        "発達障害",
        "発達",
        "ハッタツ",
        "ハッタショ",
        "ハッタショ",
        "競プロ",
        "競技プログラミング",
        "AtCoder",
    ];

    function whiteoutElement(element) {
        element.style.backgroundColor = 'white';
        element.style.color = 'white';
        element.style.textShadow = 'none';
        element.style.cursor = 'default';
        element.style.userSelect = 'none';  // テキスト選択を防止
        element.style.borderBottom = '1px dashed #ccc'; // 枠線を追加してテキストがあることを示す

        // リンク場合クリック無効化
        if (element.tagName === 'A') {
            element.style.pointerEvents = 'none';
            element.removeAttribute('href');
        }

        // 子要素にも適用
        Array.from(element.children).forEach(child => {
            child.style.backgroundColor = 'white';
            child.style.color = 'white';
            child.style.textShadow = 'none';
        });

        // ツールチップを追加
        element.title = 'この内容にはミューワードが含まれています';
    }

    function shouldMute(text) {
        return muteWords.some(word => {
            const parts = word.split('');
            const regex = new RegExp(parts.map(char => `${char}\\s*`).join(''), 'i');
            return regex.test(text);
        });
    }

    function findSmallestMuteableElement(element) {
        if (element.nodeType === Node.TEXT_NODE) {
            return shouldMute(element.textContent) ? element.parentElement : null;
        }

        if (element.tagName === 'PRE' || element.tagName === 'CODE') {
            return shouldMute(element.textContent) ? element : null;
        }

        for (let child of element.childNodes) {
            const result = findSmallestMuteableElement(child);
            if (result) return result;
        }

        return shouldMute(element.textContent) ? element : null;
    }

    function processElement(element) {
        const muteableElement = findSmallestMuteableElement(element);
        if (muteableElement) {
            whiteoutElement(muteableElement);
        }
    }

    function processAllElements(root = document.body) {
        const walker = document.createTreeWalker(
            root,
            NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_TEXT,
            null,
            false
        );

        let node;
        while (node = walker.nextNode()) {
            if (node.nodeType === Node.ELEMENT_NODE) {
                processElement(node);
            } else if (node.nodeType === Node.TEXT_NODE && node.parentElement) {
                processElement(node.parentElement);
            }
        }
    }

    function handleClickEvent(event) {
        setTimeout(() => {
            processAllElements(event.target);
        }, 100);
    }

    // 初回実行
    processAllElements();

    // クリックイベント監視
    document.body.addEventListener('click', handleClickEvent);

    // DOM変更の監視
    const observer = new MutationObserver(mutations => {
        mutations.forEach(mutation => {
            if (mutation.type === 'childList') {
                mutation.addedNodes.forEach(node => {
                    if (node.nodeType === Node.ELEMENT_NODE) {
                        processAllElements(node);
                    }
                });
            } else if (mutation.type === 'characterData') {
                processElement(mutation.target.parentNode);
            }
        });
    });

    observer.observe(document.body, { childList: true, subtree: true, characterData: true });
})();
ログイン ユーザー登録
ようこそ ゲスト さん