はてなキーワード: javaとは
別によくある長時間労働とかデスマとか偽装請負とかが嫌で辞めたいわけじゃない。
やることやってりゃ定時に帰っても有給使っても何も言われないし、上司は有能すぎるくらい有能だし、業界平均から見てかなり恵まれてる方だと思う。
毎日毎日、エクセルとにらめっこ。たまにパワポ。極たまにワード。
ここ最近で一番役に立った言語はjavaでもpythonでもなくエクセルVBA。
それでも1、2年目のうちは仕事の進め方とか、周囲から学ぶことも多くて嫌でも成長する機会はあった。
でも3年目にもなるとそういう「自動的な」成長は終わって、勉強会出たり趣味で何かやったりしないと何も身に付かない。
でも絶望的に興味がない、
機械学習にもディープ・ラーニングにもIoTにも興味ない。ていうかそもそもITに興味がない。
仕事だから、必要に迫られた時にググったり研修受けたりはしてるけど積極的に関わりたくない。
このままだと、業務知識()やマネジメント力()で勝負するとか言っちゃう似非SEか、
企画職とは名ばかりの管理部門で燻ってる有象無象に加わるしかない。
それは嫌だ。
そういう人達が特別なスキルを持たないまま歳だけとって、若者にポジション取られて居場所を失っていくのを何人も見てきた。
客観的に見て、
現状に不満があるくせに、勉強するのも嫌だ、
って、めちゃくちゃわがままだと思う。
でももうSE稼業で「こうなりたい」っていうのが見えないんだ。目標もないから努力もできない。
辞めるしかないよなあ。
本格的にプログラミングを始めとしてコンピュータ科学を学び始めたのは大学に入学してからです.
今では幸運なことにインターンで都内のベンチャー企業でgolangやpython, scalaを用いた大規模なシステム構築に携わっています.
お給料も日本の大学生にしては破格といえるのではないでしょうか. それも大学で真面目に勉強したお陰であると胸を張って言えます.
大学の方の卒業研究では組み込み系のセキュリティに関して研究しています. 正直テーマ選びに失敗したなと思っているので大学院にいったらシステムプログラミング系の方にシフトしようと思っています.
私が大学の授業で初めて習ったプログラミング言語はC言語でした. 理由を教授に聞くと, 並行して座学で教えるコンピュータ科学系の専門授業全般と結びつけやすいからだそうです.
最近のTwitterやQiita, StackOverflowなどでは「初学者が最初に学ぶべきプログラミング言語はなに?」という質問に対して, JavaScriptやPythonから入るのがベストだと言う人を沢山見かけます.
JavaScriptはブラウザというものが有る限り20年は消えなさそうですし, Pythonは機械学習を始め, Webシステムでも使え, 非常にクレバーな言語です.
javaもオススメだと思います. 30億?ものデバイスで動く言語ですしドキュメントも豊富です. 色々な分野にも応用が効くでしょう.
さて, そんな中でC言語という悪い評判しか聞かない, でもやたら色々なところで使われているらしい言語を最初に学ぶメリットとは一体なんなのでしょう.
一つ, 私が思いついたのはコンピュータと仲良くなれる.
というのもC言語はアセンブリや機械語に比べれば, 人間にわかりやすく, かつコンピュータ側にも近いという顔をもちます.
真面目にプログラミングしようとするとどうしてもそのコンピュータの仕組み(主にメモリ) について学ぶ必要が出てきます. これらの知識が現代の開発に置いて役立つ分野比較的限られると思います.
しかし, それらは思わぬバグの特定や意図していない動作の改善に役立つことがあるかもしれません(実際に私もいくつか出会いました)
二つ目は他の言語を学ぶ時のハードルが非常に低くなる. これはどの言語を学んでも同じだとは思います.
そして, 他の言語の高級な機能に思わず涙ぐみながら感謝すること間違いなしでしょう(javaのsplitとか他の言語にもあるHashとか)
ただ, 私はC言語の構造体やポインタのお陰でオブジェクト指向プログラム言語を低レイヤな実装的な面と概念的な面ですんなりと理解することができました.
そしてよく挫折ポイントとなるポインタ(ダジャレじゃないですよ?). これもメモリの住所だと考えればそれほど難しくはないのです.
メモリの管理を適切に設計した時あなたのプログラムはボルト並みに早く走ってくれるかもしれません.
他の言語では味わえないやりがいがあるのもこの言語の魅力でしょう.
書いているとこれぐらいしか思いつきませんでした.
それでもコンソールに初めて Hello World! が出力された時の感動はやはり忘れられません.
昨今, 高機能な言語が沢山ありますが, あなたのプログラミング生活にささやかなアクセントとしてC言語を学び直してみてはいかがでしょうか?
きっと今使っている言語に普段言わない感謝の言葉を述べること間違いなしです.
最新と言われるES6, ES7にしたって、他の言語からしたらありえないほどに機能が少ない
こんなクソみたいな言語を書いていたら、エンジニアとしての腕が鈍るのではないかと思うほどにクソい
いまは仕事でJSを書いているのだけれど、Rubyだったら、Pythonだったら、KotlinだったらSwiftだったらと思わない日ない
驚くのは、こんなクソみたいな言語なのに、好きな人が多いってこと
ReactNativeだとかflowだとかTypeScriptだとかbabelでtranspileなんじゃとかいう記事をみない日がない
それだけ好きモンが多いんだろう
JSというブラウザによって取り残された言語へのキャッチアップに多くの時間を割いてしまったがために、
心理的な負荷がかかって俺はJSが好きなんだこれしかないんだとなってしまっている人が多いんじゃないかとかわいそうに思う
(JSマンで他の言語かける人って、他の言語と比べて極端に少ないように思う)
クソみたいな言語のくせにnodeのリポジトリはお家騒動みたいなんでしょっちゅう盛り上がってるし
俺はJavaが好きだけどJavaがクソみたいな言語だってことは認めている
お前らも、そう思えよ
アホか
とにかく手を動かせ系のひと完璧に老害だと思うんだけど、なんでかっていうと俺は18才の時にjavaっていう完璧に終わってるプログラミング言語の入門書の、やさしいjavaっていう全く楽しくない参考書のサンプルプログラムを訳もわからずWindowsのメモ帳に書き写して実行してたことがあるから。あの頃は間違いなくとにかく手を動かしていた
とにかく手を動かせばいいとか言ってる奴は本当にヤバい。実害がある
大事なのは徹底したリサーチと目標設定と、あと最後の1つとして手を動かすこと
リサーチで納得のいくものを見つけだせない限り手を動かす必要はない
とにかく手を動かしてるだけじゃ自分が終わってる方向に進んでることに気づけない
やってみせ、言って聞かせて、させてみせ、ほめてやらねば、人は動かじ。
話し合い、耳を傾け、承認し、任せてやらねば、人は育たず。
やっている、姿を感謝で見守って、信頼せねば、人は実らず。
まずは、あなた自身がプログラマーになって、見本を見せることが第1歩です。
その後受託系の会社に就職できたのだけど、人間関係がうまくいかなかったようで数ヶ月で辞めた。
鬱病気味になったみたい...。
どうやら、プログラミングという仕事の特徴について、あなたは理解していないようですね?
プログラミングの特徴は、「コンピューターが相手なので、嘘やハッタリが一切通用しない」ということです。
人間相手なら、適当に指示を出したり、いい加減な対応でも何とかなるけど、コンピューター相手だと1mmも融通が利きません。
という3点が必要です。
警察に職務質問されて有名になった江添亮さんのブログ等を読んで、この方のようにネチネチと論理をこねくり回すのが好きなら、プログラマーに向いています。
(例)本の虫: 麻布十番で職務質問を受けた話 https://cpplover.blogspot.jp/2017/08/blog-post.html
プログラムというのは、小さな部品を組み合わせて、大きなシステムが作られています。
小さな部品がパズルのピースに相当して、大きなシステムがパズルの完成品です。
つまり、大きな問題を小さな問題に分解して、1つずつ順番に問題をつぶして行く姿勢が必要です。
があります。
命令型のプログラミング言語しか使えない人がプログラマーになると、テスト地獄に陥って、結果的に鬱病を発症しやすくなるだろうと危惧しています。
上述のように、パズルのピースを組み合わせてプログラムを作るには、「関数型」の作法を身に付けておくと良いでしょう。
関数型プログラミングを習得するために、今なら「Haskell」または「OCaml」というプログラミング言語をお勧めします。
HaskellやOCamlは、良い参考書がたくさんあるので、本屋に行って実物を確かめてください。
Haskellを学んでみて、パズルのピースを組み合わせる感覚が理解できたら、あなたはテスト地獄に苦しめられないプログラマーになれるでしょう。
もしも、Haskellが理解できないようだったら、残念ですがプログラマーには向いていないかもしれません。
(例外的に、あなたがマゾで、テスト地獄や残業、徹夜が楽しいと思える性格なら、Haskellが理解できなくても大丈夫かもしれません。)
Haskellの教材(英語)を紹介するので、参考までに読んでみてください。
http://learnyouahaskell.com/chapters
(このサイトの内容は、日本語の書籍「すごいHaskellたのしく学ぼう!」として出版されています。)
Haskellは、順番に学べば必ず理解できるようになっています。
もしも、Haskellが習得できなければ、大きな問題を小さな問題に分解して解決していく作業には不向きな性格かもしれないので、他の仕事も検討してはいかがでしょうか?
(人生は一度きり。時間の無駄にならないようにお気を付けください。)
あなたと友人が、無事Haskellを習得して、テスト地獄を乗り超えるスーパーハッカーになり、日本のIT産業を牽引されることに期待いたします。
(追記)
自分が作りたいプログラムすら作れない人が、他人が希望するプログラムを作るなんてできっこないからねw
(プログラマーが楽で簡単な仕事だと思ったら大間違いですよ?)
(追記 その2)
関数型プログラミングをマスターしておけば、OOPでも役に立つよ。(現実には、関数型もOOPも必要に応じて投入するし)
iOS→「プロトコル指向プログラミング」「RxSwift」、Android→「RxJava」辺りのキーワードでググってみて。
別に皮肉とか宗教戦争で煽ってるわけじゃなくて、自分も苦労して辿りついた口だから、今から始める人には遠回りして、余計な苦労を味わって欲しくない。
(追記 その3)
他の人が書いてたけど、1人でプログラミングするんじゃなくて、2人(ペアプログラミング)や3人以上(モブプログラミング)から始めたら良いかも。
Googleの「プロジェクト・アリストテレス」で、仕事の生産性を改善するには「心理的安全性」が重要と分かり、プログラミングの仕事もやり方が変わって来ています。
https://kuranuki.sonicgarden.jp/2017/01/psychological-safety.html
(追記 その4)
元記事が消えていたのでバックアップしておきます。(この投稿だけ読むと意味が分からなくなるため)
https://anond.hatelabo.jp/20170910205249
2017-09-10
■知り合いをプログラマにさせたいんだけど知恵を貸してくれ
プログラマって育休からの復帰しやすいだろうし、アルバイトよりは待遇いいし、勤怠ゆるいし、労力の割に楽ちんだと思うんだよね。
接客のバイトで消耗するくらいなら、プログラマになればいいと思っているのだが、その知り合いは自身のことをプログラミングを不向きと評価しているらしい。私は、プログラミングに限らず物事は時間をかければ習熟していくものだと思っているので、不向きではないと思うんだ。不向きというのは物理的に制限のある時だと思う。
その知り合いについて。
Vimはぎこちないけど使える。日常的にmacOSを使っていてターミナルの操作はできている。cd, ls あたりは理解している。
趣味を含めてアプリケーションを完成させた経験はないが、ifやfor文などの基本構文は理解している。数年前にプログラミングスクールのようなところに半年間通っていた。その後受託系の会社に就職できたのだけど、人間関係がうまくいかなかったようで数ヶ月で辞めた。鬱病気味になったみたい...。
何か成功体験があれば自然とのめり込んでと思うんだけどなかなかスイッチが入っていないみたい。
こちら側からは、プログラマーになれば?と直接は伝えてはなくて、素人でもプログラミングできましたみたいなネットの記事をシェアーしているくらい。(心理的リアクタンス避け)
知恵を貸して欲しい。
仕事柄多くの企業の人達と会う機会があり,自社を含む日本の管理職たちの優秀さに感動したのでメモ代わりに気づいた点を書く.
1. 基本的に失敗しない
通常の企業運営であれば,成功するプロジェクトがあれば失敗するプロジェクトも存在する.しかし日本の優秀な管理者のプロジェクトは基本的に失敗しない.
彼らは仕事の内容ではなくコミュ力で戦う.なので,彼らにとってプロダクトの品質不足や赤字はプロジェクトの失敗を意味しない.
赤字のプロジェクトは数字の見せ方を工夫すれば順調なプロジェクトに見えるし,事前に政治力を働かせておけば厳しい追求もない.不十分なプロダクトも同様である.
順調であると報告された赤字プロジェクトには当然,引き続き投資が続けられて赤字を垂れ流すが,発覚する前には昇進か退職が待っているので彼らに失敗はない.
会社ごと吹き飛ばしかねない特大の爆弾に成長することもあるらしいが,基本的にはその前に爆発して不運な管理者を子会社へ吹き飛ばすに留まる.
2. 新しいことに挑戦し続ける
経営層に次期計画を説明しなければならない彼らにとって,既存業務の強化や安定化などといった停滞はなにもしないのと同義である.
積極性にかけた部下の意見に流されず,常に新しく耳障りの良い新規プロジェクトを提案していくことが彼らには求められている.
もし新規プロジェクトの成果が思わしくなくても,前述の通りそれらはすべて成功したプロジェクトとして扱われる.
コミュ力という全てを貫く槍,政治力という全てから身を守る盾を持つ彼らにとって,使える状況が限られすぐに陳腐化する技術など不要である.
技術開発をするよりも食事に行ったほうが仕事になるし,JavaとJSの違いなんて知らなくても良い.
とまあ皮肉っぽく書いたが,コミュ力や政治力は長所であるのは間違いないと思う.
20代ゆとりド真ん中世代の今の私には無い能力であることは間違いないので,うまく見習いつつも本質を見誤らないように成長したい.
ScalaとかKotlinとかいろいろ言ってる奴いるが10年後にはどうせJavaが勝ってる。
Javaはnull安全じゃない!とかほざく奴はもちろん@CheckForNullアノテーション使ってから言ってるよな…?
フレームワークは流行り廃りがあるから微妙だが、勉強するならSpringにしておけ。それだけでいい。
Webブラウザに標準搭載のJavaScriptが無くなることもまずありえない。
あとやるならjQueryね。AngularJSとかすぐ廃れるから。
学習コストが高いものって結局広まらないからさ…素直に現実を認めよう。
AnsibleやFabric使ってるやつがいるがどうせ10年後にはブームが去り技術的負債となっている。
シェルスクリプトで代用できるのだからシェルスクリプトでやっておけ。
これだけ広まったRDBが今後使われなくなることはまず考えられない。
なにか新しい言語やツールなどをプロジェクトに導入するときに「学習コストが高い」という理由で渋るやつが嫌いだ
学習コストってなんだよ。そもそもエンジニアならそれぐらい勉強しろよ。
別にプライベートの時間削れってわけじゃなくて業務時間内の勉強で事足りるだろ。
いつまで Javaの古いフレームワークにしがみついてんだよ。
お前らがいう学習コストを支払うだけで何十倍ものリターンがあるんだぞ。
単語すら覚えられなくて、意味わからなくて、全然理解できなくて、わかってるやつにバカにされて、ちっとも身についてる気がしなくて
わからなさすぎてイライラして、才能ないのかなって落ち込んで・・・・・・
かならずペイするよ!