返回介绍

第7章 你是哪类软件开发人员

发布于 2024-08-21 21:40:05 字数 4152 浏览 0 评论 0 收藏 0

你曾经聘请过律师吗?当时你做的第一件事是什么?如果你还没有聘请过律师,那你觉得自己要做的第一件事会是什么?

如果你认为你需要明确指出自己需要哪种类型的律师,你是对的。你不想抓起电话随便打给一位律师,你肯定想打给能够解决自己问题的专业律师。律师这一行术业有专攻,他们通常在从业一开始就走上了专业之路,成为刑事律师、交通事故律师或者房地产律师等。

你不会想找打离婚官司的律师代理自己的税务或房地产方面的事务,所以专业化是非常重要的。律师并不是从法学院毕业的那一刻才决定自己要当律师的。但是,遗憾的是,大多数软件开发人员是在干起了软件开发行当时才决定自己要当程序员的。

专业化很重要

有大量的软件开发人员并没有具体的专业方向。事实上,大部分软件开发人员完全以自己使用的编程语言来定义自己的专业性。你经常会听到有人说我是C#开发人员,或者我是Java开发人员,等等。这种专业分工太宽泛了,并不足以说明你能胜任哪种类型的软件开发工作。一门编程语言并不能让我了解你是哪类软件开发人员,也不能告诉我你真正能做什么。它只是让我知道你在工作中使用哪一种工具。

你可能会害怕专攻软件开发的某一领域,担心自己陷入很窄的专业领域,从而与其他的工作和机会绝缘。虽然专业化确实会把你关在一些机会的大门之外,但与此同时它将打开的机会大门要比你用其他方式打开的多得多。

再拿前文的律师场景打比方。如果你成为了一名律师,但并无专业方向,那么理论上每个要找律师的人都会是你的客户。但问题是,只有少数人才想雇一个通才式的律师。大多数潜在客户都倾向于聘请专才。

尽管看起来你有一大拨潜在客户,但现实上,身为一个通才式的律师,你的客户群会大幅缩减,只剩下那些没有精明地能意识到自己需要专才的那些人。

从表面上看,身为专才后,潜在雇主和客户群都变小了,但是实际上你对他们更具吸引力了。只要你专业能力雄厚,市场没有过渡饱和,与那些自称为软件开发人员的人相比,你能更轻松地找到工作或者赢得客户。

在一个专业方向上拥有专长

如果称自己是C#开发人员或者Java开发人员不够明确的话,那该怎么称呼呢?这可不是一个容易回答的问题,因为真正的答案是那得看情况了。这取决于你所要达成的目标是什么,这个领域的市场有多大。

让我给你举个例子吧。在我职业生涯的早期,我把自己定位为专攻打印机驱动软件和打印机语言开发的软件开发人员。这个专业很偏门,只可能在数得着的几家大公司找到工作。不过你也能想象得出,打印机制造商要想找到专攻打印机和打印机语言的开发人员有多难。

我的偏门专业让我对小范围内的潜在雇主极具价值。这些雇主并不会在大多数城市存在,所以如果我的市场是美国甚至全球的话,那在这个庞大的市场上,我的专长格外有用。但是,如果我不想搬离现在生活的地方的话,那我的专长并无用武之地。(有多少本地公司需要一位专攻打印机的软件开发人员?)幸运的是,当时的我愿意去美国的任何地方工作,所以这个专长挺适合我的。

注意

专业化的规则是:专业化程度越深,潜在的机会就越少,但获得这些机会的可能性越大。

让我们回到你的情况。假设你正在你所在地寻求一份工作,并且你是一个Java开发人员。很多大都市对Java开发人员都有相当大的需求,所以开始的时候你会拥有一个很棒的大水池——你可以得到很多工作机会。但其实你并不需要所有的这些工作机会,只要一个就够了。

让我们假设一下,在任何给定的时间内,你所在的地区都有500个Java开发工作岗位空缺。现在,假设你决定走专业化路线,限定自己的市场但提高或者这些工作的机会,那你的专长就是做Java Web开发人员。或许这一决定减少了250个工作机会,但是还有250个工作机会。仍然很多,不是吗?记住,你只需要一份工作。

通过有针对性地缩小工作机会池,提高被录用的机会

现在你决定更专业化一点,选择专攻Java Web开发栈(我们不在这里牵扯过多具体Java Web开发栈的细节)。也许这会将你的工作机会降到50个,但可供挑选的工作机会依然很多,同时因为你现有的技能和知识都是针对这些工作的,于是你获得这50个工作中的某一个的机会增加了。

