软件开发观&优秀思想

发布时间 2023-05-25 18:23:06作者: AI大胜

程序员核心价值观

以设计模式为荣,以代码重复为耻;

以代码自测为荣,以过度自信为耻;

以粗制滥造为耻,以关爱用户为荣;

以自大延期为耻,以稳定交付为荣;

以总结思考为荣,以混水摸鱼为耻;

个人信条

技术是为解决问题服务的。

需求不清就下手,推倒重来可能有。

不管黑猫白猫,能逮到老鼠就是好猫。

清晰地描述一个问题,是获得有效帮助的第一步,也是最重要的一步。

对一个问题,总有若干不同的解决方案,是个很棒的能力,更棒的是尽快做出选择的能力。

解决bug是程序员的日常,所以要放平心态,有问题就解决问题。

小孩子才会去追究责任,成年人该考虑如何实现目标或解决问题。

程序员得有一个小步快跑的思想,边想边做、边做边改,越来越完善。

目标:让每个在工作中接触我的人,都发自内心的认为,我是一个有职业精神的程序员。(心生好感的服务态度、专业的技能,稳定的输出。)

编程优秀思想和规范

  1. 避免重复造轮子: 在你第一次为实现某业务功能写代码的时候,没有做设计,姑且就这么写了。当第二次遇到相似的功能,发现这个功能之前好像用过写过这时候。就要考虑重构了,把它变成一个通用的业务组件。另外,在面向对象的编程中,尽量保持相同的代码只编写一遍,避免以后到处修改相似代码的悲剧。

  2. 基于接口编程:基于接口而非实现编程是一种常用的编程范式,也是一种非常好的编程习惯,一定要牢记于心!

    基于接口编程可以让代码更加灵活、更易扩展和维护,因为接口可以为不同的实现提供相同的方法签名(方法的名称、参数类型和顺序以及返回值类型)和契约(接口中定义的方法的行为和约束,即方法应该完成的功能和要求),这使得实现类可以相互替换,而不必改变代码的其它部分。另外,基于接口编程还可以帮助避免过度依赖具体实现类,降低代码的耦合性,提高代码的可测试性和可重用性。
    就比如说在编写短信服务、邮箱服务、存储服务等常用第三方服务的代码时,可以先先定义一个接口,接口中抽象出具体的方法,然后实现类再去实现这个接口。

  3. 代码友好:对于你写的可能会主动抛出异常的方法,要在方法注释里说明什么时候会主动抛出异常。

致程序员:节选自《程序员的7堂职场课》

主动持续学习

检验所学知识的方法有很多,例如把学到的知识应用到工作中,就可以检验自己是否学到位了。

遇到问题时再去探索解决方案是一种被动的验证方式。如果日常工作中没有那么多需要解决的问题,而又需要检验所学的知识,该如何操作?这里分享一种主动的验证方式,即从学习知识转为教授知识。在开始学习的时候,就要把学习目标定为学完后教别人,换言之,学完后自己就应该是这方面的专家了,有责任让其他人也搞懂这个知识。如此这般才能在学习过程中吃透知识。

具体可以这样做,学完一个知识后,对着镜子用自己的话讲一遍,刚开始肯定会卡壳,不过不要紧,针对不清楚的部分。查资料搞懂之后再演讲,直到整个讲述过程顺畅为止。此时想必你已经建立了信心,可以找三五个好友对着他们讲。有了观众难免会紧张,可以准备简单的PPT,以便梳理和回忆,接着再找机会在公司里或者小组内做一次分享。逐步扩大分享的范围,并在每次分享完后及时总结对于不熟悉的地方进行加强,这是一个不断自我完善的过程。期间还能形成自己的学习体系和方法,锻炼组织演讲能力。另外,在不断扩大分享范围的过程中,一定会得到不少反馈,使自己对知识的认知程度不断提高,最后在时机成熟的时候可以翻译发表一篇文章。做一个总结,整个过程不但验证了知识,还极有可能让你成为某个垂直领域的专家提高自己的专业知名度。

随着信息越来越透明,靠着“我知道但是你不知道”来构建的核心竞争力,并不牢靠。所谓技术人员的核心竞争力,不是“会了别人不会的技术或者知识点”,而是“能解决别人解决不了的问题”,这是完全不同的两码事。代码可以偷,插件可以搬,但是解决问题的能力、背后的思维,就算明明白白分享出去,再聪明的人也得经历项目实战才能理解透,沉淀也需要时间。

我问过我之前的CTO:“技术更新这么快,你发愁吗?”

他很不理解:“发愁?担心啥?”

我说:“语言有那么多,算法又总是更新,各种框架、各种库,一年得换好几个版本。”

他想了想:“这么说吧,我现在很擅长炒鱼香肉丝,但有哪一天大伙儿都开始喜欢宫保鸡丁了,我就没工作了?炒菜的水平在这儿,咱翻翻菜谱,也饿不死吧?”

归根结底,还是要落到学习能力上。

月薪2万的坎怎么过

  1. 学会提问。不能独自解决的问题,找人请教,问题要具体,也要先有自己的尝试。
  2. 提高解决问题的能力。初级的程序员(月薪2万元以下),只求在最短时间内把活干完,口头禅是“凑合能用就行”。想要突破,就要从“凑合能用”到“独立解决”,再到“用好几个方案独立解决”,最终比较不同方案之间的优劣,选一个最好的。
  3. 提升复盘能力和学习能力。工作中,总会遇到麻烦的事情,花点儿心思,总结一下,下次遇到类似的问题,就轻车熟路了。

