【编者按】在程序员群体中,有关35岁危机的讨论几乎从未暂停。大龄程序员似乎是一个特别的存在,其实在CSDN平台,有不少40、50岁依然在写代码、写博客的程序员,例如《一个老程序员的计算机视觉蹒跚学习之路》的作者LaoYuanPython今年已经51岁了。而本文作者则跟LaoYuanPython一样,早期也是一名C++程序员,可在担任管理职务后,每天打交道的只有PPT跟Excel了,而编程技术慢慢就落下了……
有人曾告诉我:“到了35岁,如果你还是一名程序员,就要开始为自己下半生的职业发展寻找其他出路了。长江后浪推前浪,很快你就会被年轻一代淘汰。”
CSDN付费下载自视觉中国
于是,在35岁时,我也开始反思自己的事业。然而,我的情况有所不同。当时我并不是程序员,而是在做管理。尽管当时的我十分怀念早期做C++程序员的时光。
在我的职业生涯的早期,曾有过短暂的几年从事C++开发的经历。然而,在开始担任管理职务后,我的编程技术就慢慢落下了。我的日常工作就是开会,做PPT和Excel表格,当然还有很多电子邮件。我常常几周甚至几个月都看不到代码,更不用说写代码了。
39岁时,我移民了。在新的国度,我的管理技能无法再发挥作用。这里的公司更喜欢有当地经验的人担任管理职务。
我的职业生涯面临着变迁,我可以选择从事其他不需要技术力的临时工作。但我非常喜欢编程。我想重新回到出发点。所以,我尝试了几个C++面试。
很尴尬的是,我甚至未能通过初步的编程测试,我感到非常沮丧。
我不确定自己是否还想回去做C++编程。C++相关的工作面向的是嵌入式软件开发,而且还涉及硬件,不是我感兴趣的主流软件开发。
既然不再热衷于C++开发,那么今后我该做些什么呢?
当时,移动开发非常流行,尤其是iOS。但要学习iOS,首先需要一台MacBook和iPhone。这两样设备我都没有。在没有下定决心之前,我不想浪费如此大的一笔投资。
当时,我有一台Windows笔记本电脑和一部三星S2手机。我看到了Android开发的增长趋势。虽然在当时Android的使用并非最流行,但使用安卓手机的人越来越多,包括我自己。
于是,我选择了Android,并明确了自己的方向。
接下来,我需要获取相关资源:
感谢Google,开发工具包Android Studio是免费的!而且注册Google应用商店只需要25美元!
我买了几本书,由于Android 的开发技术在当时还很新,因此实质性的内容很少。
最后,我从网上找到了很多学习资源和代码参考。此外,我还通过订阅邮件获取了一些最新的信息。我发现,如今学习新技术比过去更容易了,任何人都可以获取最新的资料!
下一步是什么?当然是开始动手编程!
我开发了一些小应用,并发布到了应用商店。在这个过程中,我尝试了端到端的开发体验,即从设计、开发、测试到公开发布。
了解自己想学什么,然后去学!
虽然我可以自学,但我知道如果想加快学习的速度,最佳方式就是与其他 Android 开发人员一起工作。我希望加入一家从事 Android 开发的公司。
我通过自己发布的应用,获得了一家移动开发公司的面试机会。这确实是一个千载难逢的机会。
我知道自己的技术力还达不到高级开发人员,所以我会接受任何职位,只要能得到工作和学习的机会。我愿意从事初级开发的工作,因为我可以获得充足的学习机会。
不幸的是,我在最后一轮面试中失利了,深受打击。
那么,之后我做了什么呢?我发了一封电子邮件,感谢公司提供的面试机会。
此外,我还恳求他们是否愿意考虑让我作为实习生加入公司。我告诉他们,我甚至愿意无偿工作,只要有机会学习提高自己的技术能力。
最后,他们终于答应了,只不过不是实习生的岗位,而是一个移动应用QA测试的职位。
我非常高兴!虽然不能从事写代码的工作,但我可以测试代码,我可以与专家交流并向他们学习。作为奖励,我的测试工作还有报酬,总好过无薪实习。
环境是最佳学习动力。
进入一家移动开发公司工作,成为 Android 开发人员的目标已实现了一半。为了实现剩下的一半,我必须提高自己的开发技术,做好准备,在机会出现时牢牢抓住。
不幸的是,作为QA测试人员,每天我都需要工作8个小时,因此感觉自己的时间有点不够用。我非常羡慕公司里的开发人员,因为他们能够一边工作一边学习,但我就没有这么奢侈的待遇了。
尽管如此,加入移动开发公司本身就拥有很大的优势。我可以访问公司的学习资源,这可以帮助我探索自己的学习方向,我很感激。
最重要的是,我认识了该领域的一些专家。其中很多人都比我年轻。但年龄不是问题,重要的是他们在这个领域的经验。我非常羡慕他们的技术和知识,也很感谢他们愿意与我分享。
在工作时间之外自学编程非常不容易,但我感到很充实。学习一点一滴的知识,朝着正确的方向慢慢前进。我的目标就是成为一名安卓开发。
在这个阶段,我需要的是不断地展示自己的学习成果,同时兢兢业业地履行QA的职责。我会定期向 Android 开发组长展示我取得的成果,并在有 Android 开发人员职位空缺时考察我是否做好了准备。
6个月后,我转到了开发岗位,正式成为了一名 Android 开发!虽然只是一名初级开发,但毕竟是开发人员!
实际工作是最好的学习方式。
在正式成为Android开发时,我已经40岁了。但这不是故事的结尾,只是一个开始。
我非常高兴,因为我终于可以在工作时间写代码了。我的工作就是写代码。我可以在工作中学习了。我必须与专家结对编程,并向他们学习。我必须阅读他们的代码,而他们必须审查我的代码。这样,我对Android的理解速度就会更快。
虽然我可以满足于现状,但我深知岁月不饶人,我没有其他人那么多的时间。我需要做的不仅仅是学习。
在技术负责人的鼓励下,我开始写博客。我花了很长一段时间做准备,因为我一直在想,谁愿意读我的文章?我又不是技术专家。如果我写的文章不达标怎么办?如果我写错了,该怎么办?
尽管如此,我发现自己的记忆力已不如往昔,前面学到的知识,过几天就忘了。所以,我的初衷很简单,为自己写博客,其实就是学习笔记。即便没有人阅读也没关系,因为至少我可以通过阅读自己的文章复习学过的知识。
于是,我开始记录下自己的学习成果,尽可能简单地记录,帮助我回忆。每次我都会画图表,并附上了一段示例代码。一切都是为了确保我能轻松回忆起自己学到的知识。
令我惊讶的是,真的有人读这些文章,还有人留言表示感谢。他们极大地鼓励了我继续写博客。更重要的是,有人坦言不同意我的观点。诚然,有时我也会受打击,但这些留言让我意识到眼前的问题还有不同的想法。
有时真的是我错了。有时,虽然我没有错,但我误解了对方的观点。这些都是学习的机会,是成为更好的 Android 开发必然需要经历的阶段。
只要愿意敞开心扉,在分享时,自己也能学习到更多。
经过4年多不懈的努力,我逐渐适应了Android开发。我成长为了一名高级Android开发。除了从事开发的工作,我还需要负责指导其他初级开发人员。
当然我并没有掌握Android的一切,我需要不断了解如何获取和查找信息,并更好地判断对错。Android开发也在不断发展,因此需要学习的东西很多。我很享受。
我可以就此止步,安安稳稳地生活和工作。我热爱我的工作,我喜欢编程。但目前我的影响力非常有限。我问自己,这就是自己接下来10年的生活吗?
所以我决定等待时机,并持续前进。我申请了负责iOS和Android的首席开发人员职位,但我明白自己并不擅长iOS。
知道自己无法胜任的感觉会让我很不舒服,但正是这种不舒服的感觉可以鞭策自己不断学习和扩展知识。所以,我开始花时间学习iOS。
我认为,我对iOS的掌握无法达到Android的水平,但学习iOS可以帮助我开拓看待移动开发的眼界。让我了解Android擅长什么,以及什么地方落后。
无法分辨优点和缺点,表明我们学习的知识还不够。继续努力。
时至今日,距离我第一次涉足Android开发已经过去7年多了,这期间发生了很多变化。
如今的我是一名移动技术主管,负责跨移动团队的协作和架构工作。除了技术之外,我还需要负责部分管理工作。
我又一次面临没有太多时间写代码和学习的状况。但我仍然喜欢我的工作,因为从本质上来看,这依旧是个技术岗位,只是在更高的技术水平。
如果想做出更高级别的技术决策,就必须建立扎实的技术底子。我不能吃老本,必须不断学习,不能重蹈覆辙。
以上就是我的小故事。40岁开始学习软件开发也不算晚。
参考链接:
https://levelup.gitconnected.com/i-started-android-development-at-40-6591c1e8bc38
《新程序员003》正式上市,50余位技术专家共同创作,云原生和数字化的开发者们的一本技术精选图书。内容既有发展趋势及方法论结构,华为、阿里、字节跳动、网易、快手、微软、亚马逊、英特尔、西门子、施耐德等30多家知名公司云原生和数字化一手实战经验!
☞历史上的今天:编程语言Julia公开发布;IBM诞生