IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

开发者

共 800 篇文章

IT 2015-11-08 21:51:53 / 累计浏览 2,404

我们依然要鼓吹创业

魏武挥在文中回应了其友人左志坚提出的“创业是中国社会最后的阶层上升通道”这一观点。作者回溯了自己五年前在《80后:艰难的一代》中埋下的困惑,并在此文中给出了答案:这个文明的重大转折,正由最艰难的一代通过“创业”来完成。 作者对商业的看法是辩证的。他认为,一群不伟大的商人构筑了伟大的商业,它让资源高效配给,并在建立规则。然而,商业的“贪婪”动力与巨型公司(包括内部等级森严的国企)的兴起,不可避免地导致了社会结构化与阶层固化,这正是上升通道淤塞的根源。 他进一步指出,移动互联网的兴起与技术的指数级发展,持续为商业注入新鲜血液。创业,正是普通人被技术赋能、参与改变商业结构的重要途径。虽然创业失败率极高,但作者认为,这条通道所打开的可能性,远比让社会彻底僵化所付出的代价要小。创业或许不是唯一的上升通道,但它无疑是撬动社会结构变化、让规则得以重新协商的关键力量。

本机暂存
IT 2015-11-02 23:39:48 / 累计浏览 4,584

校园招聘的简单总结

这篇文章是一位技术面试官首次参与校园招聘后的心得分享。作者从一线视角出发,详细描述了从线上笔试到三轮面试的完整流程,并分享了在筛选测试开发与Ruby开发工程师候选人时的观察。 作者发现,比较聪明且做了充分准备的同学更受欢迎。这些准备不仅体现在扎实的技术知识上,还包括对公司的了解、清晰的职业规划以及强烈的入职意愿。文章中特别提到一个细节:一位同学在二面时带来了针对公司产品的测试报告,这给面试官留下了深刻印象。 文中也流露出一些个人感慨。作者对比自己多年前的求职经历,感叹如今对技术能力的要求确实更高了。同时,他也认为在实力相当时,校招能否成功有时也看缘分。最后,文章附带了两道面试题(计算阶乘末尾零的个数、啤酒瓶换购问题)的Python实现代码,为文章增添了一些技术趣味。

本机暂存
IT 2015-11-02 23:28:45 / 累计浏览 9,624

每个程序员都应该有张木桌

这篇文章讲的是程序员作者罗罗磊磊,如何从一把好椅子、一副好键盘的“三大件”理论出发,为自己在上海的出租屋添置一张实木办公桌的故事。作者从之前公司的标配座椅和自己用了多年的机械键盘说起,强调了舒适桌椅对于健康写代码的重要性。 在决定添置桌子后,作者淘了一款160*70cm的碳化实木升降桌。文章详细记录了从收货、拆开木框包装、根据视频教程组装,到最终在客厅一角布置出一个温馨工作区的全过程。作者在文中分享了组装时的“手酸”体验、对桌子尺寸稍小的小小后悔,以及布置完成后,在台灯和音响映衬下的满意成果。 文章也展现了程序员社区对这张桌子的不同声音。作者引用了V2EX和Chiphell论坛上资深用户的评价,比如指出松木材质可能变形、需要保养,以及价格与材质价值的讨论。这种开放的讨论让推荐显得更加真实可信。 最后,作者传递了一种“房子是租来的,生活不是”的态度:即使是临时的家,也值得用心布置一个能专心看书、写代码的角落。文章还附上了为V站坛友争取到的购桌优惠,将个人经验与社区福利结合了起来。

本机暂存
IT 2015-11-02 22:53:32 / 累计浏览 5,749

低级程序员和高级程序员的区别