职场是一个公平交易的地方,不提升沟通技巧、不操心项目进度,薪水就会卡在一个位置。当然,只要这个位置,自己能够接受,甚至享受这个水平的薪水给自己带来的生活,那完全没问题。

对于同一个问题,能拿出多少个解决方案,是程序员水平的衡量标准之一。并不是背了很多知识点,解决问题的能力就上去了。如果这个荒谬的逻辑成立,那么在家专心背一年菜谱,明年是不是就能去米其林餐厅当大厨了?

平时比别人早到一点,晚走一点,工作稍微仔细一点,代码里错误稍微少一点,那只能算“数量上的差距”,顶多是大芝麻和小芝麻之间的区别。想要脱颖而出,需要在数量级上有差距:别人干一个星期的活,自己只需要2天甚至1天,这就是西瓜和芝麻的区别了。

月薪超过3万元的程序员,都在做什么

  1. 从个人视角上升到团队视角。他的存在,能让整个公司更有效率。怎么做?第一步,肯定要从全局考虑,而不是“我的活干完就行了,其他的概不负责”。
  2. 从技术视角突破到价值视角。——我用技术怎么提高效率?如何创造价值?
  3. 从员工视角转到老板视角。负责的越多,主动性越强,自然收入也越高。互联网公司也是一样,一个人能取得的成就,跟他有多主动直接成正比。如果非得要一个衡量一个人主动性的指标,那就是看他对多少结果负责。

程序员的个人品牌

程序员的事业发展,是一辈子的事情,除了技术能力,能一直带在身上的,就是个人品牌。换一家公司,薪资待遇、同事、老板和发展环境都会换,而个人品牌,会随着时间在一个人身上扎下根,持续很长时间。

个人品牌到底有多重要?

  • 第一,有了品牌,就会有“溢价”。说得通俗点,有牌子的东西,就是贵。
  • 第二,有品牌的好处还在于能高效解决信任问题。
  • 第三,有“个人品牌”的人,沟通效率高。

如何构建自己的个人品牌?

  • 标签化。想办法让别人记住自己的名字,并且同时会想到一个积极意义的标签。
  • 获得高手的认可,让他们愿意为你“背书”。
  • 最重要的,增强自己的“业绩能见度”。

想避免劳累?试试看调整心态。

如果让大家去搬砖,大部分人会感觉到疲劳,给很多钱都不想去。但是大部分人却会背着很重的装备去旅行,要知道爬山的路可比搬砖的路坎坷多了,但是大家还是乐此不疲。那么区别在哪儿呢?区别就是做事的心态

有一个故事是这么说的:同学聚会时聊到工作,A说:“我挣得多。”老王说:“我有个好身体、好心情。”B说:“我在朝阳产业,未来有发展。”老王说:“我有个好身体、好心情。”C说:“我们公司规模大、稳定,福利待遇好。”老王依然说:“我有个好身体、好心情。”这时候做保安的小赵说:“我也有个好身体、好心情。”老王默默地说:“我比你赚得多点。”

如何保持学习的兴趣?

image-20230302143559829

如何避免吃青春饭?避免所谓的35岁危机?

要想在职场上不吃青春饭,就要通过复盘自己遇到的每个问题来实现,不然人到中年,凭什么你的方案就比别人的好?凭什么让你来把控方向?一个人的身价,都是在一点一滴的复盘中积累出来的。没有复盘,就没有进步。

很多才华横溢的程序员,痴迷于炫技术。把编程当爱好的话,自然无可非议,但站在事业的角度,编程是要解决实际问题的。与别人怎么配合,项目怎么推进,甚至在冲刺过程中团队成员出现了心理问题该怎么应付,这都是项目经验,都需要去经历,单纯地学是学不来的。要想让自己不再年轻的时候依然有核心竞争力,那么琢磨下这句带点儿鸡汤的话:“好好做每一个项目,它们都决定着你的身价。”

作为经验丰富的老程序员,在其他人没有解决方案的时候,要能提出方案;当其他人有方案的时候,要能提出来更好的方案;当其他人有好几个方案的时候,要能挑出来最合适的方案。就像没有最好的计算机语言一样,方案也没有最好的,只有合适不合适一说。具体到某个项目,老程序员体现解决问题水平的地方,就在于快速选出最适合的方案,给团队节省大量的时间。想要做到这一点,就需要在年轻时打好基础,工作的时候多问问自己:

“这个需求,是不是只有一种办法来满足?”
“这个功能,是不是只有这一种办法来实现?”
“这几个方案中,哪个方案最适合?它们的优缺点各是什么?”……

这样长年累月地积累下来,你手中的解决方案才会变多、变得有价值。阿里巴巴的技术之所以厉害,就是每一个进入公司的人,在实现一个功能的时候,早有很多解决方案摆在那里,都是前辈智慧的结晶。员工们只需要先学,再进行比较和体会,技术成长怎么会不快呢?程序员吃的是不是青春饭,并没有标准答案,就看他是否有意识地积累项目经验,培养对团队方向性的把控能力以及记录手中握有的解决方案的数量和质量。另外,互联网作为智力密集型行业,不会亏待有心人,而有心人的年龄也并不那么重要。


更新于:2023.5.25