首页 » 编程知识 » 一位程序员工作10年总结了这些忠告

一位程序员工作10年总结了这些忠告

admin 编程知识 110 次浏览 没有评论
程序员精选俱乐部

资深软件开发人员分享的一些关于专业化编程的经验和教训,这些经验教训都是经过多年历练总结得出的。

如果你刚进入专业的软件开发世界,那么得益于在计算机科学和编程方面的教育和/或培训,你已经具备了一定的知识。但是真正的开发业务工作又和在学校编程不同,这是你不可能从大学课程或编码学校中学会的东西。

为了了解新手程序员需要知道哪些内容,我咨询了一些经验丰富的编码老将,这些“老”将全部有着至少十年(有的甚至是几十年)作为专业软件工程师的工作经验。

一位程序员工作10年总结了这些忠告

1.客户在接触到产品之后,才会真正明白自己的需求。

这是我在我的第一份工作上面学来的。只有当我们给客户展示产品的时候,他们才会意识到哪些是必须的。给出一个功能性原型设计远远比一张长长的文字表格要好。

2.只要有充足的时间,所有安全防御系统都将失败。

安全防御现如今是全世界都在关注的大课题、大挑战。我们必须时时刻刻积极完善它,因为黑客只要有一次成功,就可以彻底打败你。

3.安全防御是否失败取决于及早规划。

假设有黑客会彻底破坏你的防御系统,那你就得提前做好准备。这样即便真的让他们侵入了系统,也盗取不了任何有价值的东西,因为你已经对服务器做了安全设置,比如对数据库中的内容进行了加密,并且对每台有可能遭受攻击的服务器进行了隔离。

记住,再强大的防御都会有它的薄弱之处,关键是要有备无患。

调试器是我们的好朋友

程序员很大一部分时间会涉及追踪bug。一位信息学开发人员,着重强调了调试器的优点以及它是如何减轻了时间的初始成本。 “一定要掌握如何使用调试器!”他告诉我, “磨刀不误砍柴工,事先不妨花个一两天时间进行配置。如果没有得到预期结果,那就调试:设置断点,逐步调试代码,特别要注意第三方代码。这可以避免很多挫折,也能让你更好地了解那些只能通过阅读别人的代码才能知道的编码知识。”

学习编写测试

一些开发人员认为,单元测试,也就是编写测试来验证小单位代码是否在做应该做的事情,是非常关键的,我认为我曾给那些想要学习编程的人提的最佳建议就是,要学习编写良好的测试并且学习在进程早期就开始编写测试。

既要有攻城之力,也要有熬战之气——BUG

产品开发完成后,必然有 bug 。其实开发人员在工作过程中,是有一定的直觉或者心理预判的,即:某个功能模块的质量如何。 这里面的质量包括:可维护性、扩展性、算法渲染效率,还有就是bug与崩溃率。

功能开发完成后,就要开始守城了。

bug,一部分产生是由于架构带来的,例如比较复杂的架构,会导致复杂的实现细节;

但还有很大部分bug,其实是基于如下三个原因产生的:

1 . 对于某个api的不了解,或者对于某个平台,或者 SDK 版本的不了解。 举例而言:android里面非主线程,是不能直接处理UI相关的事情的;JAVA 的内存释放也不是绝对的,相互指向是无法释放的;函数个数是有DEX问题制约的———————这些bug的产生,也是开发人员摸索学习的过程,经历过一次就不会再犯了。这是学习广度与熟练度的问题;

2 . 还有一些bug,是由于粗心大意导致的。例如空指针的问题,野指针的问题。在 C 的开发中,野指针的问题,GDI 句柄的释放问题,这些都是严谨的代码需要避免的; 而又一些工具,或者方法是可以规避这些问题的,例如 android中 的利用@ Nullable 和@ NonNull 加强空指针检测等方法;

作为程序员,当我们编程时,我们会随身携带一个工具箱。

这套工具就是我们的所有技能的一种体现。首先你需要学习的东西(变量、循环等等)就像是螺丝刀和榔头,你会在每天的工作中用到它们。当你的阅历变得更加丰富时,你开始学习如何使用更加高级的工具,尽管这些工具的用处可能并不广泛,但是在解决某些特定问题上非常顺手。(例如,树状数据结构、通配符、Valgrind、各类代码调试器等等)。编程所涉及的绝大多数领域(游戏设计、Web 开发、数据库应用)也都有它们各自的领域问题和解决方案。结果是,你解决过的任何问题,当再次碰到时,将会非常容易解决。

一位程序员工作10年总结了这些忠告

学习能力

你必须不断的学习并且给你的学习时间并不会很多。在短时间内快速的掌握工作相关的各种技术技能,这一种能力是让你在IT圈甚或将来在其他的什么行业圈里都会受用无穷的能力。

举个例子,我在头两年的coding生涯中,用过三种不同的编程语言,除了大学就学过的C++,另两种语言相当冷僻,一种是银行系统常用的开发语言,一种是和Mainframe大机环境的通信语言。当时要用这两种语言完成客户要求的系统编程,完全从零学起。看教程、研究别人的程序、不断的尝试编程、测试、debug,在短短半个月的时间掌握所有的编程方法,在客户要求的时间内完成系统的编写。这样类似的情况,在整个IT生涯中屡次出现,不会有人等着你慢慢成长,这个行业需要你快速的从某个领域的菜鸟变成大拿。

成功源自于失败中的学习;失败则是因为容忍错误的横行。

有很多程序员总是在辩解,说什么“程序这么难,犯错误很正常了,软件变得糟糕也在所难免了”。这种理由听得多了,于是,大家也逐渐接受了这些扯淡的借口。但是我们作为程序员真的不应该让这些借口阻碍我们的进步,应该谨记,错误只能犯一次,要吸取教训。话说是程序员都会希望自己下一次就能一次性搞定代码。但是没有人是完美的,不过至少我们是在朝着这个方向前进的路上。

钱很重要,但是生活质量比钱还重要,工作是很重要,但是家人比工作还重要。

钱不是万能的,但是没钱是万万不能的。钱赚了,身体夸了,全送给医院了,钱赚了,身心疲惫了,人活着为了啥?不就为了开开心心生活嘛?工作重要,但是失去了家人的爱,失去了女朋友,失去了老婆孩子,那这个工作有啥用了?工作很容易就换了,家人是换不了的,老婆不是想换就换的,孩子不是想换就换的,连自己的家庭都不负责的人,怎么可能对公司负责呢?我一直是这个观念,来面试时觉得工作更重要的,我们一般不录取的,那太假了,或者太不懂事了。

义乌奥美编程,转载链接。

本文永久链接: http://code.ywbb.com/159.html

发表评论

Go