一个有前途的程序员每天60%的时间要拿出来学习研究,40%用来应付工作,这样每两年工资可翻一倍,而且最要命的是程序员也是要有一些天赋的,并非所有人都适合,大部分程序员把时间都扔在了业务逻辑之中,最后被淘汰!这也是35岁中年危机的主要原因。事实上有实力的程序员越老越值钱,扯远了!
当今整个社会大环境越发凸显浮躁和赚快钱,根本没有静下心来打磨一个产品的大环境。就拿下载软件来说,我记得十几年前下载个软件是件非常容易的事情,现如今变得非常困难,专业的程序员下载个软件都要小心翼翼堤防,找了一大圈才能找到真正的下载地址,更别说外行人。安装到最后就是5个浏览器、3个杀毒、各种全家桶占领电脑桌面。卸载软件也是,卸载个软件也是要把眼睛擦得雪亮,最显眼的往往不是真的卸载,过关斩将才能最终卸载。为了赚钱无止境的突破下限,把大众的智商按在地上摩擦!
房产税现在越吵越凶,搞得好像已经开始征收了似的,我要说的是,就算征收了,最终还会转移到穷人身上,你以为富人在乎这点房产税,涨房租不就完了,主要负担还是会转嫁到刚刚脱离贫困到小康生活的这些人身上。好比以前说为了环保,超市塑料袋需要收费,可是现在塑料袋少了很多吗?生产厂家和超市却赚的彭满钵满,留下风中一脸懵逼的我们。
任何人从幼稚到成熟的过程,都是从不负责到承担责任的过程,承担的责任越大越成熟。人生如此,程序员也一样。幼稚的程序员是不会为自己的言论,认知,技术负责的,他们可以在社交媒体随便喷,说 php不好,java不行,C++万岁,函数式编程统治世界,OOP完蛋,iOS优雅,Android狗屎,华为沸腾,小米耍猴,外企人性化,996下地狱,反正他不会为自己任何一句话负责,随便喷。--摘自知乎
程序员从幼稚到成熟的过程表现:--摘自知乎
无论什么编程语言,开发环境,都要讲究开发效率+运行效率,尽量在两者之间做到一个平衡,毫无疑问java+net+python在开发效率这块优势很大,各种封装好的类库+数量众多的第三方类库+不断升级完善的语法糖,爽的不要不要的,而c++在运行效率方面有优势,运行效率这块尤其完爆python,这要怎么看,适合的才是最好的,怎么方便怎么来,其实一切编程语言都是垃圾,能够解决实际需求并持续变现才是王道!
当一个程序,尤其是别人的代码,不知道什么时候突然之间以某种形式开始正常运行以后,而且已经正常运行了很长一段时间,奉劝各位不要贸然去修改它,一定要忍住,你的修改可能会带来毁灭性的灾难,很可能跑路都来不及,哪怕是一行代码,哪怕是你把修改的部分都撤销还原了,会懵逼的发现怎么都不能正常运行了!
程序员貌似都难逃一个魔咒:当你修复了100个BUG的时候,会引来大约20个新的BUG,如此往复。
在设计软件的过程中,一定要尽可能的站在用户的角度思考,用户需要什么才是我们的宗旨,而不是我们怎么写程序方便才怎么设计,在软件的逻辑编码复杂度和用户的使用人性化冲突中找到一个平衡点,对于极端的不合理的需求不去做(加钱可以无视),其余需求都尽可能最大化的满足用户需求。
全宇宙的老板估计都是,到你要离职真的要走了的时候,才给你加点工资,你不走就当做没看见,也不知道主动加点。
关于C++的代码好丑,你可以在同一个工程里面,遇到如下情况(来源网络):
以前的程序员:这里一定还有更优雅的方法,这里还可以再优化一下。现在的程序员:管他呢,能跑就行,代码和人只要一个能跑就行。初识不知提桶意,再见已是提桶人!
我尊重任何移民的人,对任何移民包括技术移民都表示理解,但同时对这些人极度蔑视。我接受高等教育并不是为了逃离落后贫穷的故乡(我承认初衷是为了谋生),而是为了让故乡不再贫穷贡献自己的一份力量,哪怕这份力量极其微小。
经过这么些年的社会的毒打,我的原则是:用户是上帝和大爷,尽量站在用户的角度换位思考,只要是合理或者基本合理的需求,甚至说只要不是太过分,给钱就干。
程序员经常会在如何保持高度的耦合性和复用代码之间做抉择,这两者既是矛盾的也是不矛盾的,如果想要完全的零耦合那就不能复用代码,复用代码了就不叫完全的零耦合,我们要做的就是尽量找到一个平衡点,在复用代码的前提下,尽量降低各个模块之间的依赖程序。其实复用代码就是为了降低耦合而产生的,不然各种重复的代码写的到处都是。
与其左思右想,不断权衡利弊,以期做好充分准备,还不如先让自己搞起来。犹犹豫豫,很容易陷入精神内耗,搞起来,就成功了80%。而犹犹豫豫,只会拖延时间,错失良机。的确,有些决策需要慢一点。但也有一些事情,需要我们有超强的行动力。
真正做到内心的强大是很不容易的,尤其是那种双手插兜,不知道什么叫做对手的境界,中间需要经历太多的磨难和挑战和心境的一步步提升,做程序开发也是一样,在编程的江湖,只要稍微一出手,就已经是这个Qt开发领域的极限。
世界是复杂的,也是简单的,编程世界也是如此。
纵观大多数的软件产品服务商,基本上走的路线都类似:简化版开源免费,标准版平民价,高级定制版老板价。
中间部分持续增加中,欢迎关注,敬请期待!
最后祝大家头发浓密,睡眠良好,情绪稳定,财富自由!
计划不计划一件事情,执行不执行一件事情,一定要以老板的利益为目的。老板不赚钱,一切好事一切想法都会被老板推翻,老板就是老板。老板赚钱赚的眉开眼笑,其他的事情就好办很多。
当我多年后回顾老板当年的想法的时候,我发现,老板大部分时候是对的。我想得确实不够远,不比老板更擅长平衡利益。老板是比我掌握信息和资源更多的人,老板也知道内外矛盾和困境,他就像在下围棋那样统揽全局,他想的步数可能会影响大局或影响未来的第四步第五步。而我只能看到前三步。所以老板自有当老板的资本。
虽然我们开发时只使用一种特定的技术,但架构的思路是需要不断地对比共性和差异性,得探求他们解决问题的思路和解决问题的重点,只有这样旁征博引,才能设计出先进的架构。
很多人不愿意读源代码,觉得深钻太辛苦。但没有这种细致入微、沉淀坚韧,是无法成为架构师的。在训练行业趋势眼光上,就是得不断了解业界新应用、新技术、新趋势。
我从不想在商品中炫耀技术,技术是为商品服务的,能不用尽量不用,技术是藏在商品里面的。
一个软件的开发,往往1-2个月就完成,而他的销售、实施、升级周期却长达4-8年,但每个老板好像都认为软件已经开发完毕,修修补补是小功能,所以只需要一个人维护就OK。殊不知白纸好画画,而要在别人的画上再能点睛成龙就难上加难咯。
作为开发人员,不应该把软件假设在一个理想的工作环境中下,那样的软件是不适合现实使用的。该委曲求全还得委曲求全。骂客户管理水平太次、骂客户白痴毫无意义。
如果软件做的灰不拉几的,自己都觉得没什么出彩的,客户也觉得很普通,在价格上就无法提升。就如同我们遇到一个女孩,很漂亮,到底心灵如何,还没有那么多时间机会去了解,但首先感觉就不错,愿意去接近。软件和女孩一样,道理相同。
一个好的软件,有许多评价的方面,如实用性、稳定性、容错性、性能、可测试、可理解、可修改、可实施、可支持、灵活性、移植性、兼容性、安全性、易用性等,但这么多要求,我们都要有目的分阶段地一步步达到。而且,往往我们不断补齐上一阶段留下的遗憾后,我们此阶段的努力又会形成下一阶段的遗憾,总是无法做成一个赏心悦目可以笑傲江湖的软件。也许,世事轮回皆此规律。
任何软件系统的设计都基于归纳法,而非演绎法,即软件设计人员总是通过对现有世界和业务的总结提炼,而无法通过推测演绎完成软件设计。设计人员无法对业务的未来做出预测,只能基于有限的经验,尽量保证设计的灵活性和正确性。有时候会遇到客户抱怨,为什么发过来的时候不安装好正确的软件,而是让用户再去升级一次,问题就在这里,因为新的需求是发货后增加的,符合需求的程序是后面才编写的。
抽象分类是一个迭代过程,它既不是自顶向下的活动,也不是自底向上的活动,也就是说,我们的设计不会都从超类开始,也不会都从基类开始,而是从“不完美”的分类(俗称屎代码)开始。随着对问题域理解程度的加深,我们会经常发现,需要从两个或者多个类中提取公共部分放到一个新类中,或者将一个类拆分成两个新类。通过这样增量式的迭代,最终得到一个高内聚、低耦合的类结构设计,这才是一种可以解决问题的相对正确的分类方式。很多“屎山”系统正是因为没有合理的分类造成的。
软件设计通常是遵循中庸之道,不能走极端,扩展性设计也是如此。对于API来说,扩展性设计的极端就是把入参、出参都定义为Map、var、QVariant(key作为唯一标识符,value作为万能参数集合),但其可理解性也是最差的。另一个极端是把属性都用有明确业务语义的字段显性化表达出来,这样虽然理解非常好,但没有任何可拓展的空间。
人是生而自由的,但却无往不在枷锁之中,同样,写代码是自由的,但无往不在规则之下。社会大规模分工协作离不开契约思维,编程在很大程度上是一种制定契约。在软件领域,契约思维主要有软件规范和软件标准两方面。
趣味编程包括各种好玩的demo:
其他说明:
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。