获得编程经验的三种方法

 

作者: Justin James
翻译:PurpleEndurer,2009-09-03 第1版

  Justin James向因缺少经验而找不到工作的读者们提供的建议。来看看这些获得编程经验的提议罢——有时甚至不需要在该领域的工作。

  一位TechRepublic成员陷入了鸡生蛋、蛋生鸡的困境,有太多的入门级IT程序员发现自己处于这样的困境中:企业不喜欢雇用没有经验的人,并且很多企业都不愿意开展培训。如果这么多的公司不敞开大门雇用没有经验的人,这些人又如何积累经验?不幸的是,这种情况是许多IT专业人士的重大问题。

 

  我在与此成员的长期反复讨论中,给他提出了促进职业高速发展的三种方法,如下:

 

#1 为自由软件(或接近的)工作

 

  尽管企业界未必急于聘用具有很少经验或根本没有经验的人员,非营利界经常乐于(或至少愿意)接受很少或根本没有经验的志愿者。我作程序员的开端,是高中时在当地一个成年残疾人之家当志愿者。我用Excel电子表格来管理他们的财务工作,管理他们的网站,等等。这个工作有吸引力吗?哎,没有。我是用空闲的下午和周末来工作的。唯一的好处是,那个地方拥有一个储藏室,我可以随时需要随时取。除了因为做一些对社会有益的事而让感情上满足外,它给了我可以写入履历的经验,给了我一个推荐函。一些非营利机构有可能支付你一小笔钱。

 

  存在大量需要帮手的开源项目。或者,你可捡取一个“被搁置的”的开源项目并接手。开源工作,是值得在履历中大书特书的。

 

  如果你在当地找不到的慈善或非营利机构(团体),也可以为家庭工作。也许某个作生意的亲戚需要一些程序员来工作。你可以提议免费做,而且我敢打赌,你会发现,吉米舅舅或贝蒂姑姑会很高兴团队中有你。

 

#2、勤劳如犬

 

  如果你想进步,你将不得不勤劳;我没遇到哪个开发人员是不劳而获的。我想一些开发人员比较走运,也许刚毕业就被亲戚聘用,收入可观。并且一些其他开发人员设法获得了实习生身份,进而得到其它好的机会。但对广大正在学校或刚刚走出大学的人员而言,凸显自己并获得工作经验的唯一途径是,工作,工作。要坚持一段时间。

 

  你的老板可能不想让你花大量时间写代码而是让你打理服务台。如此一来,如果你想把服务台工作变成软件开发经验,你将要榨出时间。通过午休代码?对。下班后工作?对。在家规划和开发?对。

 

  我知道,我懂……无偿工作,并且超出预期地工作听起不是像是有什么乐趣。可能更糟糕。看看医生们在高级专科住院实习期是如何做的(更不要说他们的薪酬了)?把这个阶段设想为你的实习期好了。你会数月或数年啃馒头来获得一些经验,而你的下一个工作,尽管它可能不会变得容易些(但也未必),但报酬会更可观。

 

  获得经验和获得报酬的办法是有的,诀窍就是偷偷走工作的“后门”。举例来说,我现在是做网络管理和监控工作,在这之前我成为专业程序员已经有一些年头了,我知道我想要做回程序员。但事实上,我的经验多数为Perl(在这点上几乎死定了),并且有几年没编程了,我知道自己在应聘前需要补充新的经验。那么,我怎么办呢?我开始用空闲时间编写应用程序来帮助我的部门,有时我甚至会在上班时间写代码——所有这一切都是为了获得可以写入个人简历中的经验和一个推荐函。

 

  可能你得不到软件开发工作,但你可以获得一个工作,如桌面技术员,或在服务台。从那里,你可以开始展现您的编程序能力,并且建立良好的简历,离开或晋升。事实上,在服务台工作或作为桌面技术员(或“计算机操作员”),是涉足这个行业,积累经验的最古老的一种方法。

 

