30no2's Blog.

我编程我快乐

字数统计: 7.3k阅读时长: 24 min
2020/05/14 Share

#

一、选择市场

1
作为软件开发人员,用这种投机取巧的方式来编程显然不是什么好主意。但是很多人正是让偶然来决定职业道路上的各种选择。我们应该在哪种技术上投资?应该专注于哪个领域?是英国扩展知识面,还是深入学习一门学问?这些问题都是值得我们细细斟酌的。

1、稳定型还是技术型

在有目的地选择投资哪种技术和领域时,风险收益平衡是一个很重要的权衡因素。
1
选择是把双刃剑,决定权还是在你手机。

2、供应和需求

1
主流外包公司不会着手新技术,他们等技术服务市场平衡,然后再用极其廉价的编程成本打入这个市场。
1
从供求规律中,我们可以学到重要的一点——需求的增长会加剧价格的竞争。
1
我需要做的是了解行业中哪些高需求技术已经被使用,但是还没有流入外包市场中的技术。思考多久才能为相应市场提供服务。这个时间就是市场不平衡阶段。

3、只会编程是不够的

1
如果你想站稳脚跟,必须要深入了解你所处的领域
1
你的行业经历应该成为你的重要才能。
1
或许你是一个程序员,但是如果你能用客户所处行业的专业语言与他们交流,那这就是一项非常重要的技能。

需要在所处的行业中,沉淀下来。

1
与业内人士吃饭,并了解他们如何工作的。
1
看行业内杂志,了解大事件和专题

4、做团队中最差的

1
试图做团队最差的可以让你不再小看自己,可能你的能力应在在甲等乐团演出,但你自己确认为在乙等乐队。你清楚的知道自己不是最好的,就不会担心别人发现你不是最优秀的。而事实上,你尝试做最差的,但你并不是。

5、在思维上投资

1
如果在一种新的还未稳定的技术上花费时间和精力,就会显得很愚蠢。特别是如果你之前并没打算开发的技术。
1
尝试去学习一门新的语言,换一种思维方式。

6、不要听从父母

1
出于担心的职业规划不会让你走向成功,而是会局限你的发展。没错这条路很安全,但毫无乐趣可言。
1
在职业道路上,需要一些有目的性的冒险。别让恐惧征服了你。如果在工作中没有感到乐趣,那你就不可能出色的工作。
1
等我老了,驾鹤西游之前,回想过去我希望我会说“上帝,这辈子真是险象环生啊!”而不是“嗯,这辈子过得还算稳稳当当。

7、做一名通才

1
怎么才能成为这些生意人遇到困难时首先想到的”英雄呢“?答案就是--能够解决一切可能出现的难题。
1
如果你想在这个行业站稳脚跟,那我建议你要成为通才。

8、成为一名专家

1
已经处理过我们工作中可能遇到的80%的问题,并且拥有足够的知识来应付另外还未出现的20%的问题。不仅可以处理高水平的抽象,同时应该了解实现高端抽象的低端细节。

9、切记孤注一掷

不要把自己的职业规划放到一门特定的技术上,我们应该把他当作一门生意来做。如果说必须要一心一意投资在一项特定的技术里面的话,考虑开源项目。而不是选择商业性质的。

1
你应该下载一个开源的JBoss或者Geronimo服务器,留出时间来学习这些服务器的内部是如何运转的,而不是学习如何操作。

10、热爱它,不然就离开它

1
如果你想在工作中做出成绩,那么就必须对工作充满激情;如果不在乎这份工作,那后果会显现出来。
1
一门技术或者一个商业领域可能会使你感到兴奋;相反,或许是某一特定技术或者商业领域拖累了你。也许你更适合一个小团队或者大团队,而你处在不适合的组织里;或者是在挑选偏呆板或者偏灵活上出了差错。不管什么原因,想想自己到底适合什么。
1
短时间内你可能可以伪装,但是缺少热情总会影响你和你的工作。

不要用自己的技术来定位自己,而是用我做过的或者是将要做的事情来定位自己,技术只是一种做事的方法。

二、在产品中投资

如果想要拥有一个有竞争力与众不同的产品,就必须要在这个产品中投资。商业中,有想法有天赋的人很多。只有在产品中投入心血,汗水,眼泪和资金,才能使它真正具有价值。

