需要时刻记住的是任何一门技术的诞生或者存在都是为了解决某一特定问题的,软件开发更是如此。人存在的价值就是解决一切存在或即将存在的问题。
因此作为一名软件开发人员,需要了解以下的事情:
1、解决问题比编写代码更重要,有了解决问题的思路是非常重要的,而编写代码是为了验证实现思路的一个途径。软件开发者的工作不是“写代码”,而是解决业务问题,一味的“采用的新框架”常常不能解决业务问题。
2、软件技术层出不穷,日新月异。不懂,就是不懂,不要装懂。你永远不可能掌握所有的技术,因此你只需要保持开放包容的心态去拥抱这些新技术,因为他们存在的最终目的都是一样的,即为了解决问题而存在,只不过唯一的区别只是在解决问题上那个更好罢了。
3、软件开发不可避免的会存在bug,实际上只要你写代码,就会出现bug。不管你多么高级,不管你多么优秀,不管什么,不管怎么样,你无法写出完美的代码。事实就是这样。但我们大可不必为此纠结,我们唯一可以做的是时刻铭记保护现场的重要性,对于软件开发而言,写注释就是一个很好的保护编码现场的解决方案。随着时间的推移没人能够记住所有的代码,即使是你自己编写的代码。
4、软件不是魔术,软件是人设计的,它的运行过程都是事先设计好的,对于它的运行过程是可以完整跟踪和调节掌握的。软件中只有黑和白之分,没有灰色地带,要么正确要么错误。
5、软件永远不会“完成”,只要有需求软件就永远不会有完成的那一天,然而我们都知道需求是无时无刻不在变化的,唯一不变的只有变化。
6、软件开发是团队作战,没有人能做所有事情。一个有价值的软件不可能是由某一个人写出来了,这都凝聚了无数人的智慧在里面。
7、设计不是外观,而是工作原理。
8、安全是每个人的责任,对于软件系统除了能正确实现软件的应有功能之外,它还应该是足够安全的。
9、feature大小并不能预测开发时间。
10、伟大来自于成千上万的小进步,这很鸡汤,确实是这样,一款软件产品的问世都经过了成千上万次修改和打磨。
11、技术债很讨厌,但不可避免,如果开发者在写代码或架构系统时选择容易而不是好的解决办法,他欠下的技术债迟早有一天是要还的。因此尽量不要背负太多的技术债务,因为出来混迟早是要还的,不是不还只是时间未到而已。
12、软件不会自己运行(软件需要运维),软件并不是开发完之后就完成了,还需要日常运行和维护。相对于开发而言,运维才是花费成本最多的。
13、作为软件开发人员我们与人一起工作,只是有时候写代码而已,所以人际关系是这份工作的重要组成部分。
14、作为软件开发者,我们对自己部署的代码要负责。我们也负有道德上的责任,不要做不道德的事。
15、用户也是人。我们的产品和我们的失败都可能直接影响他们的生活,因此对你行为的后果要三思。
16、人与人并不相同,人们的思维方式也不同,有时候我们认为困难的东西从商业人士角度看来可能很容易。这是我们必须解决而不是逃避的矛盾。
17、对截止时间(deadline)负责。如果在截止时间前完成不了,你必须重新沟通新的截止时间。
18、“别人”写的代码几乎总是无法理解或者写得很差,但并不总是因为代码真的写得不好。有时候这些“别人”就是过去的我们。
19、有时候在不改变代码的情况下也能解决问题。
20、勇于改变需要改变的,接受那些无法改变的,用智慧来分辨其中的差异。
21、学一门新语言是全面发展的开始。所以,当学习使用某一技术时,着眼点应该放在如何运用它来解决问题。
22、做项目不仅需要技术,还需要学会管理,得善用工具、低成本、高效率、高质量的完成任务。
23、过早的优化是一切麻烦的根源。最明智的做法是抑制过早优化的冲动,因为那样做可能遗漏多种有用的编程技术,从而造成代码更难理解和操控并且需要更大的精力进行维护。
24、花时间去提升自己,管理自己、规划自己。除了埋头学习工作,也要抬头看路,也需要停下来静下心思考。
25、不要一味的只知道工作、加班熬夜,你还有生活呢。
26、不高估自己,但是也绝不低估自己,只要敢想就没有做不到的。人生比的是增量而不是存量。
27、需要时刻提醒自己、思考自己:你的顶层设计在哪,底层逻辑是什么,过程的抓手在哪,最终的交付价值是什么,你的优势在哪,有没有形成沉淀和自己的方法论,换了一个人来做结果还是不是一样。
参考博文:
(1) https://blog.csdn.net/fan_xingwang/article/details/73125155
(2) https://blog.csdn.net/qq_35661171/article/details/103520621
(3) https://jingyan.baidu.com/article/0f5fb099f749546d8334ea88.html
(4) https://www.sohu.com/a/412555047_120595234 (写的比较好,值得仔细阅读)