实际上,在我从事自己人生中第一份开发人员的工作之前,我就已经开始写代码了,为朋友们以及朋友们的朋友们搞定网站事宜。我是经历了拨号上网和和听着磁带那个年代长大的——典型的90后,晚餐时间的桌子上,还循环着清新的Prince of Bel-Air主题曲。
我作为开发人员的第一份真正的工作多少有点意外。我本来是作为一位营销人员进入公司的,但在得到这份工作的六个月内,我就重构了公司整个手机app的前端。
真是一次职业经历的奇怪跳跃和学习曲线的巨大跃升,不过,多亏了我平时那些自己学习和准备的东西帮我打开了新的大门。
时光飞逝,半年过去了,我的职业和人生未来还会继续前进,而我作为一名开发人员的反思和思考同样不会停止。
以下25条经验,是基于我的经历和我至今为止从中学到的教训总结出来的,希望对大家有帮助。(以下排名不分先后)
1、在这个行业里,每个人基本上都是自学成才的。
2、对于传统的教育机构来说,科技的发展速度实在是太快了。如果你想快速上手一些东西,你最好自己立刻开始学习,而不是又去教室里听三年的课。传统教育在基础研究中仍然占有一席之地。
3、获得学士学位是踏入职场的一种方式,但并不是唯一的方式。
4、如果你的大脑更注重实际,而不是更偏好理论,而且你无法偿还未来10年的助学贷款,那么你可以在现在的互联网上找到更多的学习资源和指导。
5、要想进入这个行业,你必须永远保持好奇心。你需要不停地问自己这一切是如何运作的,为什么会这样——尤其是当一切终于有了眉目的时候。
6、在很长一段时间内,你可能会觉得自己并没有多少真正的进步——直到你回过头去看自己原来写的旧代码,或者必须向其他人解释一些东西的时候。
7、作为初级开发人员,还是要多写写代码才好。学习编程就像学习写作一样。你写得越多,你就越能发现其中的套路、你的短板之所在以及修正它们的方法。
8、作为行业新手,一开始你会处于一个自大的阶段,认为自己什么都知道。然后随着你写的代码越来越多,你会发现曾经那个膨胀的自我正在逐渐缩小。然后,当你越来越得心应手、经验也越来越足的时候,你甚至有能力引导那些经验不足的同龄人朝正确的方向前进,但你也会让他们稍微“挣扎”一下,因为这是他们学习和创造过程的一部分。
9、漏洞的出现在所难免,发生漏洞是因为知识上的差距。代码在转换成“计算机语言”的时候或多或少总会出点问题,不要慌。当出现漏洞的时候,很可能只是因为“转换过程”中出现了一个小问题。
10、当人们告诉你你在做敏捷开发,但不让你参与对此会产生的直接影响计划阶段时,那一定不是真正的敏捷开发。
11、作为一名开发人员,你在工作时将长期处于一种不断了解但同时又不怎么了解的状态。
12、在可读性方面,格式是决定性因素。代码是一种通信工具,一种以一种人类可读的方式编写的通信工具,而不是只有初学者才能理解的密码名。
13、面向函数编程模式可以使事情变得不那么复杂。面向对象编程模式在作为组织和分类工具方面也颇为有用。这两种模式并不是相互排斥的,而是在必要时是共存的。
14、写代码要稳扎稳打,从长远来看,当前以“最佳实践”为目的的过度取巧可能导致未来有太多的技术短板要补。所有的软件迭代都很快。5个月前的“完美”代码可能会由于需求的变化、依赖关系的升级以及逻辑上的未知漏洞和小问题而变得低效和过时。
15、数据库就是一切。如果过度设计,很有可能会给后端带来不必要的负面影响。
16、当你身处团队中时,工作组织扁平化和自动化会对你的工作效率产生影响。扁平的组织结构意味着你可以更快地在与人沟通协作,而自动化则意味着用于单击、键入和等待事情完成的时间会大大缩短。
17、收拾别人留下的乱七八糟的代码也是一种人生经历,每个人在职业生涯的某个阶段都会碰上这种事。这也是一个从别人的错误中学习的机会,更是一个为软件的未来方向进行摸索的过程。你会不断地清理别人和你过去创造的东西。这是因为代码就像食物一样——如果不及时“使用”它,它就会成为过眼云烟,逐渐毫无用处。
18、学习平衡工作与生活对开发人员来说仍然很重要,因为我们毕竟是人类。不要墨守成规,忽视自己、朋友或家人。照顾好自己,不要让代码控制了你的整个生活。
19、如果你觉得自己快要精疲力尽了,那就停下来,休息一下,哪怕不久之后再回来——但记住,千万不要粗制滥造,要编写出对你更具个人意义的代码。
20、软件是客户和业务之间的接口,作为开发人员,我们是架构起这个借口的力量。
21、如果你觉得自己并没有真正为公司做出贡献,或者你根本不相信自己能为公司做出什么贡献,跳槽也没什么大不了的。你需要为自己的所作所为感到自豪。不管你最终在哪里,你都能挣到一笔可观的收入。
22、不要太在意别人的代码写的怎么样。利用你所拥有的条件,专注于提升自己的技能,在自己擅长的领域里独树一帜。如果没有人邀请你参加面试,那就去创造吧。如果你没有可以写进简历的经验,那就去创造吧。如果你有一个空闲的周末并且正好有一个想法,那就去创造吧。作为开发人员,我们的业务是创建代码。当我们停下来的那一刻,我们就有可能成为管理团队的一员。
23、不要只是学习编程。你的知识领域越广阔,编写项目代码就越容易。这是因为代码的编写过程就是一个把世界、它的规则和运转过程转换成数字表达的过程。试想,你怎么能得心应手地创造自己不理解的东西呢?
24、关于代码,你总会有知识的盲区存在,但是我希望你最好拥有大量的想法,并将它们作为代码创建过程的指导原则,最终你会收获相当多的回报。
25、你需要花一些时间去阅读软件领域的书籍,相信我,这个时间值得花,你可以在阅读中发现许多有深度的想法——比如Robert C. Martin和Martin Fowler的作品,你一定会从中受益良多的。
作为一名开发人员,我现在所处的阶段既有着良莠不齐的代码,也有着有趣的项目解决方案,还有许许多多需要继续完善的架构。
当我开始独当一面、接手更多的自由职业或者合同工作的时候,我作为一名开发人员的经验肯定会更加丰富,人生的轨迹也会有所不同。
这是我到目前为止对自己职业的一点感想,未来当然还会有的,谢谢大家的阅读。
本文译自medium,文章作者Aphinya Dechalert,原文标题25 Lessons I’ve Learned as a Developer。