#3 在家工作

 

  你可能找不到愿意让你无偿写代码的人。也许你无法适应非编程工作(如同不能得到加班费的钟点工)。家里就是你发挥作用的地方。如果所有其它方法都失败(或补充完善现有能力),你可以在家做一些事情。找到你真心喜欢的应用程序,编写自己的版本。或者,考虑并编写你一直希望拥有的应用程序。

 

  当你在家工作时,试着尽可能模拟专业环境中的软件开发。写项目计划书,创建单元测试,每日构建等等。我保证,你会因此成为更好的程序员,你就会有一些东东展示给雇主看,这实际上是非常重要的。

 

  我从来没有在工作场合把我的劳动成果和展示给潜在雇主。不仅是因为这违反了我的就业合同,而且这往往干扰了我的雇主与客户的合同。但是,当我在家里用自己的时间和资金做的一些东东,反而可以向潜在的雇主展示。例如,我希望能找到一份工作,做更多的Web开发,减少管理员的工作,为此我从我的简历、推荐函等材料中抽取出突出亮点一起放入Flash演示文稿。我甚至把它封装到一个不错的CD盒,并给了一个自动启动装置,使潜在雇主可以只需放放CD光盘。这张CD让我获得了在.com泡沫中间的工作。这是一个真实游戏转换器。

 

  当某人已经多次双方面谈,我可以告诉你,有候选人来并谈论他们自己正在做的工作会令人印象深刻。是否得到已付款,这会在报酬,专业工作方面获得相同级别的考虑?有时。就我而言,在“一个可信赖的开源应用程序做“真正的工作”与付薪工作是同样好的,唯一的可能对你不利的时候,是那个应用程序是可怕的,并且你在面试时拿出来展示。所以,是的,这是另一个“无薪工作”建议,但它往往是你和其他申请同一工作的入门级开发人员们的不同之处。

 

英文出处:​​http://blogs.techrepublic.com.com/programming-and-development/?p=1593&tag=nl.e055​

Three ways to gain programming experience

Date: August 20th, 2009
Author: Justin James
Category:Career Advancement,Programming
Tags:Job,Developer,Experience,Programmer,Programming,Recruitment & Selection,Help Desk,Development Tools,Human Resources,Workforce Management

Justin James offers advice to a reader who needs experience but can’t find work because he has very little on-the-job experience. Check out these recommendations for picking up programming experience — sometimes even without having a job in the field.

—————————————————————————————

A TechRepublic member is trapped in the chicken/egg situation that far too many entry-level IT programmers find themselves in: Businesses do not like to hire people without experience, and many businesses are not willing to train. If so many companies aren’t open to hiring people without experience, how does someone get experience? Unfortunately, this scenario is a major issue for many IT pros.

 

In my long running, back-and-forth discussion with this member, here are three ways I suggested that he kick his career into high gear.

 

#1: Work for free (or close to it)

 

While the corporate world may not always be eager to hire people with little or no experience, the non-profit world is often delighted (or at least willing) to take volunteers with little or no experience. I got my start as a programmer in high school by volunteering for a local home for developmentally disabled adults. I worked on Excel spreadsheets to manage their finances, I put together a Web site for them, and so on. Was it glamorous? Heck, no. I was working for free on my afternoons and weekends. The only perk was that the place had a stocked pantry that I could hit whenever I wanted. Aside from the emotional satisfaction of doing something positive for the community, it gave me experience that I could put on a resume, and it gave me a reference. Some non-profits will be able to pay you a small amount of money.

And there are plenty of open source projects that can use some help. Or, you could pick up an “abandoned” open source project and revive it. Open source work is a great resume builder.

If you can’t find a local charity or non-profit, maybe you can work for family. Perhaps a relative has a business that needs some programmer work. Offer to do it for free, and I bet that you will find that Uncle Jimmy or Aunt Betty would be delighted to have you on the team.

#2: Work like a dog

 

