热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

程序员生涯三部曲其一:编码阶段

都说海阔凭鱼跃,又有多少鱼能跃出大海?都说天高任鸟飞,但真正能一飞冲天的,也不过是寥寥数鹰而已;在IT圈里流浪的程序员,当青春逝去、渐至而立之年时,又有多少人黯然退出?30岁,似乎宣告了程序人生的终结。从学会写第一个Basic程序起,已过去了15年,我也曾为30岁烦恼过。

都说海阔凭鱼跃,又有多少鱼能跃出大海?都说天高任鸟飞,但真正能一飞冲天的,也不过是寥寥数鹰而已;在IT圈里流浪的程序员,当青春逝去、渐至而立之年时,又有多少人黯然退出?30岁,似乎宣告了程序人生的终结。

从学会写第一个Basic程序起,已过去了15年,我也曾为30岁烦恼过。近日《神雕》热播,杨过在独孤剑圣的剑冢中发现宝剑若干,见证了独孤剑圣在人生不同阶段对剑道的领悟。忽有所感,联想起古圣今贤的论述,结合自已这些年来的经历,不禁豁然开朗。

程序之道,在于悟,悟透表象后面的真相。程序人生,大致可分为三个阶段:

  • 编码阶段:凌厉刚猛,无坚不摧,弱冠前以之与河朔群雄争锋
  • 设计阶段:重剑无锋,大巧不工,四十岁前恃之横行天下
  • 思想阶段:四十岁后,不滞于物,草木竹石均可为剑。自此精修,渐进于无剑胜有剑之境

本文针对普通程序员的实际情况,对这三个阶段进行解说,并给出了“升级”的秘笈。所述观点,不适合IT狂人和天才——因为我不是。

编码,技巧作先锋

1. ? 阶段释义

老张:小王,昨天讨论的那个EJB接口,已经实现了吗?

小王:我已经实现了,现在客户端可以通过EJB与服务器进行通信了。

上述对话,取自于某项目组的会议纪录,老张是这个小组的开发经理。小王毕业一年,在项目组中主要从事代码编写工作。每天上班,老张会给小王分配当天的工作,告诉小王有哪些Java接口,需要写多少个Java类,具体有什么要求等等。小王按照要求,写完这些类后,交给老张,一天的工作就完成了。衡量小王的能力的标准是,看他是不是能做好具体的事,即“我能做(I can do it)”。

小王是典型的第一阶段中人。该阶段中人,通常是入门三年内的,初窥门径,斗志昂扬。在网上常看到的“VB好还是DELPHI好”“.Net好还是J2EE好”等贴子,多数都是由这个阶段的人提出,人气值剧旺(这是合理的,符合人才的金字塔结构),往往争吵得头破血流也不罢休。笔者也曾因此与同班一MM大吵出口,如今回想,深感当年之可爱。独孤剑圣弱冠前,手持无名利剑,凌厉刚猛,与河朔群雄争锋。程序员也一样,手持“编程语言”利剑,以“面向对象”为招式,东征西战,编出代码无数。

2. ? 应该做的事

找一家有正经事干的公司,打一枪换个地方的不要。这是重中之重。“蓬生麻中,不扶自直,白沙在涅,与之俱黑”,现阶段的程序员,是无力改变现状的。如果你所在的团队不能按正规方式进行较大型软件产品的开发,那你所能学到的东西就会少许多。如果是正规开发团队,而且有前辈愿意尽心尽力地教你,那就是捡到宝了,不给钱都行。