软件开发人员的专业类别

软件开发人员有很多不同的专业分类。比较明显的分类方法是按照开发语言分类和按照平台分类,但是也可以按照方法论分类、按照技术或业务种类分类。

首先你得弄清楚一件事,自己想从事哪类软件开发工作。你是想做应用程序的前端开发,设计和实现用户界面,想做应用程序的中间件开发,实现业务规则和逻辑,还是想做应用程序的后端数据库或底层操作开发?你甚至可以做到三者通吃,成为传说中的全栈开发人员;但是在这种情况下,你还是应该专注于某一特定的技术栈。(例如,一位Web网站全栈开发者可能使用C#和SQL Server专门创建ASP.NET MVC网站。)

你也可以专攻嵌入式系统开发,与硬件设备紧密相关,写出来的代码运行在某个设备内部的计算机上。嵌入式系统程序员要解决的问题与Web开发人员要处理的截然不同。

操作系统是另一个专业领域,尽管对Web开发并不是很重要。许多开发人员会针对特定的操作系统(如Windows、UNIX或者Mac)来开发应用。

移动应用开发或特定的移动操作系统开发是另一个潜在的专业领域。针对专门为iOS和Android平台开发移动应用的开发人员的需求巨大。

一些开发人员的专业化水平确实很深,已经成为某个具体平台或框架的专家。这些开发人员的潜在客户稀少,但由于他们的专业化水平,他们能够开出非常高的时薪。在那些非常昂贵的软件套件或构架周围,如德国软件行业巨人SAP,你总能发现这些底层开发专业领域。在这些昂贵的软件系统上开发集成化客户解决方案的专家们收入非常高。

专业领域

- Web开发栈

- 嵌入式系统

- 特定的操作系统

- 移动开发

- 框架

- 软件系统

选择你的专业

对于我的专业化观点,大多数软件开发人员表示赞同。但是,我常常被问到如何选择一个专业方向。选择一个专业领域是一项艰巨的任务。

这里有一些技巧来帮你选择自己的专业。

- 在你现在或以前工作的公司里,有哪些主要的痛点?你能成为一名专门解决这些痛点的专家吗?

- 有没有一种特定的工作是无人能做,或者缺乏经验丰富的人?成为这个领域的专家,你就会获得大量业务。

- 在各种会议上和用户组中哪些话题最常出现?

- 哪类问题你回复的最多,无论是针对同事还是在Stack Overflow(http://stackloverflow.com )这样的网站上?

无论你做什么,首先确保你选定了某些专业方向。市场规模决定了你的方向有多么具体,所以一定要让它尽可能地具体。你会在这个细分市场上更抢手。别担心,如果你需要,随时可以改变你的专业方向。显然,我现在不再专门从事打印机方面的软件开发,我知道许多开发人员即使迁移到不同的专业领域,他们依然大获成功。例如,我的好朋友John Papa,他曾经是微软Silverlight方面的专家。在Silverlight不行了之后,他将自己的专业领域转移到单页应用(Single Page Applications,SPA)。

精通多种语言的程序员该怎么办

每当我谈起专业化的话题,我都会遇到一些阻力。我认为在这里很有必要澄清一下:即使我推荐走专业化道路,也不代表我认为你不应该同时具备广泛的技能。

这二者看起来似乎是矛盾的,其实并非如此。做一个技术全面、多才多艺的软件开发人员非常棒。能够使用多项技术和多种编程语言,有助于你的职业发展,能让你比那些仅了解一项技术或一种编程语言的软件开发人员更有价值。然而,这种万金油式的人才在市场上并不吃香。

团队里有一个全能的开发人员是件好事,但是很少有公司或客户会去寻找这样的人才。即便你各种技术能力惊人,通晓50种编程语言,你最好还是选定某个专业领域,哪怕时不时换一下。

学富五车,或者灵活变通并同时仍有所专长让自己卓尔不群。如果你非要二选一,那先从专业化开始,再拓展分支。

采取行动

- 列出你能想到的所有软件开发的专业领域。从广义的范畴将它们逐一细化,看看你能细化到多具体。

- 你当前的专业领域是什么?如果没有的话,想想你会选择专攻哪个领域。

- 去主流的招聘网站上看看自己的专业领域市场行情如何。确定一下,专业化道路是会让自己受益,还是过度限制了自己的选择。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文