If you want to get ahead, you’re going to have to hustle; I haven’t met any developers who were handed opportunities on a silver platter. I suppose a few developers got lucky, and maybe a relative hired them at a very nice salary right out of school. And a few other developers managed to get great internships that led to other good opportunities. But for the vast majority of the people currently in college or just out of college, the only way to differentiate yourself and get the experience is to work, work, work. Period.

 

《PurpleEndurer注:1、To be handed something on a silver platter就是别人把什么东西放在银盘子上送给某人。真正的意思就是一个人得到很贵重的东西,但是并不是靠他自己的努力得来的。》

 

Your boss probably won’t let you spend huge amounts of time writing code instead of manning the help desk. So, if you want to turn that help desk job into experience developing software, you’re going to have to make the time. Code through lunch break? Check. Work after hours? Check. Plan and develop at home? Check.

 

I know, I know… working for free and working more than what is expected of you doesn’t sound like much fun. It could be worse, though. Ever look into what doctors do during their residency (not to mention their pay)? Think of this period as your residency. You’re going to bust your buns for a few months or years to get some experience, and your next job, though it may not be any easier (it won’t be), it will likely pay better.

There are ways to get experience and get paid; the trick is to sneak in through the “back door” of employment. For example, I had a job where I was doing network management and monitoring. It had been a few years since I had been a professional programmer, and I knew I wanted to get back to it. But between the fact that most of my experience was in Perl (which was fairly dead by that point), and the years since I had been programming, I knew I needed to freshen my experience before I would be employable. So what did I do? I started writing applications to help my department in my free time; on occasion, I would even write code while not on the clock — all to get some experience under my belt and a reference.

《PurpleEndurer注:under one's belt: 1.[美国英语] [口语] 在以往的经历中,在个人经历中(或记忆中,占有中);学会;记住;成功地取得,(靠努力或凭技巧)获胜:
2. 在肚皮里;吃掉;吸收;装进肚子里(指学问、知识等) 》

Maybe you can’t get a job as a developer, but you might be able to get a job as, say, a desktop technician or in the help desk. From there, you can start flexing your coding muscles and either build up a good resume and leave or get promoted. In fact, working at a help desk or as a desktop technician (or a “computer operator”) is one of the oldest ways of getting your feet wet in this industry.

《PurpleEndurer注:1、jump in and get your feet wet:到实践中去学习取得经验。》

 

#3: Work at home

Maybe you can’t find anyone willing to let you code for free. Perhaps there is no way that you are able to fit programming into your nonprogramming job (such as an hourly worker who can’t get authorization for overtime). That’s where your home comes into play. If all else fails (or to supplement your existing efforts), do some work at home. Find an application you really like and write your own version of it. Or, think of an application you always wish you had and write it.

When you work at home, try to emulate software development in professional environments as much as possible. Write a project plan, create unit tests, set up a nightly build, and so on. I guarantee that you will become a better programmer for it, and you’ll have something to show perspective employers, which is actually quite important.

《PurpleEndurer注:1、nightly build是个软件开发术语,指的是每日构建,就是说每天晚上进行软件的编译测试打包工作》

 

I have never worked somewhere where I could take my labor and show it to potential employers. Not only would it violate my employment contract, but it would often violate my employer’s contracts with their customers. But when I do something at home on my own time and on my own dime, it becomes something I can show to potential employers. For example, I wanted to get a job doing more Web development and less Webmaster work, so I put together a Flash presentation that had highlights from my resume, quotes from my references, and so on. I even packaged it in a nice CD case and gave it an Autorun launcher, so potential employers could just pop the CD in. The CD got me a job in the middle of the dot-com bust in an instant. It was a real game changer.

As someone who has been on both sides of the interview table many times, I can tell you that it’s impressive to have a candidate come in and talk about work they’re doing on their own. Does it get the same level of consideration as paid, professional work? Sometimes. From what I can tell, doing “real work” on a credible open source application is just as good as a paid job; the only time it can hurt you is if the application is awful, and you show it to the interviewer anyway. So, yes, this is another “work without pay” suggestion, but it’s often the only differentiator between you and the two dozen other entry-level developers who apply for the job.