从技术角度,这个阶段的人,关注细节是必修课,追求的是技巧这个层次。“如何才能用最少的语句实现表达式求值”“i++与++i有何区别”等是最关心的问题。当技巧的积累达到一定程度时,应付日常工作将比较轻松,此时信心爆棚,最喜欢的口头禅是“天底下没有编不出来的程序”,技术特点是对某种编程语言(如Java、C#)非常熟悉,甚至达到“回字有四种写法”的境界。凡事必追根究底,有股子“语不惊人死不休”的蛮劲。

笔者没有任何贬义,相反,是褒义,因为这是必须经历的。佛云:“既未入迷,何言解脱?”如果你是工作三年内的同行,那么应以“入迷”为荣。上学时,老师常教导我们“先把书读厚,再把书读薄”,只有“深入”,才能“浅出”,也是这个道理。

3. ? 不应该做的事

年少气盛,固然可爱,但若因此而鼻孔朝天,则是大大的不妥了。你的许多同事,API没有你熟悉,编程也没有你快,但他们能为企业创造的价值却可能比你大(为什么?看下文)。时下流行“态度决定一切”,此时的你,应以低姿态为主,傲气会让你短视。

“技术代表一切”可能是你的信仰。但你的老板可能对技术根本不感兴趣,老板关心的是你能为公司创造多大的价值。许多黑客甚至养不活自己,因为单纯的自我陶醉式的攻击、骚扰、破坏并不能创造价值,通常都是在改行后(例如当安全顾问),他们的技术才能用于创造价值,才能使自己过上好日子。许多黑客则干脆是双重身份,平时从事着另一份职业。所以,如果想挣更多的钱,那你就不能迷信技术(屠龙之技有何用?),而是要审视你所做出的贡献。许多牛人觉得自己水平很高,为什么老板就是不给加薪?反思一下,自己给公司挣了多少钱吧。

4. ? 局限性

  • 锋芒有余,韧劲不足。该阶段的人,锐气太盛,遇到挫折后容易气馁,轻言成败往往是他们的缺点。(什么?没有锐气?是谁,是谁把你招进公司来的?)人不可有傲气,但不可无傲骨,傲骨体现在面对困难上。要勇于用抽茧剥丝的精神,去磨,去啃,相信吧,只要你的困难不是想发明质能方程,最终一定会被你搞定的。事实上,你遇上的问题,大多数都可以通过Google、百度搜出答案来。
  • 与具体的语言或编程工具绑定得比较紧,受语言的限制较大。
  • 需要良好的体力。人到中年,体力上往往拼不过刚毕业的学生,这就是所谓的“程序员30岁问题”的原因。我有一些朋友,已过而立之年,却还在苦苦寻找编码的职位。虽然我很同情,但爱莫能助,如果这种情况继续下去,“寻寻觅觅,冷冷清清,凄凄惨惨戚戚”将是必然的结果。

朋友,赶快升级吧。

5. ? 进阶指南

  • 多记多写。好记性不如烂笔头,把各种想法写下来,把经典的代码摘录下来(最好用源码工具来管理,推荐VSS),有价值的东西,还可以发表在博客中(俺们那个时候苦啊,网络不发达,呕心沥血之佳作,却只能孤芳自赏),这些就是你的财富,在关键时刻拿来就能用;
  • 别忘了挖井。不知是否听说过两个和尚的故事,原文不在此粘贴了,大意是一个和尚天天挑水,另一个除了挑水外,还在寺庙附近挖井。若干天后,第一个和尚还在挑水,第二个和尚已经挖好井,不用再挑水了。编码好比挑水,作为本职工作,自然是要卖力地挑,好争胜的,不妨跟人比比谁挑得多。但在业余时间,可以多看看《软件工程》、《设计模式》、《人月神话》、《极限编程》、《UML》……
  • 由外而内,勤修内功。什么编程啦,什么算法啦,统统都是外功。外功练好了,内功也能跟着长进。内功是什么?很多。现阶段最需要的是:灵活的头脑、关注细节的态度以及与人为善的处世技巧。

灵活的头脑,使你能快速学习新东西,这是最基本的。

关注细节的态度让你能“象福特一样捡起地上的纸片”(如果不知道福特的故事,上Google搜去吧),工程实施现场出现的问题,多数都是由于编码人员的疏忽;经典错误“空指针”和“数组越界”,你检查了吗?几十年了,“缓冲区溢出”仍然是黑客的最爱。

与人为善的处世技巧,使你有良好的人缘,前辈愿意帮助你,晚辈愿意投靠你,领导愿意提拔你,哇,好处多多,实惠多多……能否进阶,就靠这了。

(常云:先做人,后做事。无论是程序员还是艺术家,这个道理都是普遍适用的,贯穿人生的各个阶段——而这恰恰又是刚参加工作、涉世未深的新人们容易忽略的。所以在此提出,下文就不再赘述了。)

6. ? 阶段小结

  • 适用人群:工作三年内
  • 输? ? 入:设计好的类、接口和算法
  • 职? ? 责:按要求编写类和接口的具体实现代码
  • 输? ? 出:具体的代码
  • 阶段目标:我能——I can do it
  • 技术特点:注重技巧,对具体的编程语言非常熟悉
  • 胜任职位:软件工程师、开发工程师
  • 升级秘笈:多学习软件工程、设计模式等与具体编程语言无关的知识
  • 参考薪水:¥6000以下(仅供参考)

本文地址:http://www.nowamagic.net/librarys/veda/detail/1545,欢迎访问原出处。


推荐阅读
  • 本文探讨了如何在日常工作中通过优化效率和深入研究核心技术,将技术和知识转化为实际收益。文章结合个人经验,分享了提高工作效率、掌握高价值技能以及选择合适工作环境的方法,帮助读者更好地实现技术变现。 ... [详细]
  • 本文介绍了多个关于JavaScript的书籍资源、实用工具和编程实例,涵盖从入门到进阶的各个阶段,帮助读者全面提升JavaScript编程能力。 ... [详细]
  • 360SRC安全应急响应:从漏洞提交到修复的全过程
    本文详细介绍了360SRC平台处理一起关键安全事件的过程,涵盖从漏洞提交、验证、排查到最终修复的各个环节。通过这一案例,展示了360在安全应急响应方面的专业能力和严谨态度。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 网络攻防实战:从HTTP到HTTPS的演变
    本文通过一系列日记记录了从发现漏洞到逐步加强安全措施的过程,探讨了如何应对网络攻击并最终实现全面的安全防护。 ... [详细]
  • 本文深入探讨了Linux系统中网卡绑定(bonding)的七种工作模式。网卡绑定技术通过将多个物理网卡组合成一个逻辑网卡,实现网络冗余、带宽聚合和负载均衡,在生产环境中广泛应用。文章详细介绍了每种模式的特点、适用场景及配置方法。 ... [详细]
  • MySQL 数据库迁移指南:从本地到远程及磁盘间迁移
    本文详细介绍了如何在不同场景下进行 MySQL 数据库的迁移,包括从一个硬盘迁移到另一个硬盘、从一台计算机迁移到另一台计算机,以及解决迁移过程中可能遇到的问题。 ... [详细]
  • 随着网络安全威胁的不断演变,电子邮件系统成为攻击者频繁利用的目标。本文详细探讨了电子邮件系统中的常见漏洞及其潜在风险,并提供了专业的防护建议。 ... [详细]
  • 网易严选Java开发面试:MySQL索引深度解析
    本文详细记录了网易严选Java开发岗位的面试经验,特别针对MySQL索引相关的技术问题进行了深入探讨。通过本文,读者可以了解面试官常问的索引问题及其背后的原理。 ... [详细]
  • 本文详细介绍了C语言中的指针,包括其基本概念、应用场景以及使用时的优缺点。同时,通过实例解析了指针在内存管理、数组操作、函数调用等方面的具体应用,并探讨了指针的安全性问题。 ... [详细]
  • 本文详细介绍如何通过修改配置文件来隐藏Apache、Nginx和PHP的版本号,从而增强网站的安全性。我们将提供具体的配置步骤,并解释这些设置的重要性。 ... [详细]
  • 本文深入探讨了HTTP请求和响应对象的使用,详细介绍了如何通过响应对象向客户端发送数据、处理中文乱码问题以及常见的HTTP状态码。此外,还涵盖了文件下载、请求重定向、请求转发等高级功能。 ... [详细]
  • 如何配置Unturned服务器及其消息设置
    本文详细介绍了Unturned服务器的配置方法和消息设置技巧,帮助用户了解并优化服务器管理。同时,提供了关于云服务资源操作记录、远程登录设置以及文件传输的相关补充信息。 ... [详细]
  • 本文探讨了如何在给定整数N的情况下,找到两个不同的整数a和b,使得它们的和最大,并且满足特定的数学条件。 ... [详细]
author-avatar
nissunshine
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有