这篇讲的是程序员能力差异背后的关键分水岭。作者从常见的误解切入:许多人以为高级程序员只是“写代码更快、bug更少”,但实际上,真正的分野在于看待问题的方式。 文章以网络购票系统为例做了生动对比。一个典型的“低级”实现可能99%的时间都运行良好,但它把订单状态简单交付给一个网络请求。高级程序员会立刻想到:网络是不可靠的,请求的每一步都可能中断。正确的做法不是假设TCP协议“绝对可靠”,而是将每一次交互都视为可能失败,并从逻辑上设计补偿机制——比如引入独立的对账进程,通过“重试”和“状态确认”来保证系统最终一致性。 作者指出,高级程序员之所以高级,在于他们深刻认识到bug的必然性,并致力于用严谨的逻辑与系统抽象,构建一个滴水不漏的防御体系。这不仅仅是编码技巧,更是一种面对复杂性的设计哲学。

本机暂存
IT 2015-10-26 22:26:14 / 累计浏览 1,462

那些年我干过的矬事

这篇文章讲的是作者对自身前端开发“黑历史”的一次系统性复盘。与其说是“技术分享”,不如说是“经验避坑指南”——作者坦诚地列举了十三种从职业生涯早期延续至今的不良实践。 这些总结非常具体且接地气。从代码规范的一致性、CSS选择器的滥用(如过度使用元素选择器、命名通用的类名),到开发习惯问题(如重复造轮子、不利用CSS继承、不写注释);再到更宏观的工程思维缺陷,比如拿到需求就埋头苦干缺乏规划、只追求像素级还原视觉稿而忽略响应式和真实内容、只在单一浏览器测试、以及因怕麻烦而疏于沟通与自查。 作者的核心观点在于:很多时候,代码能跑和代码写得好之间存在巨大差距。他通过分享这些“矬事”,揭示了一个朴素的道理——勇于发现自身不足,并通过总结、思考与改进(比如尝试新工具、新语法、学习更优的工程方法),才是打破瓶颈、提升专业素养的关键。这篇文章对所有前端开发者,尤其是处于成长期的工程师,都具有很好的镜鉴价值。

本机暂存
IT 2015-10-26 22:16:19 / 累计浏览 5,786

程序员技术晋升非正式攻略

这是一篇**事件复盘/观点类**的文章,围绕程序员在大厂技术晋升体系中的困惑与准备,分享了作者的实践经验与核心观点。 作者以腾讯等大厂的职级体系为背景,系统解答了从材料准备、评审标准到心态调整的系列问题。文章指出,晋升材料的核心是证明自己的能力达到了下一级别的要求,需重点展示项目中的技术贡献与影响力。评审过程更看重技术能力而非单纯努力,且高阶晋升通常由专家小组负责,直接上级的影响力随职级升高而减弱。 文章给出了许多具体建议:面对评委质疑时,应坦然接受不足而非强行辩解;要主动展示对团队的指导与影响,以及超出岗位要求的贡献;展示能力不求华丽,但求逻辑清晰。最后,作者强调晋升是“僧多粥少的游戏”,评审存在局限性,通过与否不应定义个人价值。真正的关键在于调整心态,将精力投入能产生实际成果和长期影响力的事情上,而非将晋升本身作为终极目标。

本机暂存
IT 2015-09-21 13:46:59 / 累计浏览 1,703

那些我印象深刻的建议和教诲

这篇文章讲述了作者从大学到职场,在不同人生阶段收获的、影响其职业轨迹的关键建议。这些教诲并非空洞说教,而是来自老师、前辈和朋友的、在具体场景中点醒他的瞬间。 核心在于“选择”与“成长”。文章分享了“技术是安身立命之本”如何让他平衡兴趣与专业,在现实世界中站稳脚跟;“把目标设高一点”则启发他不给自己设限,走出了意想不到的职业道路。在实际技能层面,从“多用Google吧”这句来自项目经理的救命稻草,到“现在你们可以拿公司的钱做实验了”这种将工作环境转化为成长资源场的思维,都提供了可操作的方法论。 更深层次的,是关于心态和毅力的思考。创业前辈“大旗不倒,才有机会”的执着,以及关于“功夫不负有心人”与“蠢”只在结果之间微妙区别的故事,探讨了坚持的边界与价值。而朋友在饭桌上告诫的“面对自己的弱点,不要躲”,则直指个人成长中最困难却也最核心的一环——如何客观看待并克服自身不足。 这篇分享没有提供速成法则,而是通过真实经历呈现了那些“少走弯路”的智慧如何塑造一个人。它提醒我们,真正的成长往往来自于关键节点的认知突破,以及面对自己时的那份诚实。

