大学生は在学中にこういう疑問を持つかもしれない:将来就職するなら何をやるのがいいのだろうか?


もしあなたがコンピュータを学んでいて、将来ソフトウェア・インターネット業界に入りたいなら、おめでとう。これは良い業界で、給料は高く、コネも要らず、すべて実力で勝負できる。いい父親を持つ必要もない。


悪い点は、この業界は極めて過酷な頭脳労働と肉体労働が必要で、残業は当たり前だということだ。


次の問題は:現在のソフトウェアとインターネットにはだいたいどのような方向性があるのか?以下の説明を見てみよう。


1、まず要件はどこから来るのか?


1.1 顧客のプロジェクト


もし顧客のプロジェクトをやるなら、要件はもちろん顧客から来る。もちろん顧客はたいていソフトウェア開発の素人だ(実際こんなに絶対的でもない。ごく少数だが優秀なソフトウェア人材である顧客にも会ったことがある)。彼らは自分の本当の業務要件をはっきり説明するのが難しい。そんな時は、ある人が大々的に登場する必要がある:ビジネスアナリストだ。大企業ではビジネスアナリストは専任だが、小企業ではプロジェクトマネージャーや開発の中核メンバーが嫌々ながらやるしかない。ビジネスアナリストは要件を整理し、後工程のアーキテクトに設計を渡す必要がある。


ビジネスアナリストは、ある業界で長く働くと、業務の専門家になる。例えば、国内の大手銀行の中核システムプロジェクトを一通り経験すれば、銀行業務への精通度は銀行の特定の担当者を超えるかもしれない。そうなればあなたは非常に価値が高くなる。業務を分析するだけでなく、銀行の業務改善を支援することもできる。すごいだろう?


問:ビジネスアナリストは技術を理解する必要がありますか?


答:少しは理解しておくのが望ましい。あなたが分析したものをプログラマーたちが実装するのだ。既存の技術を考慮せず、ひたすらユーザーに迎合すれば、必ずプログラマーに罵られることになる。


もしプログラマーから成長した業務専門家で、技術も優れているなら、あとは座ってお金を数えるだけだ。


1.2 会社の製品


もし製品を作るなら、例えばWeChat、QQ、Taobao、World of Warcraft、征途、大話西遊など、要件は実際には自社の人が定義する。


この要件を定義する、今もてはやされている職業が「プロダクトマネージャー」だ。張小龍はWeChatのスーパープロダクトマネージャーであり、史玉柱は征途の超ベテランプロダクトマネージャーだ。


プロダクトマネージャーは主にユーザーの心理と体験に基づいて製品を設計し、みんなが気持ちよく使えるようにする。優秀なプロダクトマネージャーは今非常に引っ張りだこで、人材不足の分野でもある。


問:プロダクトマネージャーは技術を理解する必要がありますか?


答:必要です。できればプログラマーから成長した人で、製品の設計・実装の難しさを理解していること。さもないと自分だけが楽しんで、やはりプログラマーに罵られることになる。


2、設計と開発


2.1 アーキテクト


聞こえはとてもハイレベルな職種だが、強力な技術力と深い技術の蓄積が必要だ。
アーキテクトの成長には経験を積むことが必要で、技術の広さと適切な深さが求められる。


優雅で柔軟性があり、拡張可能なアーキテクチャを設計することがアーキテクトの主な仕事だ。


最新・最もホットな技術を追求するだけではいけない。既存チームの能力や技術の成熟度も考慮しなければならない。


人材ニーズ:★
難易度指数:★★★★★


2.2 Webバックエンドプログラマー


バックエンドプログラマーは主にビジネスロジックを実装し、フロントエンドが使うAPIを用意する。


Javaがもちろん最も多く使われているが、他にも比較的小規模なPython、Ruby on Railsなどがある。またPHPはシンプルで乱暴だが、中規模・小規模サイトでよく使われる。どれをとっても学習はそれほど難しくない。


この分野の人材ニーズは比較的大きい。


人材ニーズ:★★★★★
難易度指数:★★★


2.3 Webフロントエンドプログラマー


主にJavaScript、CSS、jQueryなどだ。ここ数年、ブラウザ側のユーザー体験が重視され、ブラウザ側の表現がどんどん華やかになっているので、とても人気がある。


人材ニーズ:★★★★★
難易度指数:★★★


2.4 モバイル端末プログラマー


主にAndroid、iOSだ。モバイルインターネットの発展により、今は非常に人気があり、需要も大きい。相対的にiOSは敷居が高く、プログラマーも少なめだが、給料は高めだ。


人材ニーズ:★★★★
難易度指数:★★★★


2.5 システムプログラミングプログラマー


中には簡単な要件もあるが、複雑な要件もあり、膨大なユーザー、膨大な同時アクセスをサポートする必要がある。Taobaoのダブルイレブン、WeChatの春節の紅包争奪戦のようなものだ。


クラウドコンピューティング、仮想化、分散処理を行い、システムの水平拡張をサポートする必要がある。


膨大なデータについては、ビッグデータ分析を行い、そこから価値ある情報を抽出する必要もある。例えばHadoopだ。


オペレーティングシステム、データベース、サーバーサイドシステムのカスタム開発、さらには独自開発を行う必要があるため、小企業には通常そのような技術力はない。主にBATのような企業がやっている。


