程序人生

“道、法、术、器”,出自老子的《道德经》,是我们老祖宗的智慧结晶。经过了两千多年的历史,细细想来,依然是那么具有深意! 今天我就结合开发者的视角,给大家聊聊开发者眼中的这四个层面! 如果你现在正碰到职业发展的瓶颈,那么可以看看下面的内容,也许会有所感悟和帮助。我们将分别从“道、法、术、器”,聊聊我们在这四个层面上的不同表现,重新审视下目前的你所付出的努力都集中于哪一层,并思考接下来更应该从哪点去进一步提高更有价值? “器”什么是“器”?假设,现在要开发一个电商网站,我们可以用什么去实现?可以用Java、可以用PHP、可以用Go… 我们可以听到很多答案。而这里我们所说的各种编程语言,就是“器”,是一种工具。 “PHP是世界上最好的语言”,这是所有程序员都知道的一个梗,因为这句话就是关于最底层的“器”的争论,由于争论的点很基础,所以就被广为流传。 那么这类问题是否有最优答案呢?纵观所有成...

关于低代码平台,之前我也推送过两篇相关的文章,我的观点很简单:东西是好的,有它所擅长和适用的领域,但软件产品不存在银弹,低代码平台一样如此! 现在在搜索引擎上搜“低代码”这样的关键词,你会看到很多夸张的标题,比如: “人人都是产品经理”之后,“人人都是程序员”的时代要来了? 阿里、腾讯都在押注的新赛道,能让程序员告别脱发和996吗? 还有诸多低代码平台的公司拿到各种融资或地区性政府补贴的新闻 甚至我还在福报长的抖音账号中,看到了程序员下午坐在外面喝咖啡,说有了低代码,现在大把时间休息的短视频。。。 低代码平台真的这么神奇?我们在企业数字化转型过程中的开发任务都可以用低代码平台来解决吗?我们开发者996的宿命就这样被搞定了? 如果你正对低代码平台抱有上面幻想的话,一定要好好看看下面的内容! 先表明观点:如果你试图使用低代码平台去解决所有开发问题的时候,很有可能这样的决定将在2-3年...

前不久的这条新闻或许大家已经有所耳闻: 位于法国斯特拉斯堡的 OVH 数据中心被大火烧毁。据悉,火灾导致多个数据中心无法服务,大量客户网站瘫痪,部分客户数据完全丢失且无法恢复,这是数据中心历史上史无前例的灾难性事件。 我们今天不讨论火灾的原因、OVH损失多少,而是想重点说说在这次火灾中受影响的用户与背后的系统设计缺陷。 在此次事件中损失最惨的是一家名叫Rust的游戏制造商,该游戏制造商失去了其公司名下游戏所有的欧洲服务器,储存在服务器上的数据全部丢失。 也许很多读者的第一反应是:玩家花费大量精力财力的账号没了,一定是伤心欲绝! 其实,从公司角度来说,他们的损失更为惨重,因为数据丢失也就意味着客户丢失,同时也意味着客户虚拟资产的丢失。这样的灾难对于企业来说,往往面临的就是一个结果:倒闭! 当知道会发生这个结果的时候,相信大家都会开始想起来,怎么不做备份啊之类的疑问?甚至也有读者可能...

又到了春节后的跳槽旺季,之前在知乎上有这样一个话题为什么说银行科技岗是程序员好的就业选择?。 之前做的回答最近又是每天好几万的阅读,看来对于银行科技这样的围城还是有很多人好奇的。趁这个机会,转到这边跟大家聊聊我四年银行科技生涯的感悟吧! 我从研究生毕业,第一份工作就去了工行,一干就是四年,体会比较深。所以给大家谈谈,我对银行科技岗的直观感受,给目前在纠结要不要去银行或者有考虑去银行的读者们一些参考: 1、领导不会管你的专业、爱好、特长,反正哪里缺人,你就上吧。本人本科软件工程,硕士数据挖掘。一开始入行被分配到测试,好几个985的研究生几天就自己走了。2、关系户多,如果没什么关系的话,比较容易到上升瓶颈。同时,很多关系户几乎不太做事,但是工作量在那边,所以没关系的事情会多一些。3、技术体系陈旧,还有公司自己封闭的轮子,技术成长机会很小,未来往技术方向走的路线会很难。但是同业间还是有很多...