11、学习钓鱼

Don`t wait to be told. Ask!

12、学习行业是如何运转的

只有了解一个行业后,你才能创造性的有所建树。

1
了解你公司的财务运作可以让你做出有意义的转变,而不是茫然无知地专注于某一事情,却主观的认为这样就是对的。

13、寻找良师

可以依赖别人,但要确保这个人是靠的住的。

1
良师还是值得信任的朋友,他们可以观察并判断你做出的决定和取得的进步。

14、做一名良师

1
要想真正学点东西,就要试着向别人传授这些知识。

15、练习,练习,再练习

在极限处练习

1
训练思维敏捷和提高即兴编码技术的好方法是通过自我限制的方式来练习。

书中推荐网站:

  • Topcoder.com —— 编程竞技网站
  • Code Kata —— 《程序员修炼之道》Dave Thomas 创造的小练习。

16、做事的方法

1
一个成功的软件开发步骤。必须是由使用它的人来参与定制的。

方法论听上去很空洞,但是对软件开发本身很有帮助,即使研究你不需要做的事情。如果你很擅长软件开发,那你就拥有了一个有力的证据证明你的团队如何才能更好的工作。

1
找一个能够设计出软件开发步骤的人要比做这个软件的人要难的多。

项目管理相应的网站:

1
唯一找到项目管理与软件管理混合方法的办法是研究可用的方法论,从真正的实践中不断提炼总结。

17、站在巨人的肩膀上

从现有的程序中得到领悟——用现有程序来反思自己的程序

设计模式相应书籍的推荐:

  • Design Patterns —— 《设计模式:可复用面上对象软件的基础》
1
2
3
当你读这些程序时,你会发现某些你可能永远都不会去实践的工作,甚至你想都没想过的。
他为什么这么做?他是怎么想的?
即使你读到的是不怎么样的程序,通过批判的角度研究它,你也会有不获。
1
当你以一种批判的角度去看这些程序时,你就会开始培养自己的品味。

18、在工作中,将自己自动化

  • 封装一些经常使用的类库。不用考虑效率,只需要确保这个能节省时间。想办法提高生成代码的抽象等级。
  • 研究模型驱动架构。(MAD)并在日常生活中来应用MAD概念。

三、执行

1
在成功的道路上,你的能力在没有得到实践之前不能带你走太远。

19、就是现在

1
根据帕金森定律:工作会自动膨胀到占满所有可用的时间。

随时问问自己:现在我能做些什么。

20、读心术

在与经理或者客户交流时,认真倾听分析他们说过的话。尤其是他们不经意间表达出要做的事情,即使他们自己有时候都没有意识到。将这些事情添加到代办事情中去,看看是不是可行。如果执行起来不是很困难,那就去做。

风险:

  • 做错了怎么办?先从小事做,尽量用业余时间完成。
  • 如果做了,会影响原有的系统,并且恢复起来很难,就不要做了。如果改变带来的影响很大,需要做商业决定了,而这并不是一个程序员能权衡的。
  • 也许客户提出了某些改动,你按照他的要求变化了,但出乎意料的弱化了系统的功能,这并不是客户想看到的。所以在做之前一定要特别小心。

在做项目之前,要先试着做些笔记,试着记录下客户想要你做的事情。

然后在接到项目后看看自己命中了多少。

21、每日成绩

1
你最后一次做分外的事是什么时候?你的经理知道么?你又怎么能让他知道你做的工作呢?

每天要有可汇报的成绩

1
制定目标(每日、每周或者无论什么你能做到的)并且记录下来可以彻底改变你工作中的表现的工作内容。当你开始追寻骄人的业绩时,你自然而然地会根据你工作领域的商业价值,对你的行为做出评价,将工作花费优先顺序。

测试:

  • 流出半小时,用一只铅笔,一张纸安静的坐在无人打扰的地方,想想哪些时一些吹毛求疵的小问题。哪些烦人的任务,确要耽误整个团队好几分钟。却没人来有精力完成,记录下来
  • 现在的项目中哪些时可以自动完成的,确要手动完成。。。

22、别忘了你在为谁工作

确保你的目标和工作与你公司的目标一致.

1
要想直接对公司业绩造成影响就像是想把大海里的水煮沸,可以把整片大海海水分解成一个一个的可以煮沸的小水坑。
1
你做的事情虽小,但却是在为完成整个公司的目标出力。这就是你工作的目标,也是你工作的意义所在。

经理的成功就是你们的成功

测试:

  • 安排一次与经理的会面,目的是了解经理对整个团队下个月,下个季度以及来年的目标。

23、安分守己

1
你把所有时间都花费在想要得到的某种东西,可是欲望同满足时对立的。
1
比起只专注在目标上的做法,专注于现在的工作会使你离最终的目标更近。

24、今天我能把工作做到多好?

1
越糟糕的环境越能激发出我们最优秀的一面
1
问你自己,“我今天能把工作做到多好?”你发现你会更喜欢自己的工作,你的工作也会喜欢上你。

25、你的价值是多少

如果你创造的价值是你现在工资的两倍,那你公司还是会破产。因为公司在你身上的投入不只有工资,还有保险等等福利,这些不是在工资中体现的,粗略的讲公司在你身上的投入应该为工资的两倍。记住这个数字:2倍的薪水,在达到这个目标前,千万不要放弃。

26、一桶水中的鹅卵石

1
一个人的离开对公司来说造成的影响非常小,即使是这个员工处在非常重要的职位,造成的影响也会非常小。

永远不要高枕无忧,也许哪天就会被公司辞掉,可能就是今天。

小心!别让成功冲昏了头脑。

1
你越是成功,就越有可能犯下重大错误。当你得到很多肯定时,就会很少质疑自己的决定。你使用方法屡试不爽的时候,就可能会忽略会有更好的方法。你开始变的傲慢。人一旦傲慢,就会产生盲点。越认为自己无可替代,就越有可能被取代。
1
想要让自己不可替代,就要建立一种友好的工作关系。

写代码要尽量把一些别人不容易理解的加上注释,说明,看起来更友好的代码,并分享给你的同事。

27、爱上维护

维护也可以成为自由和创造的沃土

1
2
评估,改进,评估——在你所维护的所有重要应用程序和代码中,把所有可以评估程序质量的元素列举出来。
从中选择最重要的特征,开始对它进行评估。在有了一个基本的测量准线后,确定一个可实现的目标,改进这个应用程序表现以达到这个既定目标。

28、8小时的激情燃烧

1
工作的时候不容一丝松懈,高度集中,以至于连续工作的时间无法超越8小时。
1
当工作的时间非常宽裕的时候,工作的时间价值就会降低。

好好规划你的工作时间。减少工作时间,你的收获会更多。当你离开工作一段时间后,才会更喜欢工作。

29、学习如何失败

每个错误的音调离正确的音调不过一步之遥

  • 发现问题,第一时间提出了,不要试图隐瞒,越早发现错误,造成的问题会越少
  • 接受批评,即使不完全是你的问题,你也要承担责任后继续工作
  • 提供解决方案。如果你没有想到解决的办法,就提供一份有计划性的进程。

  • 寻求帮助。拒绝别人的帮助,只会使情况更糟糕

充满压力的时候是赢得忠诚的最好时机。

1
公司对错误处理方式的不同,会产生不同的结果。问题处理得好,会使客户对其产品更加忠诚,甚至比碰到问题之前,更加信任这家公司。要是处理不好,那就摧毁了客户的信任。工作中犯错误的时候,要时刻谨记客户的这一心理。

30、说”不“

清楚的知道自己无法做到却还依然做的承诺,最不容易实现。

1
说”是“是个上瘾却具有毁灭性的习惯。”能够胜任的态度“和歪曲某人的能力有很大的不同。后者不仅给自己造成麻烦,也会给你所承受的对象制造麻烦。
1
当我的团队无法完成某项工作时,有勇气说”不“,那当他们说”是“的时候我会更信任他们。

31、不要恐慌

1
现实生活中,不管做出怎样完美的计划,我的职业生涯还是有一连串的突发事件和灾难。

在惊慌之前克制住它,事后分析自己对问题时的反应。每天用日记记录下使你惊慌的事情,哪怕是一点点。也不要放过。每周回顾上一周的日记。分析是否值得恐慌。这样反复练习后,会发现再遇到事情,就会理智分析。

32、说出来,行动,展示

1
从不做出承诺最容易导致一事无成。

状态报告可以推销自己。

完成一轮计划后,与你上司讨论你的计划。一开始按照周与上司交流,你觉得适应了这个过程之后,按照30天,60天,90天时间安排,把长期计划按照提案的方式陈述给你的领导,并要求他们反馈。时间长了,你会发现哪些项目经理不会提出异议,哪些他们会提出较多异议。经理对你提出的计划也会越来越少。

1
你的上司希望你具有独立性和归属感。制作计划,执行计划以及与上司就计划进行沟通,都会帮助你找到工作的独立性和归属感。

如果让我开选择两种能使我取得进步的方法,我会选择失败和模仿。

四、推销。。。不仅仅是迎合

1
2
很多软件开发人员,特别是哪些自以为是的开发人员,都认为自己的能力在同行和上司眼中是不证自明的,他们可以自然的将这个谎言掩藏于虚构的道德逻辑中:不显示自己的能力,是因为自己过于谦虚,炫耀自己的能力会像是阿谀奉承。有自尊心的程序员是不会在老板面前讨好卖乖的。
事实上,这都是他们恐慌的接口。
1
掩藏你的能力都是非常愚蠢的。

宣传自己有两个目标,让别人知道你的存在,以及让他们知道,当你遇到难题时,你是那个可以解决问题的人。

33、不要忽视感觉

1
你应该在乎别人的看法,别人对你的认识是现实,好好解决它。
1
如果你知道你比哪个同事出色,那这点应该表现在你的工作表现评价,工作评分和工资中。
1
当你明确地了解他人判断你的因素后,你就会更加明确如何让他们满意。

找出身边的人,分组,然后罗列出你的哪些特质会影响他们对你的感觉,根据表格做出改变。

34、探索向导

他们寻找的是可以帮助他们完成项目的人。

决定升值的人员安排的时候,你最有力的支持者就是一个无法离开你的客户。

找一个陌生的,自己知之甚少的境况。感受下你会需要队友如何与你沟通。

35、学会沟通,善于写作

1
写作能力不但非常必要,并且还很紧缺。
1
沟通,特别是以文字的方式进行沟通,是你所有绝妙想法必须要通过的瓶颈。你就是你要解释的内容。

开始记录开发日记,每天写一点。记录你做了什么工作。解释你的设计决定,检查棘手的技术和专业决策。

36、到场

1
在工作中,近距离的接触是一种优势。
1
通过面对面的互动,我们不仅提高了工作效率,增进了沟通,还形成了更加紧密的人际关系。

37、适当的言语

用行业术语推销你的成就。

练习:

  • 罗列出你近期完成的工作,并写出每项工作的商业意义。
  • 准备好你的“电梯演讲”

38、改变世界

1
如果你想在高消费城市里做一名软件开发师,你就必须带着任务来上班。你必须要做出变化,这种变化不只是你自身或者是你工作的改变。你所作的改变必须让你的团队、组织或者公司看到。
1
如果你不知道要做的改变是什么,那你就没有在做任何改变。如果你没有主动让自己获得承认,那你就没有获得承认。

39、让人们听到你的声音

1
把目标放在更远一些。不要把自己局限在某一特定公司中的程序员————毕竟,你不太可能永远在一个公司里工作————因此要把你当作一个行业的人员。
  • 第一步: 阅读网络日志。挑选几位喜欢的技术类书籍的作者,看他们的网络日志。订阅并记录。

  • 第二部: 写自己的网络日志。要抱着你最喜欢的杂志写专栏文章的态度,撰写网络日志。随着你写作技巧增加,你也会越来越自信。

  • 第三步:将你写的网络日志在社区网站,杂志等地发表。人际关系也会随之扩展。

练习:

  • 创建网络日志
  • 列出可能的网络日志话题,不要局限在宏大的观点上。尝试10到20分钟就可以写出相关文件的小想法。

40、创建自己的商标

创建商标分为两部分:认知和尊重。创立自己id商标,让他们认识它,然后确保与之关联的都是积极的特征。

你的名字就是你的商标,竭尽所能捍卫你的商标。别让自己的行为回了它的名誉。你的商标就是你的一切。

41、发布你编写的程序

如果已经有公司在使用你开发的软件了,那么找工作将是多么容易的事。

1
尽管很多开发员这样做只是出于兴趣和享受过程,但诱惑因素还是存在的。他们在某个团体中扩展自己的社交圈;在为自己树立名号;在此行业中建立自己的名誉。或者这些都不是刻意为之,但是在这个过程中,他们将自己推向了市场。

42、变为卓越的能力

1
想要卓越,就必须和周围的人大相经庭。发布成功的开源软件,写书和撰写文章以及在研讨会上演讲都可能会提高你变得卓越的能力。

仅仅做人群中最好的是不够的。要成为人们谈论的焦点。

43、建立关系

恐惧感使我们无法接近专业人士。

1
与那些聪明、人际关系好的、能教你东西或者可以帮助你找到工作的人结识,是取得进步的最好的办法,但是我们却没有胆量尝试与他们结识。
1
只是解释你的难处是不够的,你应该更深的探索管理人员这样做是由哪个商业因素造成的。久而久之,你会学到更多这个商业领域的知识,也会更好的分析、判断待解决的难题。这一能力再加上你的专业技术,就会使你从一个总是说“不”的人变成一个公司管理人员不可或缺的合作伙伴。

五、保持技术领先

再自己从事的领域里面,我们需要随时保持警惕。如果你在一段时间停滞不前,就会有突然间就过时的危险。这种危险会悄然而至。给你来个措手不及。

44、已经过时的技术

今天热门的技术到明天就有可能成为过时的垃圾了。

1
必须要认识到,即使你现在处于当今潮流的尖端,也及有可能已经在下个潮流之后了。时间就是一切。学习之前要先东东脑子。
1
向前看,清楚的知道你的技术发展方向,是盲目和有远见之间的区别。

每周找出时间研究尖端技术。每周至少找出2个小时来研究新科技,学习技术,并尝试。

45、你已经失去工作了

1
你已经失去工作了,可能你每个月还是领到了薪水;可能你依然在为你的公司创造价值;可能你还是可以使你老板非常高兴。但是,你已经失去工作了。
1
如果你的工作是编程,别把自己当成一名程序员。继续工作,但是不要满足与你的工作。永远不要把自己的身份定位于程序员,或者设计师,或者测试员。

有理想是好事,但不要对遥远的未来抱有太大的希望。

尝试换一种身份来完成你的工作。你会发现你的工作发生了变化。

46、没有终点的道路

1
你的职业生涯也是一样,最重要的部分不是晋升或者加薪,而是向这些发展方向努力工作的过程。

47、给自己做一份蓝图

我们的工作需要一份蓝图,用来判断你是否在不断发展的依据。

1
每天你出入相同的办公室,从事大量的相同工作,周围环境没有任何变化。所有你需要在合理的范围内做出一些标记,当你到达这些标准的时候,你就知道你不是停滞不前的。蓝图的“功能”就是这些标记。
1
尽管学些不同的技术是绝对正确的——这会拓宽你的思想,但是,想想你的技能包会向自己展示什么样的前途,没有蓝图你的前途就会结构松散,你可能会迷失方向。

练习:

​ 做出蓝图之前,罗列你所处的位置,清楚的列出你职业发展的时间表。表示出你从哪里开始,以及每个阶段你的技术和工作是什么。注意哪个阶段你在持续进步,又在哪个阶段取得了重大进步。

48、要注意观察市场变化

1
市场在不断的变化,稍不留意就会赔钱或者错失赚钱的机会。
1
你必须时刻细心留意。注意技术方面的新闻——不管是商业上的,还是纯技术的。要留意技术达人,观察他们热衷干什么,那你就能够大致了解到什么技术将会成为热门。

49、镜子里的胖子

和体重一样,你整天面对自己,不知道自己是胖了还是瘦了,职业也是一样,并不了解自己的技术和以往一样处于尖端时代。

1
找到一个可信赖的第三方,是衡量进步的简单方法。

别让过时悄悄降临到你身上,就像你的裤子突然紧身了一样。

50、南印度捉猴陷阱

当你过于坚信某事的价值时,就会无法客观的来评判它,这既是价值僵固。

51、避免瀑布型置业计划

从菜鸟——软件架构师——经理——总监,这条道路不断上升,开始觉得这条路并不是自己喜欢的。

1
如果每个人在项目一开始就知道他们要做的每一个细节,那这种计划性和精确性会产生出缜密并且品质受控制的软件。但是大多情况下,人们并不知道每个细节,项目越大,就很难规范细节,这一过程就是瀑布过程。

改变职业道路。尝试敏捷开发方法,特别是极限编程。

1
树立远大的目标,在实现目标的道路上,根据情况不断变化,从实践中学习,不断改变你的目标。

52、每天都有进步

即使是一点进步,你也应该感到高兴。

1
如果在改善自己的道路上,美一天都比昨天做出的改变,你就会发现--拥有卓越的职业生涯——这个目标变的越容易达成,二不再像汪洋大海一样没有边际。

列出你要做的复杂困难的改善——可能是个人问题,也可以是职业问题。

53、独立

如果你可以隐藏在平庸的盾牌之后,就会丧失变得卓越的动力。

1
成为一名独立的承包商还会迫使你如何推销自己,同时在你啊专注的领域中检验你的选择。你必须走出去,主动去找客户。一旦你找到了客户。你还必须要说服他们,让他们相信你的价值。
1
试着跟随着自己的兴趣,看看会发生什么?结果或许会让你大吃一惊!

结束语

软件开发极具乐趣!

软件开发的职业道路,最重要的一点不是你以什么为生,或者你得到了什么,最中国要的是你如何接受这一切。这是一种心里活动。满足,就像我们的职业选择。是应该去追寻并且认真选择决定的。

CATALOG
  1. 1. 一、选择市场
    1. 1.1. 1、稳定型还是技术型
    2. 1.2. 2、供应和需求
    3. 1.3. 3、只会编程是不够的
    4. 1.4. 4、做团队中最差的
    5. 1.5. 5、在思维上投资
    6. 1.6. 6、不要听从父母
    7. 1.7. 7、做一名通才
    8. 1.8. 8、成为一名专家
    9. 1.9. 9、切记孤注一掷
    10. 1.10. 10、热爱它,不然就离开它
  2. 2. 二、在产品中投资
    1. 2.1. 11、学习钓鱼
    2. 2.2. 12、学习行业是如何运转的
    3. 2.3. 13、寻找良师
    4. 2.4. 14、做一名良师
    5. 2.5. 15、练习,练习,再练习
    6. 2.6. 16、做事的方法
    7. 2.7. 17、站在巨人的肩膀上
    8. 2.8. 18、在工作中,将自己自动化
  3. 3. 三、执行
    1. 3.1. 19、就是现在
    2. 3.2. 20、读心术
    3. 3.3. 21、每日成绩
    4. 3.4. 22、别忘了你在为谁工作
    5. 3.5. 23、安分守己
    6. 3.6. 24、今天我能把工作做到多好?
    7. 3.7. 25、你的价值是多少
    8. 3.8. 26、一桶水中的鹅卵石
    9. 3.9. 27、爱上维护
    10. 3.10. 28、8小时的激情燃烧
    11. 3.11. 29、学习如何失败
    12. 3.12. 30、说”不“
    13. 3.13. 31、不要恐慌
    14. 3.14. 32、说出来,行动,展示
  4. 4. 四、推销。。。不仅仅是迎合
    1. 4.1. 33、不要忽视感觉
    2. 4.2. 34、探索向导
    3. 4.3. 35、学会沟通,善于写作
    4. 4.4. 36、到场
    5. 4.5. 37、适当的言语
    6. 4.6. 38、改变世界
    7. 4.7. 39、让人们听到你的声音
    8. 4.8. 40、创建自己的商标
    9. 4.9. 41、发布你编写的程序
    10. 4.10. 42、变为卓越的能力
    11. 4.11. 43、建立关系
  5. 5. 五、保持技术领先
    1. 5.1. 44、已经过时的技术
    2. 5.2. 45、你已经失去工作了
    3. 5.3. 46、没有终点的道路
    4. 5.4. 47、给自己做一份蓝图
    5. 5.5. 48、要注意观察市场变化
    6. 5.6. 49、镜子里的胖子
    7. 5.7. 50、南印度捉猴陷阱
    8. 5.8. 51、避免瀑布型置业计划
    9. 5.9. 52、每天都有进步
    10. 5.10. 53、独立
    11. 5.11. 结束语