本机暂存
IT 2015-09-04 21:30:42 / 累计浏览 2,004

互联网创业的地域鄙视链

这篇文章讲的是互联网创业圈里一个心照不宣的“地图炮”:很多投资人心里,对创业团队的地域存在一条鄙视链。 作者从投资人那句“你们是哪里的团队”的提问切入,指出这本质上是投资人在信息过载下,采用的一种基于概率的粗暴筛选策略。虽然会错过潜力股,但确是无奈之举。 接着,文章拆解了一个城市成为“创业之都”所需具备的五个核心要素——创业公司氛围、大公司人才储备、投资机构、优质高校和政策支持。作者特别修正了一点:在当下,当地用户的成熟度与接受度是至关重要的第六要素,它直接影响产品能否“线上+线下”结合打深壁垒。 基于这套标准,文章主观排出了北京、杭州、深圳、广州等城市的创业生态等级。对于不在这些城市的创业者,文章直指他们会在“人、财、物”三个核心环节面临巨大挑战:难以组建高质量团队、缺乏专业资本与放大效应、以及对行业动态的视野滞后。 文章的启发在于,它既揭示了地域差异造成的客观劣势,也给出了务实建议:要么迁徙并接受积累期,要么利用时间差深耕区域市场,要么清醒认知创业本就是Hard模式。最后用马云当年在杭州起步的例子,点出时间会改变一切,只是过程漫长。

本机暂存
IT 2015-07-23 13:40:38 / 累计浏览 2,102

拒绝修复 bug 的几个正当理由

这篇讲的是:在软件开发中,一味地、立即修复所有 bug 可能并非最佳实践。 作者从代码质量与项目长期健康度的视角出发,提出了四个可以“正当”拒绝 bug 修复的理由。首先,草率的修复常通过删除或跳过单元测试来让构建通过,这实质上降低了测试覆盖率,为系统埋下隐患。其次,一个合格的修复应包含能重现该 bug 的测试用例,否则只是掩盖问题,无法防止修复行为本身引入更多“熵”。再者,bug 修复应保持小而专注,避免与代码重构混杂在一起,否则会使补丁难以审查和理解。最后,一次 pull request 应只处理一个 bug,确保修改的纯粹性和可追溯性。 作者的核心观点是,bug 修复的纪律比程序员良好的重构意图更重要。有时,要求提交者完善测试、拆分补丁,是比简单合入代码更负责任的选择。文章通过具体的技术场景,为团队代码评审和维护流程提供了一套清晰的思考框架。

本机暂存
IT 2015-07-16 23:24:28 / 累计浏览 3,606

如何写简历

这篇讲的是一位技术招聘者看了200多份简历后,从“收件人视角”总结的简历优化指南。 作者从日常招聘中遇到的实际问题切入:比如HR需要快速分发简历给不同岗位的面试官,而很多应聘者连简历文件名都只写“个人简历”。他建议将命名规范化为【姓名-应聘岗位-城市】,这一个小动作就能大幅提升协作效率。对于加分项,作者提到附上活跃的GitHub或博客链接是很好的补充,但长期不更新的反会减分;项目经验则强调与岗位要求直接挂钩,并尽量提供可在线访问的URL,避免让面试官花费额外精力去搜索验证。 文章最后点出核心:简历的本质是换位思考。用通用的PDF格式、为在线作品提供便捷入口、保持稳定的职业经历,这些细节都在为阅读者降低信息获取成本。当一份简历让招聘方觉得“舒服”,offer的可能性就大大增加了。

本机暂存
IT 2015-06-02 13:27:00 / 累计浏览 13,946

什么是全栈工程师?

