`
caobihole
  • 浏览: 949050 次
文章分类
社区版块
存档分类
最新评论

获得编程经验的三种方法

 
阅读更多

获得编程经验的三种方法

作者: 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.

分享到:
评论

相关推荐

    Java优化编程(第2版)

    8.2.2 三种ejb的特点与适用场合 8.2.3 本地ejb与远程ejb的性能比较 8.2.4 有状态会话ejb与httpsession 8.2.5 ejb 3.0规范中的ejb 8.3 优化无状态会话ejb性能 8.3.1 如何控制无状态会话ejb的生命周期 8.3.2 通过调节...

    Tcl_TK编程权威指南pdf

    你没有必要再去为自己的新应用程序发明一种命令语言,或是费力为自己的工具提供某种用户可编程特性。其实,你可以通过添加一个Tcl解释器,来将自己的应用程序组织成一组操作原语,并使用这些原语来构造最符合用户...

    XML高级编程

    第2章给了我们基本语法概念,第3章告诉我们如何以一种每个XML编程者都能够理解的方式正规地定义XML词汇表。这些章节提供了理解和使用XML所必需的最基本内容。第4章(关于数据建模)在创建良好的XML结构方面为读者...

    XML 高级编程(高清版)

    5.3.2 更复杂的编程实例 5.4 DOM和XML的未来 5.4.1 W3C的工作 5.4.2 应用 5.4.3 数据库、模式和DOM 5.5 小结 第6章 SAX 1.0: XML简易API 6.1 事件驱动接口 6.2 SAX的由来 6.3 SAX的高级特性 6.3.1 可选择...

    论文研究 - CARA偏好估计和正数学编程

    本文的目的是将产出价格风险的估计与正数学规划(PMP)相结合。 它使Freund提出的风险规划与恒定绝对风险规避(CARA)系数的一致估计相一致。... 一个以生产四种农作物的农场为样本的经验例子说明了这种新颖的方法。

    C++入门经典(第三版)

    本书也适合于具备另一种语言编程经验但希望全面掌握C++语言的读者。 内容简介 C++是一种内涵丰富、功能强大的语言,这就是许多专业人士选择它的原因。初学者常常觉得C++比其他语言难懂,这可能是因为它的功能和适用...

    coursera_Golang_UCI:本专业介绍了Google的Go编程语言,并为学习者提供了Go特殊功能的概述。 完成三门课程的学习后,学习者将获得使用Go创建简洁,高效,整洁的应用程序所需的知识和技能。

    本课程是为具有以前使用C,Python或Java等语言的编程经验的人员设计的,涵盖了Go的基本要素。 主题包括数据类型,协议,格式以及结合RFC和JSON的编写代码。 最重要的是,您将有机会练习编写Go程序并获得同行的反馈...

    二十三种设计模式【PDF版】

    如果你有一定的面向对象编程经验,你会发现其中某些设计模式你已经无意识的使用过了;如果你是一个新手,那么从开始就 培养自己良好的编程习惯(让你的的程序使用通用的模式,便于他人理解;让你自己减少重复性的编程工作)...

    C#本质论(第三版)

    C#是一种相当新的编程语言,C#的重要性体现在以下两个方面: ● 它是专门为与Microsoft 的.NET Framework 一起使用而设计的。(.NET Framework 是一个功能非常丰富的平台,可开发、部署和执行分布式应用程序)。 ● 它...

    GTK+2.0+中文教程.pdf

    选择哪一种方法仅仅是个人的喜好问题,因为不管用哪一种方法,你都会得到 C++ 和 GTK。它们都不需要特殊的预处理程序,因此你可以同时使用标准 C++ 和 GTK。 本教程试图尽可能详细地描述 GTK,但是肯定不能面面俱到...

    Android高级编程--源代码

    由于现有的手机应用程序的开发是构建在各手机厂家的私有操作系统之上的,所以它限制了第三方应用程序的开发,而Android为我们提供了一个开放和通用的选择。因为没有了人为制造的障碍,所以Android开发人员可以自由地...

    C大学教程(第五版·中文版).pdf【第三部分】

    本书系统地介绍了四种当今流行的程序设计方法——面向过程、基于对象、面向对象以及泛型编程,内容全面、生动、易懂,作者由浅入深地介绍结构化编程及软件工程的基本概念,从简单的概念到最终完整的语言描述,清晰、...

    CLR.via.C#.(中文第3版)(自制详细书签)Part2

    享有全球盛誉的编程专家Jeffrey Richter,这位与Microsoft .NET开发团队合作长达8年时间的资深顾问,在本书中和读者分享他编程生涯中积累的所有丰富经验和心得,他的独到、睿智的见解,他的远见卓识,为开发人员构建...

    Kotlin Programming By Example 2018

    您将通过构建三种不同复杂程度的应用程序来探索Kotlin的各种功能。为了快速开始Android开发,我们着眼于构建经典游戏“俄罗斯方块”,并在Kotlin中详细阐述面向对象编程。我们的下一个应用程序将是一个Messenger应用...

    c#学习笔记.txt

    有三种使用集合的方法: 使用上述指导创建一个集合。此集合只能用于 C# 程序。 1. 使用上述指导创建一个一般集合,另外实现 IEnumerable 接口。此集合可用于其他语言(如 Visual Basic)。 2. 在集合类中使用一个...

    C语言编程精彩百例(附原书源代码)

     全文共分为四篇,全面、系统地讲述了C语言各个方面的知识点和程序设计的基本方法,以及编写程序过程中值得注意的地方,内容深入浅出,通俗易懂。对于C语言的初学者来说,这是一本绝对好的入门教材,对于有经验的...

    敏捷技能修炼(Essential Skills for the Agile Developer)

     全书共分四个部分:第一部分(1~7章),阐述了在软件开发过程中能起到“四两拨千斤”作用的几种思想方法(“小舵板”),如意图导向编程、分离构造和使用、测试先行和shalloway原则等,并总结了业界常用的几种实践...

Global site tag (gtag.js) - Google Analytics