早く人間になりたい。
以下はEmma Wedekindによる記事、101 Tips For Being A Great Programmer (& Human)の日本語訳です。
Googleの使い方を知ろう。
プログラマであるということは、問題に対する答えを探す能力があるということです。
Googleのうまい使い方を知ることで、開発にかかる時間を大幅に節約することができます。
約束は控えめに、出来高は多めに。
タスクに2週間かかるようなら3週間かかると伝え、2週間で提出しましょう。
期待を上回った結果を出すことで、信頼を築くことができます。
デザイナーと絆を築く。彼らは友達です。
デザイナーはユーザ視点の問題点に解決策を提供してくれます。
それらを学び、効果的な製品を作るために仲間として働きましょう。
メンターを探せ。
何かを学ぶことができる師匠を見つけ、共に切磋しましょう。
それを始めるのに、Coding Coachはいい場所です。
メンターになれ。
何かを教えることができる弟子を見つけ、共に切磋しましょう。
それを始めるのに、Coding Coachはいい場所です。
役立つコメントを書け。
コメントには『何を』ではなく『何故』を書きましょう。
適切な名前を付ける。
関数や変数の名前はそれらの目的を適切に表すべきであり、myCoolFunctionという名前ではうまくいかないでしょう。
休暇を取れ。
我々は皆、リフレッシュする時間が必要です。 行きたかったところに旅行しましょう。
同僚とあなたの脳はあなたに感謝するでしょう。
いらないコードは削除せよ。
技術的負債を残しておく理由はありません。
コードを読め。
コードを読むスキルは過小評価されがちですが、非常に貴重なものです。
仕事と私事のバランスを両立する。
長く働いた後は、休みの時間が必要です。
携帯電話から仕事のアプリを削除し、連絡を遮断しましょう。
必要な会議だけに出る。
その会議はメールやSlackで変わりになりませんか? もしそうであれば、会議を避けてください。
そうでなければ出なければなりませんが、できるだけ減らすことを目指してください。
ペアプロしろ。
ペアプログラミングでは、教師と生徒両方の立場を同時に経験することができます。
よいメールを書く。
メールの文章は簡潔で明確に書き、読み手にとって読みやすいことを意識しましょう。
4ページにわたるメールなど誰も読みません。
コミュニティに参加する。
志を同じくする人と同じ釜の飯を食うことは、あなたが成長するきっかけになるでしょう。
ブランチを片付ける。
友達が遊びに来る前に自宅を片付けるように、バージョン管理のブランチも片付けてください。
必要のないブランチは、押し入れに突っ込むのではなく捨てます。
排他的になるな。
寛容でありなさい。 業界に入る能力がないなどと言ってはいけません。
誰もがその価値を持っています。
学び続けなさい。
あなたは、継続的な学習を必要とする職種を選びました。
それを至上としなければなりません。
諦めるな。
いつも簡単にことが進むわけではありません。 しかし、皆同じところから始まりました。
あなたも辿り着くことができます。
苦手に挑戦しよう。
苦もなくこなせるタスクは、あなたの成長の糧になることもありません。
要件を明確にせよ。
コードを書く前にはっきりさせましょう。
要件の省略は一時的に時間を節約するかもしれませんが、後で苦労します。
ツールを使おう。
裏の裏まで知っているツールをひとつは持っておいてください。
どのツールは何の目的のためにあるのか、ある目的のためにはどのツールを使うのが効率がよいか、知りましょう。
建設的な批判を受け入れる。
信頼できる同僚や友人に、建設的な批判意見を求めましょう。
それはあなたがプログラマとして、そして人間として成長するのを助けます。
柔軟な頭を持つ。
技術は常に、急速に流転します。 新技術を拒否しないでください。
それを学び、それから意見してください。
最前線を保つ。
出版物、ブログ、ポッドキャスト、ニュースなどをフォローし、新技術についていってください。
問題解決に集中する。
難しい問題を解決するスキルは、他の問題も克服することができます。
問題解決のために必要な技術を磨いてください。
謙虚だなーあこがれちゃうなー。
どんな立派な肩書きを持っていたとしても、どんな会社に勤めていようとも、謙虚さを忘れてはいけません。
プレゼンテーション能力を磨く。
聴衆を魅了する、効率の良いプレゼンテーションを行う方法を学びましょう。
やってみる前に、全ての策を検討する。
最初に思いついた解決策をすぐに実行しないでください。
突き進む前に、全ての道を調べてください。
自分の専門を見つけよう。
ハイテク業界には多くの分野があります。
自分が最も興味のある分野を見つけ、そのエキスパートになりましょう。
良い習慣を身につける。
健康で、集中を乱さない、一貫性のある習慣を身につけましょう。
タイムボクシングを採用し、最も重要なタスクから仕事を始めます。
慣れるまで時間はかかるかもしれませんが、長期的には行う価値があります。
デバッグの方法を学ぶ。
ブラウザのデバッガツールを調べます。 IDEを使ったデバッグの詳細について調べます。
効率的にエラーを追跡する方法を学ぶことで、どんなに困難なバグであっても解決することができるようになるでしょう。
持っているスキルをさらに磨こう。
あなたが今既に知っているスキルを使ってはいけないという意味ではありません。 意識して使っていかなければ、スキルは時間と共に衰退していきます。 特にこの業界ではその傾向が顕著です。
「私はいつもこのようにやっている」から抜け出し、「もっとよい方法はないか?」を追い求めましょう。
あなたが今現在筋肉モリモリマッチョマンの変態だったとしても、毎日ドーナツ食ってごろごろしていたら萎んでしまいます。
理由を理解しよう。
あなたは自分の意見を表明しなければならないときは来るでしょう。 そのときには、その理由を理解していることが重要です。 ソリューションAがソリューションBより優れているのは何故ですか?
根拠のある理由を展開することで、あなたの意見は大きく補強されるでしょう。
自分の価値を知る。
あなたは商品であり、従って価格は適切に決定されるべきです。 あなたの住んでいる地域における業界の平均値に注意を払いましょう。 あなたの価格がそれより低いのであれば、上司に直談判する時間です。
仕事に相当する価値を受け取るべきです。
助けを求めることを恐れない。
何らかの問題を抱えていて、解決策の調査に時間がかかりすぎているとき、それは助けを求めるときです。 我々は皆人間であり、人間はみな誰かの助けが必要です。
助けてもらうために手を伸ばすことは、恥ではありません。
学ぶ方法を学ぶ。
学び方には色々な方法があります。 ある者はチュートリアルを試すことが最も効率よく、またある人は本を読むことが向いているかもしれません。
あなたの学習スタイルを見つけ出しましょう。
親切であれ。
何らかの問題について同僚に質問されることがあるかもしれません。
丁寧に答えましょう。
休憩を取れ。
8時間連続してコーディングし続けることはほぼ不可能です。 あなたはすぐに燃え尽きるし、多くの間違いを埋め込むでしょう。 だから、休みを取ることを忘れないようタイマーを設定しましょう。 散歩する、同僚とコーヒーを飲む。
いちど画面から離れることで、生産性や作業の質によい影響が現れます。
進捗を管理せよ。
コードの学習には時間がかかり、先に進んでないと感じるととてもがっくりすることがあります。 だから、あなたの成果と、目標への進捗状況を追跡することは重要です。 PCの隅に小さなメモを用意し、何かを達成するたびに、それがどんなに小さなことであっても書き留めておきましょう。
小さな実績は、いずれ大きな成果を産み出します。
フレームワークに頼りすぎない。
ひとつのフレームワークやライブラリについて根掘り葉掘り調べるよりも、それぞれの違いについて調べましょう。 必ずしも片っ端からフレームワークやライブラリを学ぶ必要はありません。
しかし、それらが何故そのようになっているのかを理解することは、あなたがよりクリーンで高性能なコードを書くことを助けてくれるでしょう。
コードレビューを愛せ。
誰かがあなたのコードを読んで分析することを恐ろしいことだと感じるかもしれません。 しかしそれは、あなたをより良いプログラマにするためのフィードバックを得られる貴重な機会なのです。
また逆に、より良いコードレビューを行う能力も養いましょう。
関連することがらも学ぶ。
デザイン、マーケティング、フロントエンド開発やバックエンド開発など、関連することがらの基礎も学びましょう。
それはあなたがより偉大なプログラマになることを助けてくれるでしょう。
楽な技術ではなく、適切な技術を選ぶ。
プロジェクトごとに必要なものは異なるため、対象に適したツールを選択する必要があります。
以前に使ったことのあるテクノロジーを使い回すのは簡単ですが、それらがプロジェクトのニーズに合わない場合は、代替手段を検討しなければなりません。
ミスに責任を負う。
全ての人間は間違いを犯します。 あなたもキャリアの至る所で間違いをしてきました。 重要なことは、間違いを犯したときに、自分でその責任を取ることです。
そうすることで、あなたは同僚や上司からの信頼を得ることができるでしょう。
自分のコードを見返す。
プルリクを開く前に、自分のコードを見返してみましょう。 それが同僚のコードだったとしたら、あなたはどのようなコメントをしますか?
コードレビューを依頼する前に、まず問題点や間違いを洗い出してみることが肝要です。
失敗から学ぶ。
失敗とは、単に期待された結果を達成できなかったということであり、必ずしも悪いことではありません。 我々はみな、キャリア形成の過程で多くの失敗を経験しています。 失敗から学びましょう。
次こそは何か異なることができるでしょう。
弱点を認識せよ。
自分を知りましょう。 自分の弱点はどこですか? PUSHする前にテストを更新するのを忘れること? それともメールの返信が苦手なこと?
自分の弱点を知り、それを克服するために取り組みましょう。
好奇心を保ち続けよ。
この業界は常に進化し続けているので、ついていくには好奇心が重要になります。 もし理解できていないところがあるなら、プロジェクト要件であろうとコードの行であろうと、そのことを話してください。
説明を求めたとしても、そのことであなたを批判する人はいませんし、結果としてより良いコードができあがります。
全てを学ぶことはできない。
世の中の知識は無限大であり、それらを全てマスターすることは不可能です。 いくつかの分野についてだけ深く習熟し、残りは見切りましょう。
他分野についても表面的な、あるいは実用的な知識を付けることは有用ですが、しかし全てを習得することはおそらくできないでしょう。
最愛の人を殺せ。
書いたコードに強い愛着を持ったりする必要はありません。 自分の仕事が捨てられることでいい気分になる人はいませんが、コードにはライフサイクルというものが存在します。
いつまでもそれに固執する必要はありません。
背中を預ける戦友を持て。
良いチームは、互いを助け合います。
これにより、失敗を恐れることなく新しいことにチャレンジする居場所ができます。
コミュニティからインスピレーションを得よう。
業界から、尊敬に値する人々を見つけましょう。
彼らから、現在の仕事を続けるか、新しいことに挑戦するか、刺激を受けることができるでしょう。
仕事に価値を与えよ。
経験の多寡や役職にかかわらず、あなたのしている仕事には価値があります。
自分のしている仕事に対して、それに相応しい価値を与えましょう。
気をそらすものを遠ざける。
Slackの通知、テキストメッセージ、メール、SNSなどをオフにすることで、仕事に集中して生産性を最大化することに役立ちます。
メッセージへの返信が30分遅れたところで壊れる友情なんてありません。
支えになる。
重要なプレゼンテーションを行うとき、何らかに行き詰まったとき、そんなときにはチームメンバーをサポートしましょう。
功績があれば当然認めてやれ。
誰かが素晴らしい仕事をしているなら、それを口に出して言いましょう。 ポジティブなフィードバックはチームメンバーとの信頼形成に役立ち、彼らのキャリアを育てる素晴らしい方法です。
彼らも同様にあなたを賞賛することでしょう。
コードはテストせよ。
テストは重要です。 単体テスト、回帰テスト、総合テスト、E2Eテスト。
コードをテストすることで、コードはずっと安全になることでしょう。
綿密に計画せよ。
新機能のリクエストやバグ報告を受け取ったら、まず最初に計画を練ってください。 その問題を解決するため、またはその機能を実現するためには、何が必要ですか?
最初に計画のために取ったほんの数分の時間が、後に訪れる大きな挫折の時間を軽減してくれます。
擬似コードの使い方を学ぶ。
擬似コードを使うことで、複雑な問題について多くのコードを書くこともなく整頓して考えることができます。
擬似コードを書き下ろし、様々なテストケースを考え、コードに落とし穴が存在しないか確認します。
業績を記録しよう。
職場で表彰されたら、それを記録しよう。 重要な機能を開発したら、それを記録しよう。
記録は昇進の助けになり、また辛い日のやる気の元になります。
プログラミングの基礎を学べ。
基本的なソートや検索のアルゴリズム、データ構造を学びましょう。
これらは言語に縛られることなく、言語を横断して問題解決に役立ちます。
長期の使用に耐える言語を選ぶ。
最新テクノロジを試すのはとても楽しいことですが、エンタープライズアプリを作る際は長期に保守しやすい言語を選んでください。
あなたのチームは、数年後にその選択を感謝することでしょう。
デザインパターンを学べ。
デザインパターンはコードを構築するための便利なツールです。
全てのプロジェクトでそれらが必要になるとは限りませんが、しかしデザインパターンの基礎を理解していれば、より大規模なアプリケーションを構築する際の助けとなります。
曖昧さを減らす。
プログラミング能力の高さをひけらかす短くて複雑なコードを書くかわりに、読みやすくてシンプルなコードを目指しましょう。
それはチームメンバーのためでもあります。
技術的負債を解消する。
技術的負債はパフォーマンスに大きな影響を与える場合があるため、リファクタリングが可能であるならば、するべきです。
継続的デリバリーを目指す。
毎月一回大きなアップデートをリリースするのではなく、小さな変更で少しずつリリースします。
バグや互換性の失われる変更が入る可能性が低くなります。
コミットは小さく、早く。
小さな粒度で頻繁にコミットすることが、作業履歴を綺麗に保ち、重要な変更をリバートすることによる精神的ダメージを軽減するための最良の方法です。
助けを求めるタイミングを測る。
助けを求めることを恐れてはいけないのと同時に、いつ助けを求めるかを知ることも大事です。 何もしないうちに助けを呼ぶことは避けるべきであり、助けを求めた後も挑戦はし続けなければなりません。 しかし、単純そうな問題に一時間以上苦戦するようであればコストがベネフィットを上回ってしまいます。
助けを求めるべきときです。
効率的に質問する。
質問するときは、できるだけ具体的に詳しく伝えましょう。
未完の仕事からも教訓を得る。
完成させなければ教訓を得られない、などということはありません。
解決の先が見えないときは、あなたの考えている方法が有効であるか、信頼できる同僚に尋ねてください。
公式ドキュメントを読め。
あらゆる技術について、公式ドキュメントは最も正確な情報源です。
従って、公式ドキュメントを読むことこそがエキスパートになるための近道です。
あらゆることを試せ。
問題に対して様々な解決策を試すことを妨げるものは何もありません。
試すことで何か失うものがあるのですか?
ミーティングで発言せよ。
あなたのアイデアや意見は貴重であり、会議に能動的に参加することが、あなたやチームと経営層との関係を改善することに役立ちます。
チームを超えて共同作業せよ。
社内の他のチームと一緒に仕事をする機会があれば、是非参加しましょう。
情熱をぶつけるサブプロジェクトを持て。
週40時間以上働いた後は、自分の趣味のプロジェクトに時間をかけることが重要です。
それによってプログラミングに対する情熱を再確認し、また仕事だけでは知ることができなかったかもしれない新しい技術に挑戦することもできます。
キャリアのゴールを定めよ。
理想的なキャリア形成の目標を持っておくことは重要です。
さもなければ、あなたはターゲットもなく銃を撃とうとしているようなものです。
コミュニティに参加する。
ブログにコメントし、Twitterの会話に参加し、コミュニティと交流しましょう。
積極的な見物人は、壁の花よりも多くのことを学べます。
タスクの優先順位付け。
タスクに優先順位を付け、生産性向上に役立てます。
毎日の直近のタスクと、より長期的な予定のタスクをリストアップし、最も重要なものから並べましょう。
小さなことを見逃さない。
枝葉末節だと思ったことが、プロジェクトに大きな影響を与えることもあります。
チームメンバーを信頼する。
あなたのチームメイトはそのスキルが故に雇われました。
仕事を成し遂げるために彼らを使い、彼らを信頼しましょう。
委任することを覚える。
あなたが指導的ポジションにいるのであれば、効率的に委任する方法を学びましょう。 それによってあなたの時間やフラストレーションを節約できます。
あなた一人で全てを行うことはできません。
自分を他人と比べない。
あなたが比較しなければならない唯一の人物は、昨日のあなたです。
仲間を作れ。
プログラムを学ぶことは、長く容易ではない旅路です。
共に歩き続ける仲間を作り、支え合いましょう。
スケーリングは後回し。
最初からスケーリングを考えて開発すると、確実に挫折します。 スケーラビリティを念頭に置いて開発することは有用ですが、スケーリングは必要のないかぎり行わないでください。
そうすることで、必要のない無駄な開発で開発者の心を折ることもなく、それでもあなたは成長することができます。
パフォーマンスへの影響を考慮する。
クールで最新のテクノロジーを使用したくなったら、その前にまずパフォーマンスへの影響を調べる必要があります。 同じことを、パフォーマンスを犠牲にすることなく実現できますか?
そうであるなら、そのテクノロジーの採用を再考することをお勧めします。
差別するな。
新しいアイデアや技術を差別してはいけません。 新しいスキルを否定せず、可能性に対して心を広く持ってください。 また人を差別してはいけません。
我々はみんな尊敬に値します。
資格がなくても求人に応募する。
仕事の全ての要件を満たす人はいません。 だからチャンスを狙ってみましょう。
駄目だったところで失うものはありません。
コードをモジュール化する。
全てのコードをひとつのファイルに記述することはできますが、それでは保守できません。
モジュール化することで、コードの見通しが良くなり、テストも容易になります。
単なるコピペはNG。
Stack Overflowからソリューションをコピペするつもりであれば、あなたはそれを完璧に理解していなければなりません。
コピペしたいコードの意図を理解してください。
良い環境・仕組みを作る。
作業場や仕事の仕組みが楽しいものになれば、仕事へのやる気も上がるでしょう。
あなたがそれをするのです。
初心を忘れないで。
我々はみんな同じところから始まりました。
あなたのスキルや役職がどれだけ進化しても、最初はどうだったかを忘れないでください。
楽観的にいく。
何かがうまく行かない日は、楽観的になりましょう。 明日は新しい一日です。
楽観主義はあなたのチームの活力や精神的健康の糧になります。
ワークフローは継続的に見直す。
今日うまく行ったからといって、明日もそれがうまくいくとは限りません。
ワークフローを再評価し、必要に応じて修正しましょう。
リモートワークの方法を学ぶ。
リモートワークが可能なのであれば、効率的にそれを行う方法を知りましょう。 気を散らすものを隔離して、専用の仕事場を作りましょう。
Boneskullがリモートワークについて素晴らしい記事を書いています。
アクセシビリティの高いコードを書く。
容易にアクセスできる必要があり、そしてそれは難しいことではありません。
誰もがあなたのプロダクトを使える必要があります。
約束は守れ。
ある日までに何かを届けると約束したのであれば、必ずその約束を守りましょう。
期限に間に合わないことがわかったら、早めに連絡しましょう。
積極的に活動せよ。
仕事に余裕があるなら、チームを支援するタスクを見つけて実行しましょう。
チームメンバーの大きな助けになります。
アメイジングなポートフォリオを作れ。
良いポートフォリオは、あなたを他の候補者から目立たせます。
あなたのデザインとプログラミングのセンスを存分に発揮するチャンスです。
なぜプログラミングが好きなのか、覚えておこう。
あなたはそれに魅了され、この業界に入ったのでしょう。 不平や不満が溜まってきたときは、休息を取ってください。
プログラミングに対する情熱を再燃させる期間を取りましょう。
知識を共有する。
クールな何かを学んだら、それを共有しましょう。 ミーティングやカンファレンスに参加したり、同僚やメンティーに教えたりしましょう。
あなたの知識を共有することで、知識は広まり、そしてまたあなたの知識も強化されます。
おわり!
このTIPSを楽しんで、あなたが素晴らしいプログラマー(と人間)になれることを祈っています。
運動する。
週3回以上、できれば毎日、運動しましょう。 我々の仕事は、何年もほとんどは座りっぱなしです。 これは身体に深刻な悪影響を与えることでしょう。
気に入ったスポーツを見つけましょう。
寝ろ。
睡眠は人生における最優先事項だ。
質の良い睡眠を心がけよう。
「100回の腕立て伏せ、100回の腹筋、10キロのランニングで最強のプログラマになれるよ!」「ただしハゲる」 「午前5時に眠り、午前9時に目を覚ますプログラマの数に驚いています。直近ではうまくいくかもしれませんが、長期的には間違いなく失敗します」 「101?はぁ?と思ったけど素晴らしい投稿だった。新人プログラマに与える記事リストの一番目だ!」 「素晴らしい!101のリストのうち99が私にヒットした。」 「39について、好きなことに集中しているときは、それを中断するのは難しいかもしれない。しかし休憩を取った方が長期的には生産性が高くなる。」 「83について、SNSの普及した現在では、他人のと自分の成果を比較しないことは非常に困難。でも成功する唯一の方法は成果を出すこと。」 「20番について、私は専門教育を受けてないのでopencvやmatplotlibを怖がって避けていた。でも手を出してみたら素晴らしいものだった。私は自分で記事を書き、その過程で私よりずっと優れた記事を見つけ、そこから得ることができた。」 「2番はよくない。過剰な品質はやがてそれが標準になり、真面目な開発者ほど毒沼に陥る。私のルールは、過剰部分がビジネス要件と一致しているか、簡単に対応できるか、エネルギーを費やす価値がある場合にのみ対応する。」
「休憩するときには水を飲もう。」
多すぎぃ!
こんなに気をつけて生きていくなんてできねーよ。
そもそも私プログラミング好きじゃないですし、勉強も努力もしたくないし、常日頃からあらゆる方向に気を張っていくなんてできもしないですね。 プログラミングなんて仕事だから仕方なくやってるだけであって、5000兆円手に入ったら即座に仕事辞めて寝て暮らすわ。
だから5000兆円ください。
しかし全てを守るのは無理でも、この中の幾つかでも、できるところを意識しておけば、今後が僅かに変わっていくかもしれません。
最初はほんの少しの変化でも、やがて人生を大きく左右することになるでしょう。
所々英語のスラングなのかなんなのか、意味のよくわからないところが色々あった。
きっと誰かがプルリクしてくれるはず。
33番目。 "Just because you've got a six pack now, doesn't mean you can eat a 🍩 a day and stay that way."
突然ドーナツを一気食いできないとか書かれても何のことだかなのだが、一気に多くのことを学習することはできないみたいな意味か?
38番目。 "You can voice your opinions about Deborah's lack of initiative without ripping her to shreds."
HeLa細胞を細切れにすることと親切にすることがどう関係するのかがよくわからない。
43番目。
"tangential spaces"を調べても接ベクトル空間しか出てこないんだけど、こういうかんじの意味で合ってるのだろうか。
51番目。
タイトルの意味が全くわからないのだが映画のこと?