[汇总]其他程序员的思考
1. 技术
入行 14 年,我还是觉得编程很难:给大项目写代码没意思还危险
- 写代码很简单,但写好代码很难
- 编程的精髓是“创造”
- 打造高效试错的环境至关重要: 理想的编程体验≈“刷题”
- 避开代码完美主义陷阱
- 技术很重要,但“人”也许更重要:在软件开发领域,“单一职责原则”(全称为 Single responsibility principle,后简称为 SRP)是一条非常著名的设计原则。它的定义很简单,一句话就可以概括:“每个软件模块应该只有一个被修改的理由。理解 SRP 原则的关键,在于先理解人以及人在软件开发中所扮演的角色。如果缺少了特定的组织规模(也就是“人”)作为前提,空谈微服务的各种技术优势和那些花活,纯属本末倒置。
- 求知若渴是好事,但也要注意方法。
- 越早开始写单元测试越好。
- 程序员最大的敌人是什么?软件生来就是准备被修改的(不然你猜,软件为什么叫“软”件?)。产品经理以及不稳定的需求不是程序员的敌人。复杂度是最大的敌人 。
来看看那些导致项目复杂度不断增长的要素:
- 不断增加的新功能:更多的功能等于更多的代码,更多的代码通常意味着更高的复杂度
- 对高可用的需求:为了实现高可用,消息队列等额外的技术组件和代码被引入
- 对高性能的需求:为了提升性能,缓存和相关模块代码被引入,部分模块被拆分后,换成高性能语言重写
- 一再被推迟的重构:因项目排期过于紧张,迫在眉睫的重构被一再推迟,技术债越积越多
- 忽视自动化测试:没人写单元测试,也没人关心测试
- 精通当前编程语言与工具,写整洁的代码
- 使用合适的设计模式和编程模式
- 对重复代码零容忍,抽象库和框架
- 适当运用整洁架构、领域驱动设计思想
- 编写详尽的文档和注释编写规范有效的单元测试
- 分离那些变动的与不变的
要求看上去很多,但总结起来,核心其实就是一句话:写更好的代码。
作为程序员的思考与反省
一、作为程序员有比写代码更重要的事情
二、不要仅仅只关注自己的领域
三、要有忧患意识
IT软件开发人员的能力模型通常包括以下几个核心维度:
1. 技术技能:
– 基础知识:掌握计算机科学基础,如数据结构、算法、操作系统、网络原理、数据库系统等。
– 编程语言:熟练运用一种或多种主流编程语言(如Java、Python、C++、JavaScript、Go、Rust等),并了解其生态系统和最佳实践。
– 框架与工具:熟悉相关开发框架、库、中间件、构建工具、版本控制系统(如Git)以及IDE等。
– 特定领域技术:根据项目需求,掌握特定领域的技术栈,如Web开发、移动开发、云计算、大数据处理、人工智能等。
2. 系统设计与架构能力:
– 系统分析与设计:具备需求分析、系统建模、模块划分、接口设计等能力。
– 架构设计与优化:理解不同架构风格(如微服务、单体、分布式等),能够进行技术选型、设计可扩展、高可用、安全的系统架构,并进行性能优化。
3. 软件工程实践:
– 开发流程:熟悉敏捷开发、DevOps、持续集成/持续部署(CI/CD)等现代软件开发流程。
– 文档编写:能够撰写清晰、规范的技术文档,包括需求规格、设计文档、用户手册、API文档等。
– 测试驱动开发:理解并实践单元测试、集成测试、自动化测试,以及代码审查等质量保证手段。
– 代码管理:遵循良好的编码规范,具备代码重构和代码维护能力。
4. 问题解决与创新思维:
– 问题诊断与调试:快速定位并修复代码错误,理解并解决系统级问题。
– 技术研究与应用:跟踪新技术动态,评估并引入合适的新技术以提升项目效率或产品质量。
– 创新与优化:针对业务痛点提出创新解决方案,不断优化现有系统的性能、稳定性或用户体验。
5. 软技能:
– 沟通协作:有效与团队成员、业务方、用户沟通,理解需求,协调资源,达成共识。
– 项目管理:理解项目目标与计划,承担个人责任,主动推动任务进展,关注项目整体进度。
– 自我驱动力与学习能力:具备自主学习新知识、新技能的热情,不断提升自身专业水平。
– 职业道德与责任感:尊重知识产权,遵守行业规范,对工作成果负责,对待问题闭环处理。
2. 职场
如果你发现自己很蠢(或者很糟很菜等等),不要灰心丧气,反而应该感到无比开心。因为愚蠢的你这么多年都活的好好的,证明活在这个世界上没有那么困难。今后只要进步一点点,不就可以活的更好吗。
现身说法:37岁老码农找工作
赚钱不费力,费力不赚钱
一位 70 后程序员的 26 个职场感悟
你可以看到一个1997年毕业的大专生(毕业于南昌水利水电高等专科学校,现更名为南昌工程学院)、一个在高二时英语还只考29分的人,是如何一步一步成为Motorola的软件架构师的。(至简目前就职于阿里巴巴中间件团队)
程序员的成长焦虑
作者ThoughtWorks Senior Consultant,CSDN 博客专家。专注于物联网和前端领域。出版著作《自己动手设计物联网》,以及《Growth:全栈增长工程师指南》等六本电子书
如果你长期跟进本领域的前沿技术,你会发现近十年来互联网技术发生了非常大的变化,这种变化几乎在每一个领域里发生:
- 在软件架构领域,经历了从单体应用到 SOA 再到微服务;
- 在云计算领域,经历了从虚拟机到容器;
- 在数据库领域,从关系数据库到 NoSQL 再到 NewSQL;
- 在大数据领域,从批处理到流处理;
- 在运维领域,从手工运维到 DevOps、AIOps;
- 在前端领域,从 jQuery 到 React 等三大框架;
自学编程,从月薪500到年薪150万,46岁程序员的IT成长之路
老程序员到40、50岁该怎么办?是继续留在软件行业还是转行?是默默死去还是向中层管理者蜕变?美国在老程序员的职业发展上的经验?
终身程序员必须保持他们的技能更新,他们在不断变革的行业中是在与时间赛跑。根据2018年的一篇研究论文,在科学,科技,工程和数学(简称STEM)工作领域,技能的更新换代比其他行业更快,而程序员的变化率尤为严重。
- “清零思维”,时刻保持和发展你的稀缺能力,它让你在职场当中立足。
- “杠铃策略”,提升个人在职场中的“反脆弱性”,发展一门副业来提高抗风险的能力。
- 开始理财,摆脱“工薪阶层陷阱”,让你的财富不断增值。
- 坚持锻炼,健康的身体是幸福人生的基本盘,一定要坚守住。
薛定谔的敏捷开发:项目没设计、需求老是变、成天净开会、开发常加班……
接手了一座年收入2000万美元的代码“屎山”,我到底是该重写还是该跳槽?
回顾我的layoff时光, 从被裁员到现在的70余天里,除去周末和漫长的节假日,再减去因为感染新冠而躺平了的10天,我在约30个工作日里面试了96场,平均每天面试3小时,并创下了5天内面试18场的个人最高纪录,甚至有公司一共面了10场才走完了流程。
3. 企业工作感受
“年薪 45 万美元的 Netflix 开发工作,我不要了!”
……如果完全胜任还没有被安排更有挑战的工作,要么自己找事情做,要么跳槽转岗。
Critical Thinking 批判性思维, Communication Skill 沟通能力, Public Speaking 公共演讲
为谷歌工作 16 年被当“垃圾”无情辞退,数千网友留言:为公司“卖命”不值得
61岁程序员被迫线上求职,谷歌解雇高职位员工,开源专家也被炒
我为什么会放弃了大厂 45 万美元的高薪工作Netflix
4. 失败
为什么软件行业仍在重蹈 50 年前的覆辙?读《人月神话》有感
1 《人月神话》的背景
2 20 周年纪念版序言
3 第 1 章 – 焦油坑
4 第 2 章 – 人月神话
5 第 3 章 – 外科手术队伍
6 第 4 章 – 贵族专制、民主政治和系统设计
7 第 5 章 – 画蛇添足
8 第 6 章 – 贯彻执行
9 第 7 章 – 为什么巴别塔会失败
10 第 8 章 – 胸有成竹
11 第 9 章 – 削足适履
12 第 10 章 – 提纲挈领
13 第 11 章 – 未雨绸缪
14 第 12 章 – 干将莫邪
15 第 13 章 – 整体部份
16 第 14 章 – 祸起萧墙
17 第 15 章 – 另外一面
18 第 16 章 – 没有银弹
19 第 17 章 – 再论 “没有银弹”
20 第 18 章 – 《人月神话》的观点:是与非
21 第 19 章 – 20 年后的 《人月神话》
21 结束语:令人向往、激动人心和充满乐趣的 50 年