はてなキーワード: AtCoderとは
AtCoderとかで良い成績取れば引く手あまただよ
https://qiita.com/drken/items/fd4e5e3630d0f5859067 ← これ。
コンテスト自体が一問5分という制限があるためか、やっつけで片付ける事が目的ですよね。
結果としてビギナーは所詮この程度とバカにしたようなコードしかない。
ガチの初心者ならそれで良いと思うけど、5分でさっと書ける実力のある人がそのコード残すの?
と思うと残念でならない。
私はプログラマでもないし、言語は一つしか使えないし、下手すると解くのに何時間もかかってしまうけど、
というか、私が欲しかったのは、そういう最低限問題が解けるだけの、
豚にメシをくれてやるような雑なコードじゃなかった。
たとえば、第 8 問: ABC 085 C - Otoshidama (300 点)。
ここで重要な知見として 1 秒間で処理できる for 文ループの回数は、10^8=100,000,000 回程度 というのがあります。
なんて書かれてる。
えー。私の環境、for(1..10**8) {} (本当に何もしない繰り返し)で3秒かかりました。
for(1..10**8) { i=0 } (変数になにか代入するだけ)で6~7秒くらい。
ガチ初心者は3重ループしなくて良いんだと気づけるだけで良い。
でもハエを払うように5分で済ませられる実力のある人だったらさぁ……
まず、総当たりする前にそもそも解があるか、超簡単な確認くらいしようよ?
if ( is_resolvable(N, Y) ) { do_something(N, Y); } else { print "-1 -1 -1"; } sub is_resolvable() { if ( Y > 10000*$N ) { # Shortage return 0; } elsif ( $Y < 1000*$N ) { # Too much return 0; } else { return 1; } }
(is_resolvable()って、なんかDNS関係っぽくて好きじゃない名前だけど)
(追:&とか不等号が文字参照になって見づらいので置換。架空言語でも概略分かればいいじゃない……)
もしかして、業界、自力で出来るようにならない初心者は、必要のない初心者?
本当に出来ない人がようやく越えられた一歩なんて、見落としてるのかな。
まぁ私自身は
いじったらすごくなる → たーのしー
これってプログラミングの醍醐味なのかしら?たーのしーと思いつつ、
最終的に丸一日かかって第8問が完成致しました。
ただ単に自分の能力に見合ってない仕事をするから苦しんでるじゃないかな。
有名だから、将来的に安泰しそうだから大企業に行きたいとか、技術力が低いのに将来性のあるユニコーン企業に入りたいとか。
メディア系事業部でもイチエンジニアであるだけで、ニュースサイトに名前がでることはないし。
あってもプロデューサーや部長クラス(稀に、美男美女エンジニア)
例えば自己紹介する時に、「ニュースを運営してます」のと「インフラしてます」のでは悲しいかな雲泥の差。
説明しても「なんか大変そうだね」「難しそうだね」が関の山である。社内でもこれ。
年功序列ではないので、評価によって昇給する。それが年に1,2回。
会社によってかもしれないが、業績は反映されない場合、下手したら1,2年も昇給しないなんて場合も有り得る。
そーなるとどーなるか。
残業代で賄おうと考え出す。そこが地獄の一丁目だとも知らずに。
ユニコーンの場合、例えば上場が目標でVCから「ウン十億の資金調達」というニュースが流れているとしても、
そのお金はあくまで借りているだけ。いつかは投資家の方々に返さないといけない。
エンジニア的には質は大事だけど、兎に角サービスを出さないと利益がない。
”スピード=利益(エンジニアの価値)”のようなもの。(この時点でサービスとして出せるなら質など二の次)
ここに技術力の低い人が入ると、「ブラックだ」と言い出す。(それを見抜けない人事もあれだけど)
ただ、一概に上司が悪いともいえない。
会社は人を雇っている。
このためには、社員に無理をさせなくてはならない場面もある。それが本意でなくとも。
ただし、これがいつまでも改善されないようであれば、組織としてやばい気がするので早めに逃げることをオススメする。
じゃあ、どーするか。
または能力を上げるか。
今なら、学校なら就職窓口があるし、転職なら転職エージェントもある。
相談すれば自分にあったところをピックアップしてくれるだろう。
そこで自分では見つけられなかった企業に出会えるかもしれないし、幅も広がる。
但し、「何をしたいか」はやはり考えておいたほうがいい。
面接でもそうだが、相談時に「どんな仕事に就きたいですか?」と聞かれるので。
ITエンジニアなら以下の知識を付けておいたほうがいいと思う。
・英語
・TOEIC:応募資格に書かれていることもあるし、技術書やプログラムを書くうえでもあって損はない。
・資格
・各種情報処理系:業務ではあまり使わないが、基盤となる知識になる。
・AtCoder,TopCoder,GoogleCodeJam:プログラミングする上での必要な知識を学べる。特定の処理を行うためには複数のパターンがあるが、それらを知る機会にもなる。
あと、選考の一つとしてこれを取り入れている企業も増えてきている。
・ツール
・フレームワークなど:ドットインストールやUdemyなど技術系サイトであれば色々勉強できる。必要であればお金を払おう。ググるより効率的だし、価値もある。
そんなに頑張りたくないけど、とりあえずITエンジニアであればいい人はどうしたらいいか。
玉石混交なので月5-60万(≠月収)契約であればいくらでもある気がする。
だって、がんばらないで自分にあった仕事ができるかもしれないんだから。
要は、上も下も周囲の雑音も聞かずに自分にあった仕事ができればITエンジニアも世間で言われてるほど大変な仕事じゃないはず。
まぁ、それができれば苦労はしないだろうけどね。
macでもwindowsでもいい、core i3以上、メモリが8G以上が乗った持ち運べる物。これは絶対に買うべき。atomやceleronが乗った廉価機は避ける。どうしてもお金が無いなら5年以内の中古でも良い。
これは講義資料などの閲覧用。なくても良いが、あると非常に便利。逆にプリンターは大抵の大学にあるのでいらない。情報系の教科書はweb上に無償で公開されている物が多いので、それらを活用して学ぶべし。MOOCを活用するのもよい。
どうせいつか覚えるので、早めに使えるようになっておいて損なし。
基本。
使えると色々自動化できて便利。個人的にはpython(3)がオススメ
必須では無いと思うが変換ツールと合わせて使うと便利。レポートにも使える。
どちらかお好みで。大抵のエディタ・IDEで使えるため汎用性がある。筆者はemacs派。
ひとりで手を動かして継続的に学べるのであればそれでいいが、そうで無い人間の方が多いのでは無いかと思う。筆者もそうだ。そういった人間は他者と共に学ぶのがよい。
大学に情報系や電気電子系のサークルがある場合はひととおりみておくといい。真面目に活動していて、ソフトウェアなりロボットなり成果物があるようなら入って良いと思われる。唯のオタクの溜まり場になっているようならまあ入らない方がいい。
サークル以外にも、都市部に住むのであれば技術を主体としたコミュニティが多くある。SNSや同期、先輩のツテを使って興味のあるものに参加してみるとよい。
プログラマーのバイトなども良い経験になる。しかしブラックな職場もあると聞くのでよく選ぶべし。
といっても、課外活動に惚けて大学の授業を疎かにするのは愚の骨頂。大学の授業で学ぶのは全ての基礎なので、これを知らずにどんな最新技術に触れようと意味が無い。
これは情報系学部で学ぶならやらない理由が無い。プログラミング力を鍛えるには最適である。
AIZU ONLINE JUDGEやAtCoderでゲーム感覚で楽しむとよい。
思いつきで書いたので書き漏らしはあると思う。あとよく言われる教授に質問に行ったりして活用しろ〜などは情報系でも同じ事が言えると思う。
情報系の学生として最もやってはいけないことは、読んだだけ、聞いただけで理解した気になってしまう事だと思う。授業で聞いた事全てとは言わないが、せっかく場所を問わず実験ができる学問なので、興味を持った内容だけでも良いのでコーディングして動かしてみて欲しい。
増田は気軽に質問できる中・上級者がいない趣味プログラマか学生さんだと仮定。
どうしても合う合わないがある。
筋肉付けたいとしても、筋トレ無限にできる人と無理な人といるでしょ。そんな感じ。
自分の欲しいものをつくる、なんてのは誰でも思いつく話だと思うんだけど、
自分の欲しいものの中で一番機能が少ないものを、ギリギリ最低限の実装でやること。
Webサービス系に限ると小物で欲しいものって無さそうなので、
もう少し違うジャンルで作るのがいいと思う。
最近なら自分専用のLINE botとかいいんじゃないですかね。
2番目のプログラミングコンテストは向き不向きが激しいとは思う。
サービスを作るのに比べると短時間で深く集中する感じになるので、これはこれでオススメ。
最初はAtCoder過去問、AOJ、ProjectEulerあたりを試してみて合いそうか考えるのがいいと思う。
Web系だと仕事に直結はしないかもしれないけど、頭の使い方みたいなところは磨かれるはず。
人材紹介会社が作ってる同種のサービスだと、問題のレベル感としてトレーニングには向かない印象。
簡単すぎる問題を解くくらいなら小物作りでも実戦経験を積むべき。
最後は縛りゲー。つまり、あえて整備されていない道を開拓していく。
いかに金をかけずにWebサービスを公開・維持できるか、というテーマなら
各種サービスの無料枠とかAWS Lambdaとかを駆使して頑張るような話。
もしくは、先人が少なめのソフトウェアについて深掘りするとか。
たとえばAtomやVSCodeの自分専用プラグインなら最初のオススメ内容にも合う。
ニコ生のほうが見てくれる人多いと思うし。
若い人にとってはustreamよりかニコ生のほうが実況しやすい。
詳しい内容
+---------------------------------+
+---------------------------------+
とにかくkaoriya先生の顔に泥を塗ってしまった事をまっさきに詫びたい。
https://twitter.com/kaoriya/status/715743835377111041
https://twitter.com/kaoriya/status/715774856474857477
とりあえず参考になりそうなページ
その他、個人的に引っかかる所。
実は個人で有料チャンネル解説してる人たちって皆企業のバックアップで申請してたりする。
ドワンゴさんだって無料で技術系チャンネルを開設したんだからいいじゃないですか。
http://ch.nicovideo.jp/dwango-engineer
AtCoderチャンネルだって瞬殺で開設が認められたんですよ。
http://ch.nicovideo.jp/atcoder
価値のある活動をしているvim-jpが認められないのはおかしいんですよ。
なんで風呂配信で金玉出した横山緑とか、チャンネル取得後1回目の放送でカメラに向かって放尿した野田草履がチャンネルを持てて、vim-jpがダメなのかドワンゴの中野運営長に問いただしてみたい所だ。