[食指飞动]读The.Passionate.Programmer[市场选择篇]
The Passionate Programmer之Choosing the Market
>> Lead or Bleed
选择Leading Edge Technology(成熟技术)还是Bleeding Edge Technology(不成熟技术)
Leading Edge是Cutting Edge,那么Leading Edge Technology是具有统治或者领先地位的技术。相对而言,Bleeding Edge Tech更要前卫一些,但并非完美的技术,可能回报率很高,但是具有风险性。
这其实是一个风险与回报的矛盾。Chad在书中举了两个例子:
一个是关于Cobol与Java。如果在Cobol风头正劲的当年,你选择了Java,那么你对了,获得相当的回报;
另一个则是BeOS。如果当年你觉得很有前途并想当然Apple会收购它,并付诸于努力去学习,那么你惨了。BeOS后来被Palm收购,并最终停止了开发。
感觉这Bleeding Edge跟Disruptive Technology有得一比。
>> Supply and Demand
供需关系
Chad在书中提到,N年前,做几个简单的HTML就能为你带来不菲的收入,但随着Web设计师越来越多,可观的收入也伴随着市场供求关系逐渐趋于平衡 而不再那么容易。
When choosing a technology set to focus your career on, you should understand the effects of increased supply and lower prices on your career prospects.
当选择专注于哪种技术的时候,你要仔细考虑供给增长和价格下降职业前景带来影 当选择专注于哪种技术的时候,你要仔细考虑供给增长和价格下降职业前景带来影响。
The most important lesson we can learn from the supply and demand model is that with increased demand comes increased price competition.
从供需模型,我们能学到的最重要一课就是需求的增长必然导致价格的竞争。
To compete in the mainstream technology market, you’ll have to compete at a higher tier. Alternatively, you could exploit market imbalances—going where the offshore companies won’t go. In either case, it pays to understand the forces at work and to be skilled and nimble enough to react to them.
为了能够在主流技术市场具有竞争力,你不得不面临更高层面的竞争。要不,你可以寻找市场的不平衡点,找到别人暂时还无能为力的工作(Chad书中主要讲外包公司)。这两种情况,你都必须花力气来提高自己的技能和灵敏度。
>> Coding don't cut it anymore
只会编程是不够的
It’s not enough to think about what technologies you’re going to invest in. After all, the technology part is a commodity, right? You’re not going to be able to sit back and simply master a programming language or an operating system, letting the businesspeople take care of the business stuff. If all they needed was a code robot, it would be easy to hire someone in another country to do that kind of work. If you want to stay relevant, you’re going to have to dive into the domain of the business you’re in.
只思考在哪种技术上投资是不够的。毕竟,技术只是一种商品。你不可能袖手旁观,只掌握一种编程语言,或者只能够操作某种系统,然后把生意上的事让商人们打理。如果他们只想找个懂代码的机器人,那不如雇个外国廉价的程序员。如果你想站稳脚跟,必须要深入了解你所处的领域。
You might be “just a programmer,” but being able to speak to your business clients in the language of their business domain is a critical skill. Imagine how much easier life would be if everyone you had to work with really understood how software development works.
或许你只是一个程序员,但是如果你能用客户所处行业的专业语言与他们交流,那这就是一项非常重要的技能。就像如果与你工作的人都真正了解软件开发是怎么回事,你会不会觉得一切都会变得更加得心应手呢?
In light of the importance that you should place on selecting a business domain when rounding out your portfolio, the company and industry you choose to work for
becomes a significant investment on your part. If you haven’t yet given real, intentional thought to which business domains you should be investing in, now is the time. Each passing day is a missed opportunity. Like leaving your savings in a low-yield savings account when higher interest rates are to be had, leaving your
development on the business front in stasis is a bad investment choice.
鉴于行业选择是十分重要的,那么选择在哪个公司、哪个领域工作对你来说也是重要的。如果你还没有仔细考虑过这个问题,那现在开始思考吧。机遇每天都在流 逝。就像利息马上就涨了,但你却把钱存在了一个低利率的死期账户里。把自身的发展限制在一个静止不前的行业里,可不是什么好的投资选择。
>> Be the worst
成为最差的一人。
The people around you affect your own performance. Choose your crowd wisely.
你周围的人影响到你的绩效。明智地选择你的圈子。
Find a “be the worst” situation for yourself. You may not have the luxury of immediately switching teams or companies just because you want to work with better people. Instead, find a volunteer project on which you can work with other developers who will make you better via osmosis. Check for developer group meetings
in your city, and attend thosemeetings. Developers are often looking for spare-time projects on which to practice new techniques and hone their skills.
If you don’t have an active developer community nearby, use the Internet. Pick an open source project that you admire and whose developers appear to be at that “next level” you’re looking to reach. Go through the project’s to-do list or mailing list archives, pick a feature or a major bug fix, and code away! Emulate the
style of the project’s surrounding code. Turn it into a game. Make your design and code so indistinguishable from the rest of the project that even the original developers eventuallywon’t remember who wrote it. Then,when you’re satisfied with your work, submit it as a patch. If it’s good, it will be accepted into the project. Start over, and do it again. If you’ve made decisions that the project’s developers disagree with, either incorporate their feedback and resubmit or take note of the changes they make. On your next patch, try to get it in with less rework. Eventually, you’ll find yourself to be a trusted member of the project team. You’ll be amazed at what you can learn from a remote set of senior
找一个能让自己成为“最差”的地方呆着。比自己强的人在一起,耳濡目染,自己也能够提高。公司当然不会为了你想跟牛人呆在一起而给你这种机会。
有时候可能参与一些开发社区的聚会。开发者们经常会在业余时间做一些项目,以学习新技术和磨练手艺。
也可以申请加入一些你所欣赏的高水平Open Source项目,如果能够成功加入并成为其中可以信赖的一员。那么你会惊喜地发现,尽管没有机会听到他们的声音,却拥有了像远在他方的资深开发者们学习的机会。
>> Invest your intelligence
智力投资
TIOBE Software利用网络搜索引擎,根据全球范围内有经验的工程师、课和第三方 供应商对程序 设计语言的实际使用率,将编做出排。这种统计方式虽然不是很科学,但还是具有借鉴意义。
Chad在书中提到了招聘经历,当他们很难找到优秀的人才的时候,Chad建议在网络上搜索Smalltalk,因为在印度懂Smalltalk的人很少,那么他们大多是真正热爱编程的优秀人才。
Unfortunately, our ability to attract these developers for the salaries we were able to pay was limited. They were calling the shots, and most of them chose to stay where they were or to keep looking for a new job. Though we failed to recruit many of them, we learned a valuable recruiting lesson: we were more likely to extend offers to candidates with diverse (and even unorthodox) experience than to those whose experiences were homogenous. My explanation is that either good people seek out diversity, because they love to learn new things, or being forced into alien experiences and environments created more mature,well-rounded software developers. I suspect it’s a little of both, but regardless of why it works, we learned that it works. I still use this technique when looking for developers.
由于他们很优秀 ,所以有资格提出条件。可惜我们给的薪酬限不足吸引他们,大都数人选择留在原来的公司或者继续寻找工作。尽管没能住他们,但我学到了宝贵的招聘经验:比起那些单一候选人,我们更倾向于具有丰富经验的候选人。我认为优秀的程序员之所以寻找变化和多样性的工作,是因为他们喜欢学习新东西,或者因为他们很清楚想要成为更为成熟和全面的程序员,就必须学习新技术,在新的环境下工作,获得新的经验。我认为这两方面都奏效。现在我依然使用这个技巧来招聘程序员。
For me, as a hiring manager, the first reason is that it shows that you’re interested. If I know you learned something for the sake of self development and (better) pure fun, I know you are excited and motivated about your profession. It drives me crazy to ask people whether
they’ve seen or used certain not-quite-mainstreamtechnologies only to hear, “I haven’t been given the opportunity to work on that” in return。Given the opportunity? Neither was I! I took the opportunity to learn.
作为招聘经理,我认为首要的因素就是你是否对这一行感兴趣。如果我知道你为了自身的发展,或更好的是,纯粹是为了让自己很爽,那么我就知道你对自己的职业满怀激情,并富有动力。当我们面试者他们是否学过某这非主流技术时,如果有人回答“没有人给我机会使用”,我会发“hong”(疯)的。机会?谁给过我啊!
(看到这里,我想起了某期程序员杂志谈到主动性,某小子说没事可干,干的活儿没有挑战,其实他完全可以对现有系统做一些重构或者之类的事情,怎么会没事干的呢?)
最后Chad建议学习一种新的语言,一种足以让你的思维方式改变的语言。如果你一直在做面向对象开发的话,那么可以尝试Haskell或者Scheme之类的函数时语言,对我来说,他可能是Scala。
>> Don't listen to your parents
不要听从父母。父母总不希望儿女去冒险,所以他们并不期望儿女能够有多棒的职业,而他们的建议也常常包含着各种担心,生怕你失败。
In the end, just as Indiana Jones could never turn down the opportunity to search for the Holy Grail, I could no less turn down the chance to work for myself on something I truly love, no matter how safe the alternative might be. When I’m old and dying, I plan to look back on my life and say, “Wow, that was an adventure,” not “Wow, I sure felt safe.”
Tom Preston-Werner is cofounder of GitHub.
在最后,正如Indiana Jones永不会放弃寻找Holy Grail,我也不会放弃为我所热爱的事业,无论其他选择多么稳妥。等我变老,在即将离去时,回首人生,我想说:“Wow, that was an adventure,” 而不是 “Wow, I sure felt safe.”
- Tom Preston-Werner Co-founder of GitHub
>> Be a generalist
成为通才
If your goal is to be the last person standing amid rounds of layoffs and the shipment of jobs overseas, you better make yourself generally
useful. If you’re afraid that your once-crowded development officewill become home to an onshore skeleton crew, it would serve you well to
realize that when the team has only a few slots, a “just-a-tester” or “just-a-coder” is not going to be in demand. Better, if you just want
to stand out and be remarkable, wrapping your head around The Big Picture is where it’s at.
如果你想在这个行业站稳脚跟,那我建议你要成为通才。如果你害怕你的部门裁员,那你就该知道精简团队的时候,一个只会测试或者只会编码的人肯定会被裁掉的。如果你就是单纯地想要卓越,那更好,你要动动脑筋掌握大局。
>> Be a specialist
成为专家
So, what should a specialist be in the software field? I can tell you what I was searching for in every nook and cranny on that recruiting trip. I was searching for people who deeply understood the Java programming and deployment environment. I wanted folks who could say “been there, done that” in 80 percent of the situations we might encounter and whose depth of knowledge could make the remaining 20 percent more livable. I wanted someone who, when dealing with high-level abstractions, would understand the low-level details of what went into the implementation of those abstractions. I wanted someone who could solve any deployment issue we might encounter or would at least know who to call for help if they couldn’t.
那么,在软件领域什么样的人能称得上是专家呢?我可以告诉你什么样的人,是我在招聘的时候找遍了每一个角落所要寻找的。我要寻找真正深刻了解Java编程和部署环境的人。我想要寻找的人是已经处理过我们工作中可能遇到的80%的问题,并且拥有足够的知识来应付另外还未出现的20%的问题。我需要的人是不仅可以处理高水平的抽象,同时应该了解 那些实现高端抽象的低端细节。我需要那些可以解决部署问题的人,或者如果他们解决不了,至少应该知道找谁来帮忙的人。
(1)Do you use a programming language that compiles and runs on a virtual machine? If so, take some time to learn about the internals of how your VM works.
(2)Find an opportunity—at work or outside—to teach a class on some aspect of a technology that you would like to develop some
depth in.
(1) 你是否使用在虚拟机上编译并执行的编程语言?如果是,那么花点时间学习虚拟机内部是如何工作的。
(2) 在工作中或者工作外寻找一个教课的机会。>> Don’t Put All Your Eggs in Someone Else’s Basket
不要把你所有的鸡蛋放在别人的篮子里。
While managing an application development group, I once asked one of my employees, “What do you want to do with your career?What do you want to be?” I was terribly disappointed by his answer: “I want to be a J2EE architect.” I asked why not a “MicrosoftWord designer” or a “RealPlayer installer?”
This guy wanted to build his career around a specific technology created by a specific company of which he was not an employee. What if the company goes out of business? What if it let its now-sexy technology become obsolete? Why would you want to trust a technology company with your career?
在负责管理一个应用程序开发团队时,我曾问过我的雇员:"你的职业规划是什么?你将来想要成为什么样的人?"他说:"我想成为一名J2EE架构师。"这个答案让我十分失望。我问他为什么不是一名"微软Word设计师"或者是一名"RealPlayer安装者"。
这个人想要把自己的职业道路建立在一门特定的技术上,这门技术是由一家特定的公司创造,而他自己又不是这家公司的雇员。这家公司要是倒闭了呢?如果这家公司现在热门的技术有一天过时了呢?为什么要把自己的职业发展完全依赖于一家技术公司呢?
So, although a single-minded investment in one particular technology is almost always a bad idea, if you must do so, consider focusing on an open source option, as opposed to a commercial one. Even if you can’t or don’t want to make the case for using the open source solution in your workplace, use the open source option as the platform from which you can take a deep dive into a technology.
因此,尽管一门心思地投资在某种特定技术上并不明智,但是如果你必须这么做,那么考虑一下开源,而不是商业性质的。即使你不想或者不能在工作中利用开源方法,那就把开源作为一个平台,使自己可以对一项技术进行深入学习。
Try a small project, twice. Try it once in your home base technology and then once, as idiomatically as possible, in a competing technology.
试着做一个小项目,做两次。第一次尝试使用在家里就能使用的技术;第二次,使用你最惯用的具有竞争力的技术。
>> Love it or leave it.
要么热爱它,否则就离开它
If you think about the biographies you read or the documentaries you watch about the greats in various fields, this same pattern of addictive, passionate behavior surfaces.
想想你读过的人物传记或者看过的那些关于伟人的纪录片,虽然这些人都身处不同的领域,但是他们都有一个共同点--痴迷,热情。
Of course, natural talent plays a big role in ability. We can’t all be Mozart or Coltrane. But, we can all take a big step away from mediocrity by finding work we are passionate about.
当然,在工作能力上,天赋占了很大的比例。不是每个人都能成为莫扎特或者Coltrane。但是,我们大可以通过找到自己热爱的工作来摆脱平庸。
It might be a technology or business domain that gets you excited. Or, on the other hand, it might be a specific technology or business domain that drags you down. Or a type of organization. Maybe you’re meant for small teams or big teams. Or rigid processes. Or agile processes. Whatever the mix, take some time to find yours.
You can fake it for a while, but a lack of passion will catch up with you and your work.
一门技术或者一个商业领域可能会使你感到兴奋,也可能拖累了你。也许你注定要呆在一个小团队或者大团队;或呆板的流程;或灵活的流程。不管是什么原因,花点时间想想自己到底适合什么。
短时间内你可能可以伪装,但是缺少热情,总会影响你自己和你的工作。
----------------------------------------------------------------
Piaoger:
Chad从市场选择的角度,分析了如何选择正确的技术方向,富有激情,敢于冒险,干着自己喜欢的事情,最终成为又红又专的技术“砖家”。
-----------------------------------------------------------------