入行成为程序员已经16年了,其实早该写写东西。
写文章可以帮助你思考、沉淀和提炼。静下心来专注地完成一篇文章,也能给你一些成就感,尤其是那些有内容、有思考的文章。之前一直没有开始,还是因为“懒”,这也是每个人要一生与之战斗的敌人。
“Stay hungry, stay foolish. Connect the dots, follow your heart.”
Steve Jobs在斯坦福的那个著名演讲“How to live before you die”相信很多人都看过;在此我想再推荐两个演讲。一个是Michael Jordan在2009年的名人堂典礼上的演讲。这个演讲我也看了很多次,其中80%的时间都是在讲他是如何从刚上高中到成为巨星之后一直保持一颗“竞争心”,这也是他成功的本源。另一个就是Zuckerberg在今年哈弗毕业典礼上的演讲,他讲了很多,其中也反复提到“目标”的重要性,而且“没有人从一开始就知道如何变得伟大”,要取得所谓的成功,绝对不像外人看起来那么简单;但是,你要去开始,否则你永远不知道要做什么。
我觉得不管你天赋如何、背景如何,保持饥渴、保持竞争心都是你能上进的根本,也是你取得一些成就的原动力。永远不要满足现状,永远要追求新的目标,要保持激情,尽管这很难。你应该看到,正因为这很难,如果你能做到,甚至仅仅坚持一段时间,你自然能有所建树。不能无视现实的压力,但更不能畏缩不前,尤其在你年轻的时候。
做技术做了十几年,我依然不是什么专家、大神或者大咖,因为我没有那么聪明、那么有天赋、那么有眼光;但我从来没有停止学习,总是在给自己制定目标和挑战,并去尝试(趁你还可以去尝试)完成,不断的提高自己,我觉得这就够了。人生中必然会有波折、有坎坷,谁都不例外,但对人生中的很多事而言,得到了过程中经历和磨练之后,最后的结果就不重要了,因为那已经成了你人生的一部分。
今年我做了两件我认为真正有价值的事,一个是利用业余时间做了一份前沿技术文档的翻译,尽管因为工作压力到现在还没完成,但也坚持了几个月了,我希望能在年内完成;另一个就是决定开始写博客,我也希望能让自己有机会偶尔停下来留下一些有价值的内容,哪怕是心情也好。我曾经认为照片、日记是没有意义的,但随着年龄的增长,我开始明白,这些东西都是人生的记忆,是过程的记忆,是有意义的。人对事物的认识、看法是会变化的,有类似日记、博客这样的东西记录下曾经的想法,当然是很有价值、也很有趣的事。
回到专业上,我自己从开发做起,后来做了功能设计、需求设计、架构设计、测试、项目管理、工程过程标准化、运维,甚至还做过项目经理去应对客户、做实施。可以说,软件生命周期里能做的事情我都做过了。我个人的主要经验都在企业级应用软件上,我的兴趣也在这里;而这也是我很幸运的一方面,总有机会去做自己想做的事。我目前的日常工作是搭建本公司的垂直应用平台(PaaS)产品,这个思路我会在以后的博客里具体阐述。
我是个喜欢钻研技术细节的人(可能跟我的星座有关系),这是一个合格技术人的基础素质。遇到技术难点,你可以百度、可以去论坛找、可以去问其他人,问题是你拿到答案之后,有没有自己去学习、去理解,把那些东西变成你自己的能力、自己的技术积累。这是你能否不断提高专业能力的关键。
另外一方面,我也认为做技术的人应该更多的强迫自己跳出技术细节,换一个角度去看问题、去思考,可以是业务细节、设计模式或者变通的方案,也可以是用户体验甚至方法论、IT战略或者IT规划,这些对你的提高都很重要。
我在CSDN上看到的太多太多都是某个技术细节、环境配置或者工具使用之类的文章,它们当然有价值,但我觉得程序员绝不应该仅仅满足于这种层次的东西。(显然,像系统环境配置、工具使用这些东西,更多的是偏于运维的经验,而这并不是程序员的价值。我当然知道在有很多中小公司或者一些有实施工作的公司里,程序员实际的角色可能是开发、兼测试、兼部署、兼运维,甚至兼项目经理,但这是另外的话题,也许以后聊DevOps的时候可以谈谈。)作为程序员来说,决定你未来能达到的高度的,往往不是技术细节,而是thinking。
当年我学Java的时候,有本经典书,叫Thinking in Java,对我的影响很大,因为它教了我很多设计原则这类通用的思路。这本书即使放到现在仍然是OOP领域的经典,因为它讲的是thinking(比如OOP里最重要的高聚合、低耦合原则,到现在的微服务架构设计时,依然用的是这样的thinking)。但后来我发现这本书其实不适合初学者,我当时看这本书没觉得有多难,是因为我在毕业第一年就自学了Design Pattern。我最初看的还是C++版本,翻译的质量也不高,很晦涩,所以后来我就找了英文原版来看。这本书是对我影响最大的书,我到现在依然认为这本书应该是程序员的必修教程,因为书里的很多思路,都是原则性的、通用的。后来的SOA架构、RESTful设计原则,到现在逐渐成为主流的微服务架构,里边有很多设计思想和实现方式都可以认为是对Design Pattern中某些模式的扩展和完善;如果你认真学过Design Pattern,那理解后来的这些设计和思路就很容易了。
目前软件技术领域有一些东西人气很高,比如AI(深度学习)、Docker、微服务架构(分布式系统)、区块链等等,那在大家都争先恐后地去学它们、去看它们的细节介绍的时候,你有没有首先考虑过这些问题:我们为什么要用这些技术?它们能帮我们解决什么问题?它们是怎么解决这些问题的?解决这些问题有别的方案么?我需要为了应对这些问题而去学习这些技术么?我觉得这些问题比那些技术细节更重要,更值得你去思考,去找寻答案。
所以,我的博客将会主要分享我在软件行业从业的一些认识、经验和体会;一些我认为对程序员更重要的、思路上的东西;以及我个人对一些技术主题的理解;当然也会有一些心情文章。
其实我还是很喜欢写东西的,因为相对而言,我嘴比较笨,反应也比较慢……^_^,而写文章能让我有更多时间去思考和组织语言,表达的质量自然也会更高。我相信写博客对自己而言是个很好积累和沉淀,同时也希望我的博客能给各位看官些许收获。