人材ニーズはそれほど大きくない。プログラマーには、一つの分野を非常に深く研究し、技術の安定性が求められる。


人材ニーズ:★★
難易度指数:★★★★★


2.6 セキュリティ


インターネット時代、情報はうっかりすると盗まれる可能性がある。セキュリティはますます重要になっている。
だから単に機能を実装し、性能を満たすだけでは十分ではない。多くの企業、特にBATはセキュリティを非常に重視している。
この方向性も技術を深く研究する必要がある。


人材ニーズ:★★
難易度指数:★★★★★


3、テスト


これは技術に対する要求はあまり高くないが、テスト関連の知識が必要で、テストケースを設計し、テストデータを準備し、テストを実行できることが求められる。


今はアジャイル開発が流行しており、テスト担当者にも開発知識が求められる。少なくとも自動化スクリプトをいくつか開発できることが望ましい。


多くの女性が後にテスト職に転向したが、主に女性の方が細かいところに気が付くからだろう。


私はIBMで非常に優秀なテスト担当者を見たことがある。彼女は上に述べた仕事を立派にやり遂げるだけでなく、設計・開発の議論にも参加でき、よく開発者も思いつかないような問題をテストの観点から提起し、ソフトウェアの品質向上に大いに貢献した。


4、データベース管理者


ほとんどすべてのプロジェクトでデータベースのサポートが必要だ。大規模・超大規模プロジェクトでは、DBAと呼ばれる職位がある。DBAはデータベースの知識に非常に精通しており、普段はデータベースを管理し、開発時には開発チームを助けてデータベースを設計し、性能のボトルネックを見つけてパフォーマンスチューニングを行う。


5、グラフィックデザイナー/ドキュメント作成


グラフィックデザイナー:つまりインターフェースを美化することだ。通常はデザイナーがまずインターフェースのプロトタイプを作り、皆で議論・修正し、確定後、デザイナーはアイコンやボタンなどのさまざまなUI要素を生成する。


現在、デザイナーにも一定の技術要件がある。単にインターフェースを描くだけでなく、HTMLテンプレートも作成する必要がある。そのためデザイナーはHTML、CSS、さらには一部のJavaScriptを理解している必要がある。


プログラマーはHTMLテンプレートを受け取ったら、それに業務コードを追加すればよい。


ドキュメント作成者:小規模プロジェクトでは通常誰かが兼務で行うが、大きなプロジェクトや製品では専任のドキュメント作成者がいる。私は2003年に上海証券取引所のプロジェクトに参加したとき、専任のドキュメント作成者が書いたWord文書を見たが、あまりにも専門的で、その美しさは完全にそのまま出版できるレベルだった。


私はそれをコピーして、自分でも真似を作りたいと思ったが、見よう見まねでも全く作れなかった。


6、プロジェクト管理


プロジェクトが始まると、ビジネスアナリスト、アーキテクト、開発、テストなどの一団が、飢えた狼が獲物に飛びかかるように、プロジェクトに噛みつく勢いだ。


しかし、これだけ多くの人がどう協力するのか?どう管理するのか?進捗は要求どおりに完了できるのか?ここでプロジェクトマネージャーの出番となる。


プロジェクトマネージャーは、要するに皆を率いてプロジェクトを進める仕事で、主に人と接する。各方面との関係を調整し、プロジェクトの円滑な進行を保証する必要がある。


問:プロジェクトマネージャーは技術を理解する必要がありますか?


答:もちろん必要だ。できれば開発出身が望ましい。さもないと、あのプログラマーたちが何を言っているのか理解できず、表面上を漂うだけで、プロジェクトに深く入り込めず、周囲もあなたを認めず、チームをうまく率いることは絶対にできない。


7、運営


もし自社製品を開発しているなら、開発が完了した後、すぐに「どう宣伝するか」という問題に直面する。


インターネット時代、世界は公平で、競争は非常に激しい。良いソフトウェア、アプリ、あるいはウェブサイトであっても、運営が不足していれば、どんなに技術が優れていてもダメだ。


運営とは、実際にはあらゆる手段を講じて自社製品を知ってもらい、使ってもらうことだ。ここには深いノウハウがある。例えば、記事広告(ソフト文)をどう書くか?ソーシャルネットワーク、WeChat、微博(Weibo)でどうマーケティングするか?どう統計・分析し、正確にターゲットを絞るか?


この点では、2014年以前のXiaomi(小米)は間違いなく模範だ。雷軍の7文字の秘訣:「专注(集中)、极致(極致)、口碑(口コミ)、快(速さ)」、黎万強の『参与感(参加感)』はどちらも古典だ。


優れたインターネット運営人材は極めて不足しており、当然非常に引っ張りだこだ。
プログラミングに興味がない人は、この方向を検討してみるといいだろう。


これだけ多くの職業の方向性について話してきたが、そのほとんどが一定の技術を理解していることを要求していることに気づくだろう。だから私が実際に言いたいのは、こういうことだ:
働き始めたばかりなら、まずはプログラマーから始めてみるといい。ゆっくりと自分が興味のある方向性を探していけばいい。


出典:码农翻身(WeChat ID:coderising)
作者:刘欣