什么样的开发方式是快速准确有效的?【上】 |
包括从问题的思考,到开发的工具(包括编辑器)使用?
离开温水区,保持好奇心,追求优雅。同时认清自己。上面说的都老生常谈了,这次提一点同样很重要的 --- 说服自己。 🧑⚕️💍🔋😚💅 什么叫说服自己呢,就是让现在的事情变成你引以为傲的事情。比如这次就拿我工作这一年的经历举例子吧。 刚进公司要进行一个之前从没有接触过的技术,怎么办? 首先,要暗示自己,这个项目很牛逼 --- 大名鼎鼎 Erlang 平台,号称可以写出十几年不用停机,超高可用性的项目,同时搭配吸取了 Ruby on Rails 精髓的 Elixir/Phoenix 开发框架,开发速度据说是 Java 的 20 倍坏笑。如此牛逼的技术,学起来还不得偷着乐? 🦴🛩🍒☯🐻 然后捣鼓开发环境吧,语言太新,没有成熟 IDE,正好可以学学多年来一直想学的 Emacs。这可是号称神之编辑器,号称伪装成编辑器的操作系统,号称无所不能。硬着头皮学,一开始保存文件快捷键都要想一下怎么按,把快捷键列表放在屏幕另一边,一边看一边写。 然后项目跑起来,学习语言,理解核心要点,之后就是开始写代码 --- 爬虫,项目打包,热部署,代码设计,即时通讯...甚至横向发展 --- 前端,交互设计,SEO 都开始涉及。慢慢的开始理解更深层次的东西,非常有成就感。 👳🦺🏮😭💅 但是还不能满足,能不能更好?学习一下别的大牛是怎么做的?都用的什么?最新的开源项目用的什么技术?学过来!于是埋头研究,把公司老旧技术替换成更好的新技术 --- REST 接口升级成 GraphQL,给项目配置持续集成/持续部署(CI/CD)... 这样主动给公司创造价值,也得到了 BOSS 的认可,同时自己也能感觉到自己在提升,这样带着荣耀感去学,怎么会觉得枯燥? 同时自己也搞点自己爱好,比如给自己博客用上公司还不敢用的更加激进的新技术,折腾一下 ArchLinux,尝试自己搭建一个代理服务,等等等等...🧑💻🩴🖥🤔🤌 总之,只有自我催眠,认为自己做的事情很牛逼,这样做起来才会有激情。不然自己都觉得无聊,一看见就烦,那样能做好才奇怪。 但是学了这么多东西,真正得到的仅仅是新技术么?新技术日新月异,瞎追是追不上的。 🧑⚕️🥾🔭😒👍 这就又回到老掉牙的话题了,内功。 就如同你说的,聪明人聪明在思考问题的方式和你不一样。也就是聪明人有思路,而你想不到这个思路。 说到这,上一段一开始提到了认清自己。自我认知很重要,要知道大部分人并不是聪明人。所以也不要自卑,接受自己,同时继续为自己骄傲,这一点也不矛盾。 👍🛑🥛🈚🐅 『虽知道大海的深邃,但仍为脚下捡到的贝壳而欢呼。』 扯远了,再说内功。为什么我可以快速学习新知识?并不是因为我有多聪明,而是我之前系统地学习过计算机知识。比如在你懂了计算机网络之后,就可以很快理解 RESTAPI,GraphQL,RPC 之间的异同,也可以明白即时通讯协议 XMPP,MQTT 的优劣。 🧑🍳👚🧲😂👈 比如你懂了 Lambda 演算,编译原理,形式语言,自动机,也就理解了一个语言为什么要这么设计语法,为什么不能这么写。比如你懂了数据结构(我弱项),你就能理解数据库,搜索引擎中的细节。 所以你眼中的聪明人真的是天才么?不排除真的有天才,但我想更多的是普通人,只不过他学的稍微比你多一点,比你系统一点罢了。 所以只要你愿意思考,愿意动脑子,愿意较真,愿意折腾,一定能自我满足 ✋🗺🫑🅾🕊 根据我现在的经验,我觉得迭代化的开发方式,相对是比较好的。但是也不能完全解决问题。正像人月神话里边提到的那样,软件开发有它固有的,本质的复杂性。到目前为止,没有一个工具,或方法能够极大的提升开发效率。也就是没有银弹。 开发工具都是细枝末节,软件开发非常依赖于人的能力。一个好的程序员,能力是一个比较差的程序员的好几倍甚至十几倍。 🦷🥚♂🦊 主要体现在:能够快速的,高质量的实现需求,代码漂亮,容易维护。
帖子热度 6345 ℃
缘殷勤地给楼主揉揉肩捶捶背,楼主奖励1 个 金币.
|
|