我们都听过这样一句话,当你手中有一个锤子,你看什么都像钉子。当你只会一种语言的时候,你的思维往往也被局限了,而这是会影响你的编程思维的。
vim永远都值得你学的编辑器
对于编辑器之前我并没有特殊喜好,我用过ide,也用过sublime,atom,vscode,然而最后我还是更喜欢使用vim。
每当看到那些在vim下快速编程的大神们,你会感觉到编程原来可以如此拉风。
我喜欢vim的速度,它能够让我的思想和编程速度相匹配,当你的编程速度无法跟上思想的时候,你可以尝试下vim,一旦你体会到它的精髓,一定会爱上它。
算法和数据结构是你的基本功
在我高中的时候,我的化学老师就曾对我讲过,学习任何东西都要把基础打牢,为了打好基础,你可能需要练习无数遍。
对于编程来说,算法和数据结构就是我们的基本功。你需要时不时地就温习它们。现在很多面试者抱怨手写红黑树太难,然而这些都是作为一个程序员必备的基本功,就和相声的报菜名一样,你可能不需要每天练习,但是无论何时,当你被问起它的时候,你都能够把它手写出来。
技术永远是解决问题的
技术的发展永远伴随着问题的产生,正是一个个问题的解决提升了技术的发展。
你永远不要抱怨问题有多么难处理,技术就是为了解决问题的。你可以抱怨需求的不合理性,但是永远记住,解决问题才是你应该去做的,而解决问题的同时,就是你能力提升的过程。
你还应该记住,解决问题的速度越快,越有利于产品的发展。
平衡优化和速度
程序员对自己的代码都有严格的洁癖,他们希望可以写出完美的代码,然而现实中,没有十全十美的代码,只有bug百出的代码。
很多人喜欢写出符合规范的代码,喜欢通过tdd来驱动开发来减少错误,然而现实中你会发现,很多情况下为了开发的进度,所有的规范都可以被抛弃,唯一的规范就是在最短的时间完成产品的功能。
产品没有完美,只有相对完美,我们也不可能一开始就设计出或者写出相对完美的代码,我们只能通过不断完善才能让代码更优。重构和改进是你可以提升代码质量的第二次机会。
项目进度永远无法精准评估
无论你是团队工作,还是你单打独斗,你都无法精准预测项目的最终进度。
有些看似简单的问题,但是却可能产生意外的困扰,你可能需要花费额外的精力来处理它。而有些你预测的困难问题,可能比你实际想象的还要困难。
有时候你完成项目的90%,却发现最后的10%却花费了你90%的时间。
软件开发中各种险象环生,你需要时刻提高警惕,每一次顺利完成项目你都要谢天谢地,因为你已经足够幸运。
当你认为可能产生问题的地方一定会产生问题
你是否有过这样的经历,你认为某个地方的代码可能有问题,但是测试的时候就是没有发现,当你项目上线的时候,它就会完全暴露出来。
代码正常运行是最基本的要求,而bug也总是产生在意外的情况下。
没有人可以考虑到所有可能发生的意外,我们只能总结前人留下的经验,避免犯那些重复的错误。
总结
软件开发它是一种职业,需要我们有工匠精神,专注,创新是我们需要时刻牢记的。
不断学习,十年磨一剑,记住,你写得最好的代码永远是下一次。