当看到你提供的接口,有这样的服务消费方,你会做何感想? try { // 前置业务逻辑 // 调用DD的接口处理 feignClient.execute();} catch(Exception e) { return "DD的接口异常,请关注公众号「程序猿DD」,联系作者处理异常";} 作为一位开发老鸟,理性解析下这样做法的问题: 在调用第三方接口的时候,可能出现问题的原因有很多,并不一定是第三方接口的问题,比如:网络出现了问题,请求根本没有到达服务提供方。所以这样的异常返回是不合理的。 由于异常快中,完全没有输出异常栈的内容,导致异常信息被吞,未来就很难定位错误原因,容易陷入两边推诿的情况。 用户并不关心开发负责人是谁,异常应该更面向用户。使用用户看得懂异常描述信息,更为合理。 同时提醒一下,作为服务提供方,更要最...

我们一直强调,要写注释,要写文档!写出一份好文档是一个开发者应该具备的一项重要能力! 今天在群里(点击加入),看到一个经典的来自某国企的接口文档,引发了一段时间的讨论。 在这个文档中,HTTP接口的内容格式大致是这样的: 聪明的你,有发现什么不妥么? 这样的文档群友们打了0分,你觉得可以得几分呢? 说说我的看法 作为API请求,没有给出请求类型(GET、POST…)的说明 没有给出请求格式(表单?JSON?)的说明 请求参数没有参数类型、参数格式以及合法校验的规则说明 请求响应格式的说明 请求异常响应的格式说明 就说这么说吧,换你思考了,想想看是否还有其他的问题呢?点击这里来评论区说出你的想法吧! 或者想看看其他群友的想法,点击这里直达!

前段日子在社群(点击加入)里看到有人讨论关于Service层接口的问题,DD也经常碰到周围的新人有问过一些类似的问题:一定要写个Service层的接口吗?Service层的接口到底用做什么用的呢?好像都没什么用啊? 我的看法Service层在业务逻辑不复杂的时候,似乎是没有什么用,但是随着应用迭代,业务逻辑变得复杂了之后,这一层是非常有用的。 主要表现在这几个方面: 1、更适合用来处理复杂的业务逻辑,可能会涉及多张表的操作,甚至还混杂着消息投递、接口调用等一系列的复杂综合性事务,这也是我们常说的事务管理所处的层次。 2、对表现层的复用支持,往往我们一个业务逻辑处理,不会单单只应用在一个API接口或页面上,如果直接把这部分内容写到Controller中,那当出现重复操作的时候就会产生复制黏贴,以后再要维护这段逻辑就麻烦了 3、对单元测试的支持,通过单独的一层service实现业务逻辑,...

昨天公司里碰到一件令人哑然失笑的事情。帮朋友公司做的一个项目,做SIT测试的时候发现一些bug,仔细查了下原因,原来是因为当初觉得这个项目比较简单,交给了几个新入职的新丁,也算是给他们练练手,结果其中一位写了一段代码出现了问题结果导致bug的出现。 虽然问题不大很快就修复了,但是正所谓初生牛犊不怕虎,这位出问题的新丁不太服气,一直嚷嚷着他这段代码是从CSDN上找到的,别人都说好用他才用的。问了问他是否理解原文中那么写的原因,结果才支支吾吾了半天讲不清楚,最后也承认他只是看到那段代码的结果是他要的,并不是理解中间一些方法的运用到底是什么逻辑。 真是又好气又好笑,想想现在的年轻人真是有个性,自己当年遇到这种情况只敢虚心求教,哪敢都没明白就去用一段代码,别人指出问题还忿忿不平。 也许是自己老了吧。晚上和一个刚从国外归国的同学说起这个事情,他倒是深有体会,说到他们在国外留学时,遇到技术问题想...

昨天在devto上面看到一篇挺有意思的文章,一位国外开发老哥发表了一篇关于如何成为最糟糕开发者的10条建议,相比其他正向建议如何成为一名优秀程序员类的文章更为深刻。下面我们一起来看看这10条建议都是啥! Top 10:在做任何事情之前,你需要100%的了解JavaScript 这是一个非常好的建议,可以应用到任何地方。除非你是该领域的第一专家,否则你不应该做任何事情,即使不是在你的国家,至少在你周围的圈子里。不然你怎么确定你不会搞砸任何事情?否则你怎么确保自己不会被嘲笑? 如果你开始得太早,你可能会犯一个错误,并且记住:作为一个开发人员,你的工作就是永远不犯错误。 Top 9:永远不要质疑思想领袖;,他们总是正确的,而且比你聪明 思想领袖应该被尊为上帝。他们说什么就是什么。即使他们几周前才开始编写代码,而你已经编写代码几年了!如果他们在社交媒体上有大量的追随者,他们比你更博学,你...

不管大家参加任何的编程面试,都逃不过关于系统设计和软件设计的问题。如果你想做的更好,你可以试试准备这个话题。以前我分享过我的一个关于编程面试问题的清单,也分享了一些关于系统设计的问题,但好多人比较感兴趣,会提问更多的问题。因为系统设计比较难,需要多加练习才能更好地掌握。 当我在偶然在Educative上看到如何应对系统设计面试的课程时,我就从亲朋好友那里收集了许多关于系统设计面试问题,然后做成了清单分享给你们。 这将是一个很好的资源。这不仅给你提供许多关于系统设计面试问题,还可以给你们提供解决问题的知识与工具。 换句话说,这个课程可以教你怎么一步步构建像Facebook,Twitter,Uber的真实世界系统。 实际上,网络上没有太多关于系统设计的面试题资源。我只是在Edcative上看到rajat mehta 写的如何准备系统设计面试。而关于顶尖的公司像 Amazon,Google...

昨天分享了如何通过参与JetBrains的解密任务来获取正版全家桶的兑换码。今天 JetBrains 一早继续在Twitter推出第二波任务: 下面,我们就继续来一起参与一下,为我们的正版JetBrains全家桶续个命! 线索一:Twitter第一条线索还是比较容易的,通过观察不难发现,Twitter上推出字符串中的单词是倒置的! 所以,我们写个小程序来处理一下: @Testpublic void jetbrains() { String str = ".spleh A+lrtC/dmC .thgis fo tuo si ti semitemos ,etihw si txet nehw sa drah kooL .tseretni wohs dluohs uoy ecalp a si ,dessecorp si xat hctuD erehw esac ehT .s...

自今年1月份以Jetbrain公司严厉打击旗下开发工具产品(如:IntelliJ IDEA、WebStorm、PyCharm等)的盗版破解以来。求新破解方式、分享新破解方法的帖子或信息经常可以在各技术社区或微信社群中看到。 在《大批 IDEA 激活码到期之后的乱象…》一文中,我们已经介绍过如何通过正常途径继续使用这些开发工具的三种方法: 学生免费:JetBrains的全线产品对在校学生全部免费开放。所以,你只要有专属于学校的邮箱,就可以注册账号并免费使用它们。 开源免费:如果您跟我一样,热爱开源之外,给各大开源社区、热门开源项目贡献代码。就可以以组织或项目的名义申请免费的许可证。关于这种方式,读者可以通过这个链接查看详情:https://www.jetbrains.com/community/opensource/ 社区版本:我们也可以选择功能稍弱的社区版本来使用。就如以前MyEcl...

软件工程师花费大量时间通过练习leet code问题和完善简历来获得更好的面试通过可能。一旦他们最终被谷歌、亚马逊或其他公司录用,他们可能会发现:过去用来得到这份工作的技能与他们日常工作中需要的技能并不匹配。 我们的团队受到 TechLead 创建的高效程序员七项技能的启发。我们想提供我们自己对这个话题的看法。以下是我们总结的高效程序员的七项技能。 1. 学习如何阅读别人的代码 除了你,每个人写的代码都是垃圾?实际上,能够在别人的代码之上继续工作是一项有多重好处的伟大技能。 不管以前工程师的代码是多么混乱或者考虑不周,您仍然需要能够扩展它。毕竟,这是你的工作。同时,这个“以前的工程师”也可能是一年前的你。 这项技能在两个方面对你有益。第一,能够阅读他人的代码是一个了解什么是糟糕设计的好机会。当你浏览别人的代码时,你会知道什么是有效的,什么是无效的。更重要的是,您可以了解什么类型的代码...

尽管,我们之前分享了这么多关于面试的主题: 高薪必备的一些Spring Boot高级面试题 面试必问:设计模式遵循的面向对象设计原则! 面试必问:怎么保证缓存与数据库的双写一致性? 27道高频Spring面试题,你能答对几个? 唠唠面试常问的:面向对象六大原则 一文高效图解二叉树面试题 Java面试中最高频的那20%知识点是什么? 百度面试题:求数组最大值 … 然而,最后这个90%可见的最后一问可能直接让你功亏一篑。这么厉害的最后一问:”你有什么问题想问我吗?“ 看似平淡无奇的问题,但是却蕴含着多方面的含义。这个问题表面上给了你更多了解公司和展现个人优势的机会,但是潜台词,也是考察你对公司的了解以及对想在这里工作的意愿,对岗位是否有自己的理解。这也是我们常常是说的,你的个人价值观是否与公司价值观一致的考察,价值观的一致是直接决定日后工作主动性以及对工作责任心的直接影响因素。 那么...

今天知识星球发文公告:8月20日之后产生的时候入,对个人用户将收取20%手续费。 这对于很多个人自媒体来说,无疑会增加一部分成本,如果要维持原来的收益,就不得不将这部分费用转嫁到最终消费者之上。但是,对于这一税收政策,从合规角度,一直以来就应该是要这样子来做的。不论最终大家会以提高收费门槛还是降低收益比例来应对,大部分技术类自媒体人都持支持态度。 但是,如我上图中所说,除了知识星球或者其他机构为我们所扣缴的个税之外,还有一部分可能存在的支出是很多人没有去关心的,那就是明年3月开始,大家需要去执行的个税年度汇算清缴。 什么是个税年度汇算清缴对于2019年的个税改革,大部分人可能还只停留在几个专项附加扣除上,大家通过上报子女教育、继续教育、大病医疗、住房贷款、住房租金以及赡养老人相关的信息,可以定额扣除个税额度。 那么个税年度汇算清缴又是个什么鬼呢?、这里不直接抛税法内容,希望下面的...