はてなキーワード: Topcoderとは
僕は統合失調症の趣味人ニートです。プログラミングを趣味としてやっています。
競技プログラミングの勉強は大変でした。atcoderでレッドコーダーになるまでの一連の勉強の方法について書こうと思います。
実は競技プログラミングを始める前までは、統合失調症ではありませんでした。単なるニートです。
僕は生産的な趣味をネットで探し、DIYは体力を使うから嫌だし、料理は太るから嫌だという理由で、競プロにたどり着いたのです。
最初はgithubで公開されていた練習問題のリストを反復して行いました。
そしてコンテストの日になって、実際にやってみたら3問しか解けず、結果はひどいものでした。
しかし問題自体は、練習問題さえできるレベルであれば解けるものだったのです。
そこで僕は「応用力が足りない」のだと仮説を立て、応用力のためには見たことのない問題に取り組む必要があると考えました。
インターネット上で探すことのできるあらゆる練習問題のリソースを探しました。leetcode, topcoder, project euler等。
しかしどうしても解けない問題をいくら考えても時間の無駄なので、一問10分の制限をつけました。10分経ってしまったら答えを見ます。
こうして新しい問題を解き続けて応用力をつけ、ようやくABCで全問正解するようになりました。
次にARCにチャレンジしたら、僕はすでに応用力が十分身についていて、ARCでも全問正解しました。
それでAGCに参加したのですが、やはり問題が難しくてなかなか太刀打ちできません。
繰り返し参加してみますが、レートもなかなか上がらず苦労していました。
ふと、僕は夢で悪魔が出てきました。
悪魔は僕にこう言いました「俺が問題の解き方を耳で囁いてやる。お前はただその通りに解けばいい。どうだ、交渉するか?」
信じられませんが、それから1ヶ月間は異様な機械音のようなうるさい幻聴を聞き、プログラミングどころではありませんでした。
時々、「お前は罪を犯した!これは罰だ!」という声と共に、鼓膜が破れるような音を聞き続けたのです。
その1ヶ月間は死ぬような思いをしました。病院へ行くと、統合失調症であると言われました。
薬を処方されたら機械音を聞かなくなりましたが、頭があまり働かなくなりました。
しかし、競プロで赤色になりたいので、またコンテストに参加しました。
すると驚くことに、「お前は罪を犯した」と言ってきた時の声が聞こえてきたのです。
僕は頭が働かないので、そのささやきの通りにコードを書き記しました。
そうしたら、なんと見事に全問解くことができて、赤色コーダーになったのです。
僕が初心者にアドバイスするとしたら、悪魔と幻聴の契約をするべきであると勧めます。そして統合失調症になることによって、良い成績を残せるのです。
長すぎたので、3行でまとめます
~~~~~~~~~~~
ITは要件定義とかしてIT技術以外を効率化してるだけの人海戦術型の集約労働だよ
⇒将棋とかポルノ女優とかは人間の限界値まで飽和させて終了させてるじゃん。農業の緑の革命みたいに。なんで次々それができないの?(疑問)
⇒個別の要件をIT技術者が理解するのではなく、個別の組織にIT技術者がIT技術を教えたり、AIが個別の案件を理解したらいいんじゃない?(提案)
~~~~~~~~~~~~
『ITって現代の農業じゃん』(https://anond.hatelabo.jp/20190610220324)
を書いた増田です。
いろんな意見を貰えてありがたい。
(特に、『IT産業は何で人がいっぱいいるのか?(何で労働集約的なのか?)』http://otihateten.hatenablog.com/entry/2019/06/11/120521 は、大変勉強になりました。思わずブログの記事を読み漁っちゃいました)
どうも、農業ではなく、建築業界だ!という意見が多かった。は~なるほどぉ~。ピラミッドをひたすら作ってるわけですね。エンパイアーステートビルとか、ヒカリエとか、そういうわけですか。
でも、なーんか、違うんですよねえ。
門外漢からしてITって、もっとポテンシャルあるように見えます。
昔は酷かったじゃないですか。こんにゃくと、裏ものとか言ってよくわかんないおばさんとか。
それがですね。今じゃ、もう凄いじゃないですか。pornhubがすごいじゃないですか。色々なサイトがすごいわけです。
女優さんも、整形手術(形成外科)のレベルが上がって、もう乃木坂中位レベルじゃないですか。そろそろハシカンも量産か?というような。
で、結局どうなったか。
消費するのは人間ですから、もう飽和しちゃってるじゃないですか。飽和。
そうなんですよ。ITって飽和が可能なわけですよ。
あるいは、将棋ソフトとかも、人類超えちゃったーとか。動物将棋やリバーシは完全解析ですっけ?(こっちはハードの問題だけど)そういうことなんですよ。
「リアルの物質の限界があるから、ITも限界まで行けるっしょ」って思うわけです。
終わったら、終わりじゃないですか。それがゼンゼン来てないのが、不思議だなーと思っております。
農業だって、人類の飯の量が決まってるから、緑の革命で農業人口が一気に減らせたわけじゃないですか。
で、なんか、そういう話での、それができない何らかの限界ってあるのかな。って思ったんですよ。
予想してた限界としては、
・「AWSは原発1個の電力を使ってやってる!世界の電気消費の通信などの電力がうなぎ上りで限界がある!」とか。
・「グーグルとかAWSにビッグデータや情報工学やサーバー管理が移行しまくって、日本の研究室とかじゃ絶対無理だ!研究室の数十倍の研究速度でGAFAが来て無理だ!企業でもサーバー保守は消える!」とか。
・「光を絞れる限界は波長の半分までだから、集積回路のシリコンウェハーの加工自体が300nm程度までしかできないからムーアの法則がきつくなってる!」とか。
でも、そういう話じゃなくて。
マジで個々の案件に対してのIT効率化が大量にあって処理が難しいって話なんですねー。
IT効率化が難しいってのが、どーも、個々の要件に対して、要件定義が難しいとかって話らしい?
でも、それってどうなんでしょうねえ。
やたら工学とかでは、
「背景理解 ⇒ 要件整理 ⇒ 要求仕様 ⇒ 実装提案 ⇒実装手段」
みたいなのを工程把握してやるみたいですが。
この考えというか、フレームがイケてないように感じるんですよねえ。
そもそも、ITの人たちって、背景の理解ってする必要あるんですかね。
いや勿論、あるんですけど。そのあたりって、それを使用する人たちが決めるわけじゃないですか。
だって、自転車とか乗る人が使うためのプログラムをするときに、ITの人たちが自転車のる感覚わからないじゃないですか。
そんで、要求仕様とかって立てますけど、自転車乗ってる人が、要求仕様とか考えて運転してるでしょうか?
もちろん、そうしないと、コンピューターの言葉になおせないってことなんでしょうけど。
それこそ、AIにやってほしいなあって思うわけですよ。
要求仕様どうこうってか、それすら、AIに解析させて欲しいっていう。
むしろ、自転車乗りの人たちに、ソフトの使い方を教育して、自転車乗りの人たちと共同で開発しながら、オブザーブするっていう感じのITの人が出ないものですかね?
そう考えると、ゼンゼン本質的じゃないところで、「ITは限界を迎えていない」という話ばかり。
なんというか。
車の効率化とかで、現在の年間6000人の交通事故死亡者を激減させるとか、絶対できるじゃないですか。
なんで、自動車起動時に、アルコールチェックすらできてないんですか?(やっちゃうと田舎の店がつぶれちゃうから飲食系から批判が出ちゃう?)
どう考えても、IT側の怠慢じゃないですか。
そういう感じで、「え?なんでこんな実装もできてないの?」っていうものが、世の中多すぎて。
どこら辺が問題なのかなーってのがマッタク見えてきませんでした。
残念。
それとも、個人で、キャンプファイアーみたいなので、「廃墟にロボットやドローン設置して探索できるようにします!!」みたいな欲しいと思ったサービスは自分で作る時代なのかな?
「できるIT技術者は、金融とか自動運転とか衛星システムとか行っちゃう。そこでアーリーアダプターになりたいから。昔からの分野にはイケてないIT技術者しか来てくれない。だから発展しない」
とからしいけど。本当なのかなあ?
なんか、AIコンテストとかも、ハーバードとか、グーグルとかがそういう系の問題出してる(TopCoder マラソンマッチとか。)し、噂は本当なのかな。
arxivとかも、企業研究者が出してくる分野はそういうのばっかりだしね、確かに。
ハードウェアをシミュレーションするの技術を身に着けたいんですけど、
そういうプログラミングコンテストってありませんか。
習得したいことは
C++で、
メモリ→メモリアロケーションとかガーベジコレクションとか
CPU→アセンブラで命令を与えてCPUの挙動をシミュレートしてみるとか
ハードディスク→保存・削除を何万回実行する、とかディスクフラグメンテーションとか
自分で作ってみたりはしてるんですが、どうも抜けや漏れがあるだろうし、
コンテスト形式で動作確認ができるのであれば利用したいのですが・・・、
AtcoderとかTopCoderとかって数学とか計算機科学とかで
Kaggleは機械学習だし、AI系のコンテストはわりとあるんですが・・・。
誰かご存知ありませんか?
NTTの退職エントリが流行っているようなのでそもそも入れなかった人の話でも書きます。
といっても1X年前の話です。
リーマンショック直前の超売り手市場に新卒で4月初頭というゴールデンタイムにNTT系列何社も受けて全滅したアホ。
趣味はプログラミング。ICPFCとか参加したり小さいツールを書いたりしてた。
大学の専攻は数学。日本ではやたら偏差値の高いらしいT大学に現役で入ってそのまま修士卒。
NTT株、NTTD、NTTS、NTTH、NTTCなど。略称がどこを指すかは適当に考えてね。
全部落ちてます。4月はこのせいでお祈りされまくり、結局決まったのはNTT以外で夏ごろで。
電話がとても好きだった。高校ぐらいのときはモデムから高速リダイヤルをかけるアプリとか、
公衆電話の番号を探すツールとかを書いていた。PHS、携帯が普及しだしたころから
そもそも仕様があまり手に入らなかったので興味を持てなくなった。113はよくお世話になった。
就活のときそのへんのことを思い出したのと、プログラミングが好きだったのでNTTなら
なにかできるんじゃないだろうかと思いたくさん受けた。
当時はプログラマというものの地位がものすごく低い時代だったと思う。
そんな時代に「プログラミングやりたいです。ICPFCとかめっちゃ楽しいです。」という割に
基本情報すらとっておらず、コミュ力も非常に低い上に専攻が純粋数学とか落ちて然るべき。
更にNTTがどういう人材を欲しているのかという企業研究もろくにしていなかったため、
自分が御社にどういう貢献ができるのかを説明できず、ただやりたいことだけを喋っていたた。
また純粋数学は研究内容の説明がしにくいというのはわかりきった話だったので、それは対策するべきだった。
3分で研究内容を話すというプレゼン。SPIがよかったらしく1次面接は免除という連絡をいただき、
喜んで2次面接に望んだところ純粋数学の研究発表で、「この研究の社会的意義はなにか?」という質問をされ無事死亡。
社名にソフトウェアなんてついてるぐらいだからプログラミングがガッツリできるんだろうと思い、
某CPUの命令セットの素晴らしさとその効率的なエミュレータ実装について熱く話す。
面接官の「そんなことにしか興味ないんですか?」という返事は今でも覚えている。
グループディスカッションで落ちる。コミュ力とか見られてたきがするが審査員は見てただけなので詳細は不明。
面接前に社員と雑談する謎の時間があり、「T大の人、ぜひ来てほしいんですけどNTTDとかNTT株に
取られちゃって蹴られてしまうんですよね…」という話を聞く。その時点でDには落ちていたので苦笑いして面接へ。
当時盛り上がっていたNGN関係の話で面接官と盛り上がるも俺が考える最強の通信スタックの実装法を
NTT系列はだめだったので結局某SIerに就職。年収は300万弱から5年ぐらい在籍しても500万弱ぐらいだった。
最初は流石に年収低すぎということで某Rエージェントで転職活動をするもリーマンショック真っ最中で
在籍も1年とかだったため「君なにしにきたの?」オーラがすごかった。その時点での転職は失敗。
SIerによくある通り仕事でコードというものはほとんど書かず、Excel、Wordがメインであった。
ただ仕事自体は暇だったので、合間にひたすらProject Eulerをやっていた。
今はお仕事が変わり、AI関係のソフトウェアエンジニアみたいなお仕事をしている。
相変わらず面接ではコード書きたいですとかAtCoderとかの競技プログラミングの話しかしていないのだけど、
10年前に比べると反応がとてもよくなったと感じる。年収も都内に何の不自由もなく暮らせるぐらいまでは
もらえるようになった。プログラマの地位は相当向上しているのではないだろうか。
個人的にはAtCoderやTopCoderで黄~青ぐらいのプログラマの社会的地位が10年で年収400万から1000万ぐらいまで上がった感じがある。
今は1000万!と言いたいところですが、うまい棒5万本分ほど足りません。一本行けるように今後も精進します。
ただ今都内はソフトウェアエンジニアバブルといってもよく、かなり年収水準が上がっている気がします。
ですので多少は夢を持ってもよいのかなと。
キリの人も入社時は優秀だったんだと思います。あともし採用されるポテンシャルがあったとしても
ちゃんと業界研究しないのはだめかと。いろいろな意味で私はだめでしたね。
1990年代はまだ固定電話の古い交換器や緑・ピンク電話などが残ってた時代で、電話の面白い挙動が
NIFTY-SERVEのフォーラム等で盛り上がっていた時代でした。そのため当時は同じような人が結構いました。
うけてません。NTTの社風に合わないと全滅する可能性もあった(そして実際そうなった)ということで、
最近のNTTDのOSS関係へのコミットは凄まじいですね。あの部隊は尊敬しています。
あのへんのコミッタ方たちはどういうルートで採用されたんでしょうね?
大学時代はXSSとバイナリ解析に興味があったはずなのですが、就活ではその道は選びませんでした。
忘れていたというのもあるのですが、その数年前に日本のセキュリティ系の団体とちょっともめてしまった
というのがあるのかもしれません。日本のセキュリティ業界はちょっと前までアングラっぽい雰囲気が
漂っていました(世界的にそうだっただけな感じもします)が、そんな方たちも某FF○Iとか某NAとか
ホワイトハッカー側で大きく活躍されてるようで、もしセキュリティ業界に身をおいていたら
そういう変化も楽しめたのかなぁとは思います。
あ、徳丸さんのブログはいつも楽しく拝見させていただいています。
あの某NAのLuminさんでしょうか。当時はとても落ち込みましたが、今では楽しくやれているので
ただ単に自分の能力に見合ってない仕事をするから苦しんでるじゃないかな。
有名だから、将来的に安泰しそうだから大企業に行きたいとか、技術力が低いのに将来性のあるユニコーン企業に入りたいとか。
メディア系事業部でもイチエンジニアであるだけで、ニュースサイトに名前がでることはないし。
あってもプロデューサーや部長クラス(稀に、美男美女エンジニア)
例えば自己紹介する時に、「ニュースを運営してます」のと「インフラしてます」のでは悲しいかな雲泥の差。
説明しても「なんか大変そうだね」「難しそうだね」が関の山である。社内でもこれ。
年功序列ではないので、評価によって昇給する。それが年に1,2回。
会社によってかもしれないが、業績は反映されない場合、下手したら1,2年も昇給しないなんて場合も有り得る。
そーなるとどーなるか。
残業代で賄おうと考え出す。そこが地獄の一丁目だとも知らずに。
ユニコーンの場合、例えば上場が目標でVCから「ウン十億の資金調達」というニュースが流れているとしても、
そのお金はあくまで借りているだけ。いつかは投資家の方々に返さないといけない。
エンジニア的には質は大事だけど、兎に角サービスを出さないと利益がない。
”スピード=利益(エンジニアの価値)”のようなもの。(この時点でサービスとして出せるなら質など二の次)
ここに技術力の低い人が入ると、「ブラックだ」と言い出す。(それを見抜けない人事もあれだけど)
ただ、一概に上司が悪いともいえない。
会社は人を雇っている。
このためには、社員に無理をさせなくてはならない場面もある。それが本意でなくとも。
ただし、これがいつまでも改善されないようであれば、組織としてやばい気がするので早めに逃げることをオススメする。
じゃあ、どーするか。
または能力を上げるか。
今なら、学校なら就職窓口があるし、転職なら転職エージェントもある。
相談すれば自分にあったところをピックアップしてくれるだろう。
そこで自分では見つけられなかった企業に出会えるかもしれないし、幅も広がる。
但し、「何をしたいか」はやはり考えておいたほうがいい。
面接でもそうだが、相談時に「どんな仕事に就きたいですか?」と聞かれるので。
ITエンジニアなら以下の知識を付けておいたほうがいいと思う。
・英語
・TOEIC:応募資格に書かれていることもあるし、技術書やプログラムを書くうえでもあって損はない。
・資格
・各種情報処理系:業務ではあまり使わないが、基盤となる知識になる。
・AtCoder,TopCoder,GoogleCodeJam:プログラミングする上での必要な知識を学べる。特定の処理を行うためには複数のパターンがあるが、それらを知る機会にもなる。
あと、選考の一つとしてこれを取り入れている企業も増えてきている。
・ツール
・フレームワークなど:ドットインストールやUdemyなど技術系サイトであれば色々勉強できる。必要であればお金を払おう。ググるより効率的だし、価値もある。
そんなに頑張りたくないけど、とりあえずITエンジニアであればいい人はどうしたらいいか。
玉石混交なので月5-60万(≠月収)契約であればいくらでもある気がする。
だって、がんばらないで自分にあった仕事ができるかもしれないんだから。
要は、上も下も周囲の雑音も聞かずに自分にあった仕事ができればITエンジニアも世間で言われてるほど大変な仕事じゃないはず。
まぁ、それができれば苦労はしないだろうけどね。
こんにちは、シャイニング増田(シャイ増)です♥町中で良くリクルートスーツの就活生を見るようになりましたね。先日後輩の紹介で○○大学の学生からグーグルに入りたいという相談を受け渋い気持ちになりました。○○大学ではTopCoderのRed Coder相当の実績でも残していないと入れないでしょうし、ネームバリューだけでなんとなく「ビッグデータ♡」「人工知能♡」と言っている様は山師スタートアップの「フィンテック事業部を新設しました」のIRと同等クラスの浅ましさです。そこで若者に捧ぐ私が考えるプログラマのキャリア論を参考にしていただければと思います。
http://www.shiningmaru.com/entry/2016/04/29/212824
を見て、あんまりプログラマがどうやって高給取りになれるかというキャリアの話って見たこと無いな、と思ったので書いてみます。
全てのプログラマが給料を一杯稼ぐことを目指すべきだとは思いませんが、私のように、研究職でもなく、マネージャー職でもなく、コード書いてお金が貰えるならなんでも書くよ、という節操のないプログラマ志望の大学生にはとてもおすすめの高給取りになるための方法です。
まずは目標である高給取りになるにはどうすればいいか考えてみましょう。どんな能力があれば年収1000万円もらえるの?と思われるかもしれませんが、そもそも残念ながら給与というのは純粋にあなたのスキルによって上下する余地はあまりありません。
年収500万円のプログラマが頑張って仕事後も勉強会などへ行き、頑張ってスキルアップしても、会社が年収を1000万円にしてくれることはほぼ無いと考えてください。年収500万円のプログラマと年収1000万円のプログラマの一番大きな違いは職場です。大抵の会社はどんなに優秀なプログラマでも給料で大金を払うことはできません。
身も蓋もないんですが、高給取りになりたいと思ったら、自分磨きなんて糞くらえで、自分に給料を一杯払ってくれる会社を見つけて入社するのが一番重要です。
金回りがいい会社が一番です。どういうところがいいの?というと、ざっくり2つのグループにわかれると思います。
1. 世界的にシェアのあるサービス・プロダクトを持っている会社
1の典型的な企業は、ベイエリアとかにある、世界向けのプロダクトを持っていて、競争力のある会社です。とても金回りがいいです。有名どころではGoogle、Facebook、Appleや若干株価が心もとないTwitterなんかがあります。何故これらの会社がプログラマに大金を払い、何故日本の大抵の会社がプログラマに年収1000万円を払えないかについてはhttps://note.mu/whynotgetrich/n/nd71f86a3e0cbを御覧ください。
2はあまりプログラマの人は縁がなく、存在すら知らない会社が多いのではないでしょうか?とても勿体無いですね。例えば金融系の企業はとても金回りがよく、社内システムの開発でもその恩恵を受けることができます。例えば外資金融系ではGoldman Sachs、Merrill Lynchは給与がよく、保険系では東京海上とかもまったりと年収1000万越えるらしいんで、狙うといいんじゃないですかね。あまり詳しくないので、具体的な業務内容はインドに発注と管理するプログラマというよりはSEなのかもしれないですけど。
では他のドメスティックなネット系企業はどうなの?というと、残念ながらあまりいい話は聞きません。
数年前に年収1000万円で新卒を採用(http://news.livedoor.com/article/detail/5997716/)、みたいな話が数社から出てきて、ようやく日本でも人材獲得競争が激しくなってきたな!と思いましたが、どうなったんですかね?全然うまくいかなかったからもうやっていない、という話を聞きましたが、実際どうなのか現場の話を聞いてみたいものです。
私が最近聞いた中ではLineは年収1000万円を軽く越えるオファーを出していて、他のインセンティブもついてたら、上場したあかつきには軽く2-3000万円はいくんじゃないかと思われます。Lineくらいになってくると、1のグループに入ってる感じですね。景気いいですね。うらやましいです。
そんな会社全部よくわからないよ!無理だよ!私が志望しているこれらの会社の中からだったらどれ選べばいいの?と思ったら技術部門の最高責任者っぽい人とかの給与を調べましょう。それより多くは絶対にもらえません。あとは平均給与を調べてみましょう。プログラマは社内の中でも特に多く給料が貰える職であることは少ないと思われるので、平均給与が1000万円越えてなければ、プログラマとしてキャリアを積んで1000万円の大台に達することは難しいかもしれません。
と、1000万円を稼げる企業がおわかりいただけたかと思いますので、次にこれらの企業に入社するにはどうすればいいかについて考えてみましょう。
まず先に2のグループの企業についてですが、私は全く明るくないので、どんな採用プロセスなのか全然わかりません。とりあえず英語憶えてたほうが外資系が選択肢に入ってくるのでいいんじゃないですかね?
次に1ですが、こちらもやはり英語がわかると、海外での勤務が選択肢に入ってくるので同じくおすすめです。新卒で日本法人に入る場合は、企業によってはちゃんと英語習得のためにフォローが入るので、技術力優先だったりもします。
ここまできてようやく技術の話が来ましたが、具体的に何ができればいいの?というと、まずポインタと再帰呼び出しを理解できるか調べてみましょう。
Joel先生が書いてますが、ポインタと再帰呼び出しはどんだけ優秀なプログラマでも何故か書けなかったりするので(http://local.joelonsoftware.com/wiki/Java%E3%82%B9%E3%82%AF%E3%83%BC%E3%83%AB%E3%81%AE%E5%8D%B1%E9%99%BA)、まずこれらをちゃんと理解してるか見てみましょう。私も世界中の100を越えるプログラマの面接を行ってきましたが、再帰呼び出しを書かせようとすると絶望するプログラマはとても多いです。
ポインタは使う機会は大分減ったと思いますが、再帰呼び出しはまだ現役なので、理解できなくて、プログラマになりたいわけではなく、ただ高給取りになりたいのであれば、別のキャリアを目指した方が楽かもしれません。
採用において重要なのは、履歴書の実績と面接での技術力です。ベイエリアなどの企業のプログラマの採用面接では、「あなた自身を動物に例えると何ですか」みたいな質問を聞いてくることはありません。技術的な質問、又はコードを書かせる問題を出してきます。Top Coderのような競技プログラミングと似てるので、練習しておくことをおすすめします。各種データ構造とアルゴリズムの計算量を憶え、うまく適用できるよう勉強しましょう。
面接官によってはコンピュータ・ネットワークの仕組みについて聞いてきたりするので、ヘネパタ、オペレーティングシステム、詳解TCP/IPあたりは読んどくといいかもしれません。後々色々な技術を学ぶ時に理解が深まりやすいので、どちらにせよ読んでおいて損はないです。
面接対策だけでなく、プログラムはよほど専門的な内容でなければ、レファレンス引きながら問題なく実装できる、というレベルには達しておきましょう。履歴書に華を添えるなら、オープンソースプロジェクトに参加するかソフトウェアやサービスを公開してみてください。githubのアカウント名やプロダクト名、サービスの概要とURLを書いておけばあなたの技術力がより上手く伝わるはずです。
外資だと必要になる英語ですが、技術的な話がを中心であれば、一般会話より必要なボキャブラリが限られており、習得は思われているほど難しくはありません。かつ、メールのテキストベースでのやりとりが中心であれば、最初のうちは大変ですが、ゆっくり時間かけることもできます。
あなたの技術力が認められ、年収1000万円はないかもしれませんが、結構な高給取りになれました。おめでとうございます!さてここから昇給するにはどうすればいいのでしょうか?
大学生に「技術系の本を読みましょう」と言うのは何か違う気がする
もちろん読書自体は重要だろうが、そこで技術系の本を無差別的に取り上げるのは違う
特定の技術を向上させるという目的で、その技術に関連した本をさらっと程度で読むのはともかくとして
読書という目的で、あの手の本を読めというのは少々ズレているのではないのだろうか
エンジニアを目指す大学生は技術系の本を全部読むような時間があるのなら
TopCoderに出るなり何か大きめのシステムを作ってみるなりした方がいい
もし、その為にCode completeだとかの技術系の本が必要だというのなら
それらを読むことは良いことだと思う
「Cならswitchテーブルを使った再帰関数で実現する必要がある」に対するレスなんだろうけど、飽くまでも「C以外の、継承とオーバーライドの機能がある言語では例題とほぼ同じ形で実装できるのに対してその機能がない言語では『関数内でswitchをして値ごとにdispatch、その後更に再帰』という原始的かつ全てのロジックを詰め込むせいでひとつの関数の行数が膨大になる問題を孕んでいる」という意味しか持たない。
確かにTopCoderで再帰を使ったら撃墜される可能性がある事には同意だけど、今回の例ではプロコンの外側での事であってスタックがオーバーフローしたなら例外をキャッチして後処理を行えば良い。
更に
バイナリツリーを自前で構築して式を表現する例題(expression tree)と、set and mapは用途が違う。
setとmapは本来、順序が定義できる要素をキーにしてそれそのものを保持するか、或いはそれに伴う値を結びつけて保持しておくもの。
例題のexpression treeの構造は「(必ずしもオペランドがふたつとは限らない)式の木を表現して、オーバーライドされたevalで式全体の評価を行う」もの。
は成り立たない主張であるし、
(C言語等のOOPが導入される前の言語で)綺麗に書く事ができないと問題を提供する側がそもそも「綺麗な解を前提とした問題」を出せない。