8个让程序员追悔莫及的职业建议


译文:《 8个让程序员追悔莫及的职业建议 》     译者: codeceo (码农网)– 小峰
原文:《What I wish I'd known starting out as a programmer :Eight points of career advice for young software developers 》     作者:Andrew C. Oliver

programer
正如老牌Faces乐队的经典老歌《Ooh La La》中的歌词一样“ I wish that I knew what I know now when I was younger”,我常常想,要是我早点知道这些建议就好了。回首往事,刚开始的时候我只是非常单纯地喜欢写代码,也不知道要规划自己的职业生涯以及如何与人相处。我常常懊悔,要是我能早点知道下面这8条简单又实用的技巧,那我能少走很多弯路,避免很多麻烦。

1.注重交际。

我以前特别专注于计算机,任何打搅我的人和事我都认为是不速之客。我承认那个时候我的反应有点过头,因为还是有很多值得认识的业界知名人士和值得相交的朋友,但是我却没有好好保存他们的名片。我从不刻意记他们的名字,也不与他们联系。如果需要找工作的时候,我只会去用户组看看。
我发现对于一些年轻的开发人员而言,找工作似乎是小菜一碟。但我不然——有很多时候,他们总是对我说,你是个开发人员,知道点基本的语法和如何搜索(我刚刚进入这一领域的时候,还没有谷歌),想要立即被聘用是远远不够的。甚至有的时候,实在没办法了,我只能没完没了地发邮件给猎头。这种类似的情况以前时有发生,我有心无力。
还有一些比我更有技能的开发人员却总是难以找到自己属意的工作、也总是失败,因为他们从来不曾“出类拔萃、鹤立鸡群”。他们从来没有在正确的时刻会晤正确的人。的确,时机和运气都不错,但是就是没有抓住机遇。即便你第9次参加聚会,还是没有人与你交谈,那你还是应该继续精神抖擞哪怕是当花瓶,也要为第10次聚会好好准备,也许下一次就遇到你的伯乐和钟子期呢。
此外,还要和同伴打好关系。虽然现在的你们还只有20多岁,没啥话语权,但是5到10年以后,一切将发生翻天覆地的变化,也许某个你一直忽略的家伙突然一鸣惊人了。如果你仅仅因为他们无趣而无视他们,那么以后他们手中掌握的重要机会也会无视你。

2. 解决问题。

现在的我,对此已经习以为常,毫不感冒了,当然以前可没有这么淡定,解决问题对我来说不亚于是一场灾难。关键在于不要深陷于任何推测而不可自拔。可以选择几个推论然后去证明它们是错的,也不要做选一个然后绞尽脑汁去证明这是对的这种傻事。尽可能选择替代理论。假如出现端口冲突,那么有可能是连接到错误的网络设备或者未分配的IP地址。这种情况的异常不是真正的错误。
解决问题的本质就是运用学会的知识和以前积累的经验,竭尽所能地去解决种种未知的事物。

3.根据市场和职业目标选择编程语言和技术专长。

做我所爱,爱我所做,这样我们才会心甘情愿地奉献自己的精力,系荣辱于其一身,不是吗?当然,也不能忽视现实原因。那就是软件开发这一行发展潜力很大,能让我们挣很多钱。
不管基于什么样的考虑,我们选择了这一行业,这就是事实。并且,有分析指出,这个市场未来几十年还将膨胀数倍,需要大量的从业人员。有大量的公司将如雨后春笋一个个冒出来,但是让我很疑惑的是,开发人员的就业机遇并没有出现井喷。向大家展示自己的激情和活力,与时俱进,不可故步自封、自满自足。科技世界的变化是如此之快,你最喜欢的技术搞不好今天还广受欢迎,明天就成为昨日黄花了。

4.软件其实很少有真正的创新。

很多从业5年的开发人员都亲眼目睹过,几乎所有的厂商都曾重新命名软件后,又当做新产品再次推出去。而那些有着10年工作经验的开发人员,对这种情况已经习以为常了。当你和一些老开发人员开会时,你会发现他们对于新产品总是兴趣缺缺、不以为然。后来你会知道,虽然这些所谓的新产品也有一些创新,但是通常都是早先技术的结合。举个例子,Hadoop现在很火,但是你可知道,HDFS是一个分布式文件系统,而分布式文件系统已经存在了几十年了。

5.从职业角度出发,而不要着眼于眼前的工作而因小失大。

一开始我跳槽的原因显得有点可笑:不喜欢在一个小隔间工作、额外每小时多5美元等等。然后在下一个工作中又成为了我跳槽的原因,循环往复,惶惶而不可终日。“能否对我的职业生涯有所帮助?” 这才是我们工作最需要考虑的原因。有时候,这样一份工作意味着更多的责任和机会。可能我还是会去大公司工作——但是不久之后会辞职。因为在一家IT大公司我们是很难从内部展示自己的能力,而且机会非常有限。

6.一周工作超过40小时。

如果你觉得这是在建议你做一个工作狂,不顾忌身体死命工作,那你就错了。我的意思是我们应该将时间投资到事业上。如果你觉得你只能在老板不注意的时候偷偷学习,那么你的机会总是有限的——你的老板是不会专门训练你让你有更多的机遇的。

7.编程并不难,但是我们自己会把它搞复杂,变难。

我不赞同Joseph Gentle的话。自从人们将软件这一行从硬件中脱离出来,软件开发却仍然被我们弄的乱七八糟。想要编程其实只需要阅读书籍、集中注意力、拥有逻辑思维能力即可。而且现在有很多书籍、课程和模型会告诉我们如何走完整个编程流程。但是,要是碰到合作项目,那编程就会变复杂了。