这篇讲的是当下IT行业里一个很火的角色——全栈工程师(Full Stack developer)。文章首先解释了为什么企业越来越需要这类人才:现代互联网项目技术栈复杂,从后端、前端、数据库到移动端、API设计等环环相扣,企业需要有人具备全局视野来掌控项目;同时,为了降低不同技术背景成员间的沟通成本,也需要能打通前后端的“翻译官”;对于资源有限的创业公司而言,能独当多面的全栈工程师更是节省人力成本的“妙招”。 不过,文章也指出了全栈工程师面临的现实困境。作者将其比喻为技术“瑞士军刀”,虽然应用广泛,但可能不如专精某个领域的“干将莫邪”锋利。这导致他们在面试时容易被基础知识问题难倒,或被误解为技术不精。此外,由于需要穿梭于多种技术栈,他们常常需要依赖搜索来查找API和语法,这在一些人看来是技术能力不足的表现。 文章最后探讨了技术发展的横向(广度)与纵向(深度)路径,并指出两者终会融合,正如禅修的“南顿北渐”,最终殊途同归。

本机暂存
IT 2015-05-29 19:55:50 / 累计浏览 1,723

我的移民故事

这篇讲述的是一位俄罗斯程序员移民美国、并最终创业的真实历程。作者从2005年通过暑期工项目登陆华盛顿当救生员学英语开始,经历了远程实习、多次H-1b签证抽签失利,为维持合法身份而就读巴布森学院MBA。期间他先后在波士顿小公司、诺基亚和硅谷初创公司工作,始终在“为雇主工作”与“渴望创业”的移民政策夹缝中寻找出路。转折点出现在一次看似幸运的绿卡抽签中,但背景调查又与失业时间重叠,几乎将他推向绝境。最终在2012年,他抓住时间窗口创立了Datanyze。 文章不仅是一段个人奋斗史,更通过亲身经历揭示了美国移民制度与创新生态之间的矛盾——H-1b签证限制人才流动,缺乏企业家签证使得许多创业者无法在美开公司。作者在文末明确呼吁推出企业家签证,认为现行制度未能充分利用外来人才驱动经济。对于技术从业者而言,这个故事提供了关于职业规划、签证风险与创业时机的宝贵参考。

本机暂存
IT 2015-05-11 23:37:00 / 累计浏览 4,343

需求评审与讨论问题的基本方式

这篇讲的是需求评审与团队讨论的核心方法,重点在于把一场可能陷入辩论的评审,转变为共同解决问题的过程。作者从常见误区出发,指出许多产品经理习惯带着“说服研发”的心态,导致氛围对立。文章强调,有效的评审首先要在“为什么做”(目标与目的)上达成绝对共识,再进入“怎么做”(方案)的探讨,最后才是排期执行。 为此,作者提出了几条关键原则:讨论必须建立在同一频道的定义共识上;遇到僵持先搁置,求同存异。其推荐的推进步骤非常清晰:第一步务必花时间阐明背景和目标,并确保团队认同,这比直接讨论功能细节重要得多;第二步,在目标一致的前提下,专注探讨方案本身,避免思维跳跃到架构风险等细节层级;第三步,在方案敲定后再处理资源与排期。 文章最后总结,无论是评审还是日常讨论,高效解决问题的本质都是不断拆解——从目标拆解到方案,再拆解到执行步骤。它提醒我们,在复杂的技术协作中,理清讨论的层次和聚焦点,有时比单纯的智商或情商更为关键。

本机暂存
IT 2015-05-11 23:35:26 / 累计浏览 3,703

为什么创业公司需要写博客?

