对广大开发人员来说,思想境界决定人生命运。
作者 | Ann Adaya
译者 | 弯月,责编 | 郭芮
出品 | CSDN(ID:CSDNnews)
以下为译文:
世上的技术千千万,你不可能将所有技术一网打尽。
因此,你需要找到理想的技术栈,找到适合你的技术,然后全力以赴。例如,对于现代Web开发来说,一个很好的组合就是MERN栈:MongoDB、Express、React和Node.js,如果你喜欢JavaScript,那么这就是完美的选择。
还有一个技术栈叫做MEAN。MEAN技术栈的开发人员更喜欢用Angular来代替React。当然,你也可以选择将PHP、MySQL,前端也可以采用基本的HTML和CSS等。此外, Ruby和Ruby on Rails也是面向后端的好技术。
无论你选择哪种技术栈,都要坚持深入掌握这些技术。对开发人员来说,广而不精是大忌。最终,你只会在原地打转,陷入迷茫。
即便没有学位,你仍然可以成为开发人员
我本人就是一名自学成才的开发人员,我通过自己的努力、耐心、毅力和高度专注,在这一领域取得了成功。
不上大学并不意味着这一行的门槛很低。软件开发的工作难度非常大,但回报非常丰厚,你遭遇的小失败不值一提。心之所向,欲之所望,事之所畅。
放弃则将一事无成。书山有路勤为径,只有每天每时每刻一次次地努力才能换来成功。即便感觉自己陷入最深的谷底,你也应该继续坚持,因为胜利的曙光就在眼前。再多一点坚持,一切困难都会化成机遇。
“当一个人面临失败之际,最容易且最合乎逻辑的做法就是放弃。而这也是大多数男人的选择。”
—— 拿破仑·希尔
掌握搜索的艺术
在学习编程的时候,妄想掌握一切是不现实的。即便你不知道所有问题的答案,也没有关系,特别是在刚开始学习编程的时候。重要的是你知道如何寻找答案。
编程就是为了解决问题。如果你不知道如何解决,那么就需要找到一种方法。通过网络搜索或找到知道如何解决问题的人,然后从中学习,这才是最佳的学习途径。
忠告:今天你所遇到的所有编程问题,可能之前的开发人员都已经历过了。不要重新发明轮子,你必须学会使用轮子。
我们永远无法恪守最终期限
无论计划多么完美,预估工时都不是一件易事。对于项目管理,各个公司都有各自的妙招或策略。在我看来,目前最受欢迎的是敏捷。
无论开发过程多么详细,中途总是会遇到困难。无论团队成员多么优秀,从业务分析师到测试人员,最终期限总是无法准时,而且总会拖延。最终期限永远只是一个估计,在大多数情况下,在大公司中,构建应用程序通常都会比最终期限晚几个月,这都很正常。
但是,对于小型项目来说,小型企业主就非常严格。如果你打算开展业余项目,那么常见的问题或要求之一便是:“预计的交付日期是什么时候?”一些商业人士并不关心程序,对他们来说重要的是交付最终结果的截止日期。
因此,在向他们承诺截止日时要格外小心。通常他们都会视之为已知前提,所以你最好留好一定的余量,让你有更多的空间和足够的时间进行一些故障排除和调试。与其让他们失望,不如给他们一个惊喜。一定要设置标准,因为他们也会给你设置标准。
60%的调试,40%的编程
我认为这条建议非常准确。
我大部分的编程时间都花在了调试上。在上一个项目中,我们构建了一款医疗保健的Android移动应用。我们使用了React Native。我是前端开发人员。
假设项目花费了一个月,那么我构建前端大约花费了10天。其余时间,我都在调试各个依赖项、版本控制以及与当前版本不匹配的其他软件包引起的错误。
这是我的第一个Android项目。我花费了数周时间来调试属性,以确保它们适合正确的版本,包括我使用的其他第三方程序。
构建的部分非常有趣,但调试却很有压力。这是工作的一部分,但很费时间。
高级开发人员给我的一个建议是,每当你在同一个问题或错误上连续工作一个小时,那么就应该尝试休息一下。做点其他事情,放松心情,因为有时问题就出在我们自己身上。
不懂装懂
我就干过这种事,时至今日有时还会不懂装懂。有时,我的同事在讨论他们使用过或感兴趣的新技术时,我会一直点头假装自己听懂了。没关系,你不是唯一一个不懂装懂的人。
世上的技术太多了,谁都无法掌握一切。
不要死记硬背,你需要掌握技术背后的原理
我一直自强调学习和掌握开发与编程基础知识的重要性。
首先,你会从教程或其他代码库中复制粘贴代码开始。这没什么不好,只要你理解复制的代码就好,否则就学不到任何东西。
几个月后,你应该能够理解其中的一些内容。你应该熟悉一些语法并了解一些编程原理。慢慢地,你应该尝试自行解决问题。尝试解决问题时,不要复制粘贴代码,而是构建自己的代码块。通过自己的方法、风格和想法来解决问题。
不要在复制粘贴代码阶段花费太多时间。不要害怕解决问题或编写出自己的解决方案。你需要通过反复试验来掌握更多技术,所以请不断尝试,直到你开始理解所有的高难度代码。这是学习技术的最佳途径。学习需要时间,但学习编程需要反复尝试。
文档是救星
将来你会感谢自己。
刚开始时,你会逐步参与几个项目。接下来,在漫漫长路上,你参与的项目越来越多,直到自己都记不清参与了多少个项目。
然后,某天当你做到第11个项目时,突然你的老板问你有关第2个项目的问题。他希望你回头继续处理第2个项目,而且这是当务之急。项目2是在一年前建立的,后来就逐渐被人淡忘了。
但是,你没料到会出现如今这种的情况,因此你没有想过为第2个项目创建文档。当你打开代码库时,很多内容都已经不记得了。你忘记了曾经用过的软件包、版本、要求、选择原因的原因等等。更糟糕是,你的老板希望你能在两周之内完成。
请引以为戒。下次,记得花点时间为构建的每个项目创建文档。文档可以救你一命。
需要学习的技术仍然很多
这点非常重要。
不能因为你已经掌握了几种语言或正在使用的技术栈,就沾沾自喜。别忘了继续学习。我们需要学习的技术还很多。技术日新月异,不要误以为当下掌握的知识在十年后仍然有所帮助。
我们需要不断学习,提升自己,因为Web开发在不断发展。我觉得这就是Web开发最有魅力的地方,我们永远不会错过学习新技术的机会。
机遇往往转瞬即逝。你要时刻做好准备。保留尽可能多的工具,当机遇敲响你的大门时,你已做好万全的准备。
原文:https://medium.com/better-programming/how-to-think-like-a-senior-developer-8ccdf11953c
本文为CSDN翻译文章,转载请注明出处。
【END】
更多精彩推荐
Go 之禅
鹿晗都有 AI 粉了,为什么 AI 换脸剧的效果还这么渣?
☞循环智能杨植麟:“人机耦合”将是对话语义应用的新趋势!
☞曾遭周鸿祎全网封杀的360猛将:草根打工到36岁身家上亿的逆袭!
☞详Kubernetes在边缘计算领域的发展
☞原来疫情发生后,全球加密社区为了抗击冠状病毒做了这么多事情!
☞一文读懂“情感计算”在零售中的应用发展
你点的每个“在看”,我都认真当成了喜欢