8. 学会沟通。

如果你无法用英语(或其他大家可接受的语言)正确书写,那就需要去进修一门写作课。如果你觉得实在没法克服自己的怯场顺利做演讲,那就应该去接受专门的课程。可以自己站在镜子前面练习,也参加一些聚会,逐步学习。这和会写代码一样重要。

下面谈谈你的看法:如果你是有着至少5年经验的从业人员,你希望自己一开始就能明白什么事情?如果你是个新手,那么哪条建议对你有用?欢迎畅所欲言。


As the old Faces song "Ooh La La" goes, I wish that I knew what I know now when I was younger. Back then, I simply loved to code and could have cared less about my "career" or about playing well with others. I could have saved myself a ton of trouble if I'd just followed a few simple practices.

1. Take names. I was really focused on computers early in my career and considered people to be minor annoyances who kept me from being one with my beloved machine. OK, I'm exaggerating a little. Despite meeting many industry luminaries and people that would have been worthwhile to befriend, I didn't keep any business cards. I didn't bother to remember their names and never checked in on them. I only went to user groups (there wasn't meetup.com when I started and it wasn't a big thing for a while after) when I needed a job.
I realize the concept of needing a job seems a little quaint to some of you younger developers. But take it from me -- there've been times when merely saying you're a developer and knowing basic syntax and how to search (there was no Google when I started) was not enough to find immediate employment. There was a time when developers actually called headhunters versus being spammed by them endlessly. This will happen again, eventually.
More important, a lot of developers who were more skilled than I am have had far less interesting careers and less success because they never put themselves out there. They never met the right people at the right moments. Hey, timing and luck are great, but you also make your own opportunities. The first nine times you go to a large gathering and no one speaks to you and you're left with all the perks of being a wallflower are practice for the 10th time when you meet someone interesting.
Also, take note of your peers. If you're an early 20-something, chances are you have no real power or influence, and neither do your peers. In five to 10 years, that will all be different and the person who you ignored because they were boring and couldn't help you will be the person who could have won you an important opportunity.

2. Problem solving. Luckily, this came pretty naturally to me after a while, but early on it was a struggle. The trick is tonever fall in love with any one theory of the problem. Pick three theories and go about proving them wrong rather than trying to prove yourself right. Also, gravitate toward alternative theories. If something says there is a port conflict and you can't find any port conflict, then maybe you're connecting to the wrong network device or an unassigned IP address, and the error is bogus.
Problem solving is essentially the same thing you learned in abstract in seventh or eighth grade or whenever you learned simple algebra. Remove all of the variables that you can, then solve for x.

3. Pick your language or other technical specialties based on the market and your career goals. Sure, you want to do what you love, but really is Scala (insert other language name here) your real love in life, to the point where you are willing to tie your success or failure to it? A better reason would be that it is a smaller talent pool and you might be able to make more money doing it and you know that the finance and scientific community near you is big enough and using it avidly. (It also might be you want to work for Typesafe.)
Either way, pick rationally rather than based on some weird zeal for a syntax. Hadoop is wicked cool, that's a fact. However, analysts are predicting the market will grow several times in the next couple of years, and there is a huge uptake. Companies are building out major infrastructure in a way I haven't seen since the '90s. I think PaaS is awesome, but I do not see tons of business opportunity for developers here. Publicly show passion and enthusiasm, but privately make this a cold, hard calculus and business decision. Your favorite technology will be dead probably before the end of your career anyhow.

4. There is relatively little real innovation in the software side of the industry compared to popular perception. Most of us who have done this for more than five years have already watched all the vendors rename everything and sell it as new at least once. Anyone working for more than 10 years has seen it a few times. When you go into a meeting with a bunch of old people, realize that they roll their eyes at many of the things you think are new. There are some innovations, but those are usually combinations of previous technologies. While Hadoop may be hot, HDFS is a distributed filesystem and distributed filesystems have existed for decades.

5. Think in terms of a career, not a series of jobs. When I started I job-hopped for relatively dumb reasons: I didn't like that I was put in a cubicle, I could get an extra $5 per hour, and so on. This would come back to haunt me during the dot-bomb. At the same time, I usually failed to pick jobs for the best reason: What will help me progress in my career? Sometimes that means taking a job for less money but more responsibility or better opportunities. I probably still have put in my time at big companies -- then quit working for them sooner. It's relatively hard to make an impact from the inside of IT in a big company and opportunities are frequently limited.

6. Work more than 40 hours per week. I don't mean you should work in a sweatshop or run yourself to death, but make a personal investment in your career. If the only time you learn something is on your boss's dime, then prepare to have your options limited -- your boss isn't going to train you to make sure you have options.


7. Programming is not hard unless you make it hard. I disagree with Joseph Gentle. People are still messing up software development in the same dumb ways since software separated from hardware. Programming simply requires reading, concentration, and logic. Luckily, plenty of books, courses, and patterns can tell you how to do all of that (see No. 6). Coordination with other people on any scale? That's hard.

8. For Zod's sake, learn to communicate. If you are unable to write properly in English (or the appropriate language for your community), take a writing course. If you are unable to give a talk, get over your stage fright, take a course, practice in front of a mirror, and/or attend some meetups and learn. This is probably as important as writing code.

Now it's your turn. If you're more than five years in, what do you wish you'd known at the start? If you're less than five years in, what advice have you found helpful?

This story, "What I wish I'd known starting out as a programmer" was originally published by InfoWorld.


码农网:[ 转载必须在正文中标注并保留原文链接、译文链接和译者等信息。]

猜你喜欢

转载自blog.csdn.net/BonJean/article/details/40021277