这篇文章的核心论点很简单:在资源紧张的创业期,写博客不是浪费时间,而是一项能带来长期回报的关键营销投资。 作者从“集客营销”(Inbound Marketing)的兴起切入,指出线上营销的重心已从打断式的广告转向通过有价值的内容吸引用户。对于创业公司而言,公司博客正是践行这一理念、建立双向沟通的绝佳渠道。文章不仅强调了博客对塑造品牌透明度和亲和力的作用,更用数据说明了其硬价值:高质量的博客内容是驱动搜索引擎优化(SEO)的核心,能有效提升自然流量。 文中举了三个案例来佐证:数据分析公司 Kissmetrics 的博客文章频繁获得上千次分享,其有机搜索贡献了超过50%的公司收入;社交工具 Buffer 通过极度透明的内容(甚至公开员工薪资),让博客驱动了超过70%的每日新用户注册;电商平台 Shopify 则通过提供对电商从业者极具价值的运营指南,积累了超过4.8万的忠实邮件订阅者,一篇普通的产品公告都能在社交网络获得1500次分享。 总的来说,文章论证了持续输出高质量博客内容,能如何系统性地为创业公司构建品牌信任、积累数字资产并直接驱动增长。对于创业团队而言,这是一篇关于品牌建设和获客策略的清醒剂。

本机暂存
IT 2015-04-26 23:02:22 / 累计浏览 13,342

公司倒了,请让领导先走

这是一篇观点类的职场观察文章,作者从个人近期的感悟出发,提出了一个略带调侃却又现实的观点:在职业变动期,或许可以考虑“让领导先走”。 文章的核心在于对传统求职路径的一种反思。作者以求职大厂(如腾讯)为例,指出自己作为有8年经验的工程师,仍可能要面对年轻面试官对其系统架构能力的评估,这种错位有时会影响求职效率。因此,他提出了一个“曲线救国”的思路:与其投入大量精力进行不确定的常规应聘,不如等待并关注自己熟悉的领导或前辈的动向。如果他们加入了心仪的公司,通过其内推或许是一条更直接、更受认可的路径。 文中提及的“Mann咖啡生意恢复正常”,为这个略显冷峻的职场策略增添了一丝生活气息和时代背景。文章并非鼓吹投机,而是以一种轻松的方式,折射出当前环境下许多职场人对于人脉价值和求职效率的务实思考,也提醒读者,职业网络中的“弱连接”有时能提供意想不到的机会。

本机暂存
IT 2015-04-26 22:47:03 / 累计浏览 6,081

再谈程序员学英语

作者从2012年那篇《程序员学英语》的文章出发,结合在西雅图生活半年多的亲身经历,分享了一系列面向程序员的英语学习新感悟。核心观点是:英语提升的关键在于实用主义和环境融入,而非死记硬背。 具体建议包括:利用YouTube脱口秀培养兴趣,但建议从有字幕视频入手;主动适应各国口音,因为工作中遇到的英文本就多样,甚至母语非英语的同事使用简单词汇反而更实用;脱离字幕的过程虽艰辛,但可通过让字幕延迟加载等小技巧逐步训练。作者强调多用手机等设备接触不同声音媒介,比如听广播或模糊音频,以塑造语言感觉。 文中穿插了生动细节:远足时与路人闲聊地道寒暄、在乒乓球俱乐部用破碎英语表达意愿、麦当劳点餐时不懂“crispy or grilled”而事后Google、同事误将番茄酱说成“tomato sauce”竟让服务员现场炒番茄。这些例子都指向同一结论——主动沟通最重要,而且没人会因口音或语法嘲笑你,人们只关心表达的内容。 最终,作者鼓励程序员走出华人小圈子,融入本土生活,比如关注当地体育赛事,在自然互动中提升英语。这篇文章为

本机暂存
IT 2015-04-26 22:21:51 / 累计浏览 3,324

一个实例:为什么注释是愚蠢的

这篇文章讲的是代码注释在软件开发中的争议与价值。作者从自己早年认为“写注释是好习惯”出发,经过研读《代码大全》与《代码整洁之道》,观点发生了根本转变:冗余或解释性的注释往往掩盖了代码本身命名不佳、结构混乱的问题。 为了证明这一点,作者没有虚构例子,而是选取了微软开源的 .NET 框架中一个真实的路径分割方法进行重构演示。他一步步展示了如何通过将参数名 `path` 重命名为 `validatedFullPath` 来消除“假设路径已验证”的注释,以及如何通过提取方法、引入类结构等方式,将原本需要多条注释来解释的逻辑,转化为自解释的代码结构。 文章的核心论点是,真正优秀的代码应当像清晰的散文一样“会沟通”,程序员的精力应该投入到打磨可读性高的命名和结构上,而不是用注释来弥补代码的缺陷。它并非全盘否定注释,而是倡导一种更根本的编码哲学:追求代码本身的清晰,应是专业开发者的目标。

本机暂存
IT 2015-04-08 14:21:35 / 累计浏览 1,784

classmethod和staticmethod的区别

这篇讲的是Python里两个容易混淆的修饰符:`@classmethod` 和 `@staticmethod`。作者从一次读代码的经历出发,梳理了二者在声明方式上的关键区别。最核心的差异在于,`classmethod`的第一个参数会隐式传递类本身(通常命名为`cls`),而`staticmethod`则完全不需要这个类参数。 虽然两者都能通过类或实例调用,但文章建议从编程习惯上,最好都用类名来调用,以清晰地表达意图。作者还指出,`staticmethod`更像是为了代码组织而放在类里的模块级函数;而`classmethod`则具备被子类重定义的能力,这在需要实现工厂方法等场景时非常有用。 文章最后也顺带厘清了类变量(属于类对象)和实例变量(属于实例对象)的区别,帮助读者建立更清晰的类作用域概念。对于想写出更地道、更易维护Python代码的人来说,理解这两个修饰符的适用场景很有帮助。

本机暂存
IT 2015-04-08 00:05:30 / 累计浏览 9,623

你真的了解try{ return }finally{}中的return?

这篇文章从论坛上的一个经典问题出发,探讨了Java中`try`块内的`return`语句与`finally`块交互时一个看似反直觉的行为:为什么一段简单的代码最终返回的是2而不是3? 作者没有停留在表面结论,而是层层深入,像侦探一样剖析了整个执行流程。文章首先抛出了一连串关键问题:`try`中`return`后`finally`还会执行吗?执行顺序又是什么?接着,作者查阅了Java官方教程和JVM规范,明确指出`finally`块总会执行,并且是在方法实际返回控制权之前执行。为了验证这一点,文章通过IDE的调试模式,逐帧展示了变量`x`如何从1变为2,再在`finally`中变为3,最后却返回2的全过程。 真正的谜底藏在JVM的底层机制里:当执行`try`中的`return ++x`时,JVM会先计算返回值(即2),并将其保存在局部变量中,然后再去执行`finally`块。`finally`执行后,方法最终返回的是之前缓存的那个值,而不是被`finally`修改后的当前变量值。文章最后甚至通过分析字节码指令来巩固这一结论。对于任何想透彻理解Java异常处理与返回值机制细节的开发者来说,这篇文章都提供了一次清晰而深入的“解剖”示范。

本机暂存
IT 2015-02-26 22:21:24 / 累计浏览 5,644

让邮件飞一会儿

这篇讲的是,很多程序员每天都会遇到但未必认真思考过的场景——工作邮件。作者从开发经理发来的一封紧急邮件切入,探讨了邮件这种“又爱又恨”的沟通工具。他指出,邮件的核心优势在于其非实时性,既避免了直接打断他人工作,又能留下清晰的文字记录。 文章将邮件按重要性分为紧急、重要和一般三类,并给出了明确的应对策略:紧急问题需立刻处理,重要事项可在完成手头任务后详细回复,而一般通知则仅需了解。针对如何高效回复邮件,作者提出了几个实用技巧:比如在邮箱中用颜色标注重要发件人,避免频繁查看邮件打断心流,以及由上级统一回复涉及需求或进度的邮件。 作者认为,写邮件也是一门艺术。关键在于将其视为高效沟通的工具,而非工作的“累赘”。编写时应语句通顺、表意清晰、仔细检查,确保信息准确传达。掌握这些邮件处理的“学问”,能帮助我们更好地管理精力,让工作流程更加顺畅。

本机暂存