登入帳戶  | 訂單查詢  | 購物車/收銀台(0) | 在線留言板  | 付款方式  | 聯絡我們  | 運費計算  | 幫助中心 |  加入書簽
會員登入   新用戶註冊
HOME新書上架暢銷書架好書推介特價區會員書架精選月讀2023年度TOP分類閱讀雜誌 香港/國際用戶
最新/最熱/最齊全的簡體書網 品種:超過100萬種書,正品正价,放心網購,悭钱省心 送貨:速遞 / 物流,時效:出貨後2-4日

2024年10月出版新書

2024年09月出版新書

2024年08月出版新書

2024年07月出版新書

2024年06月出版新書

2024年05月出版新書

2024年04月出版新書

2024年03月出版新書

2024年02月出版新書

2024年01月出版新書

2023年12月出版新書

2023年11月出版新書

2023年10月出版新書

2023年09月出版新書

『簡體書』程序员的自我修养

書城自編碼: 2986197
分類: 簡體書→大陸圖書→計算機/網絡程序設計
作者: 陈逸鹤
國際書號(ISBN): 9787302468080
出版社: 清华大学出版社
出版日期: 2017-04-01
版次: 1 印次: 1
頁數/字數: 200/200000
書度/開本: 16开 釘裝: 平装

售價:NT$ 353

我要買

share:

** 我創建的書架 **
未登入.



新書推薦:
传统文化有意思:古代发明了不起
《 传统文化有意思:古代发明了不起 》

售價:NT$ 199.0
无法从容的人生:路遥传
《 无法从容的人生:路遥传 》

售價:NT$ 340.0
亚述:世界历史上第一个帝国的兴衰
《 亚述:世界历史上第一个帝国的兴衰 》

售價:NT$ 490.0
人工智能与大数据:采煤机智能制造
《 人工智能与大数据:采煤机智能制造 》

售價:NT$ 440.0
未来漫游指南:昨日科技与人类未来
《 未来漫游指南:昨日科技与人类未来 》

售價:NT$ 445.0
新民说·逝去的盛景:宋朝商业文明的兴盛与落幕(上下册)
《 新民说·逝去的盛景:宋朝商业文明的兴盛与落幕(上下册) 》

售價:NT$ 790.0
我从何来:自我的心理学探问
《 我从何来:自我的心理学探问 》

售價:NT$ 545.0
失败:1891—1900 清王朝的变革、战争与排外
《 失败:1891—1900 清王朝的变革、战争与排外 》

售價:NT$ 390.0

建議一齊購買:

+

NT$ 1210
《 逆向工程权威指南 》
+

NT$ 368
《 代码整洁之道 程序员的职业素养 》
+

NT$ 1268
《 编译系统透视:图解编译原理 》
+

NT$ 573
《 重构 改善既有代码的设计 》
+

NT$ 324
《 编程珠玑(第2版·修订版) 》
編輯推薦:
★★本书以杂记的形式为大家分享关于国内程序员职业生涯、个人发展、编程中的实践与认知、乃至自学设计等方面的经验方法与思考感悟。★★对于程序员们来说,如何理解自己的职业与发展,如何看待自己的工作与生活等,这些比技术更加难的问题均在本书为读者解答。
內容簡介:
程序员作为一个职业、也作为一个群体,正逐渐从幕后走向前台,并以他们自己的能力加速改变着世界,也改变着人们生活的方方面面。然而,对于程序员,特别是年轻程序员们来说,如何理解自己的职业与发展,如何看待自己的工作与生活,这些问题往往比那些摆在面前的技术难题更让他们难以解答。
这本书从一个成熟程序员、一名IT管理者的角度,以杂记的形式为大家分享关于国内程序员职业生涯、个人发展、编程中的实践与认知乃至自学设计等方面的经验方法与思考感悟。其中每一篇文章都涉及一个与程序员息息相关的话题,无论你是即将走上程序员岗位的在校大学生,是刚刚成为程序员的职场新人,还是有一定经验的程序员,这本书都会给你带来启发。
關於作者:
拥有将近15年的软件开发及IT管理经验,曾先后在易保网络、平安保险、平安银行、AIG公司担任架构师、技术经理等工作。业余时间,他是一名全栈工程师,做着自己喜欢的开源项目,也是本书配套主题网站技匠社(jijiangshe.com)的发起人与创建者。此外,作者以技匠为笔名创建的个人博客更是深受年轻程序员们的喜爱,累计订阅读者达数万人。他也是稀土掘金的联合编辑、51CTO专栏作者、慕课签约作者、百度知道日报特邀作者、以及LinkedIn的专栏作者。
目錄
目 录
第一章?谈职业生涯 \ 1
一、写给年轻程序员的10点启示 \ 1
二、那些程序员们后知后觉的职涯经验 \ 7
三、如何招到一名靠谱的程序员 \ 12
四、每个程序员都应该了解的一件事 \ 17
五、程序员的烦恼 \ 22
六、提给年轻程序员的职涯建议 \ 28

第二章?谈实践与认知 \ 35
一、突破程序员思维 \ 35
二、全栈工程师如何快速构建一个Web应用 \ 40
三、如何成为一名优秀的全栈工程师 \ 52
四、为什么每个程序员都应该学习使用命令行 \ 59
五、重构系统改善之道 \ 63
六、程序员也该懂得这样就好 \ 67
七、走出软件开发法则 \ 69
八、我无法写出易读的代码 \ 73
九、一名全栈工程师的Mac工具箱(设计、开发、效率) \ 78
十、我似乎理解了编程的意义 \ 88

第三章?谈个人发展 \ 91
一、那些优秀程序员身上的共同特质 \ 91
二、成为一名自由程序员 \ 99
三、专家与普通人的区别在于觉察力 \ 105
四、程序员创业?你需要先避开这些坑 \ 109
五、程序员之美 \ 113
六、建立自己的个人品牌 \ 117
七、你不应该成为一匹独狼 \ 121
八、未来,有关程序员的10个预言 \ 125
九、你也可以写出优秀的技术博客 \ 130

第四章?谈编程中的教与学 \ 135
一、自学编程之前,你需要知道这些 \ 135
二、为什么我们不再购买技术类书籍 \ 141
三、我眼中的技术干货与湿货 \ 148
四、为什么你应该让你的孩子尽早学习编程 \ 150
五、写作与写代码 \ 155
六、如果要为孩子写一本编程书 \ 158
七、学习编程从玩开始 \ 163

第五章?谈自学设计 \ 172
一、自学设计,你真的入门了吗? \ 172
二、那些永恒的设计原则 \ 181
三、寻找设计灵感 \ 187
四、因为美而学习设计 \ 193
五、浅谈企业级产品设计 \ 195
內容試閱
前 言
我从来没有想过自己会写一本关于程序员的书,正如你后面将会读到的,这本书中的大部分文章都来自于我平时的杂记(我以技匠为笔名在自己的博客和一些专栏中写文章)。虽然也包含一些实用的技术类文章,但大部分是我作为一名程序员,或跳出自己的职业去看待程序员这个群体时,所记录下的心得、感悟。在我们所处的这个互联网时代,软件技术正快速地渗透到每一个行业和几乎所有的专业领域,并加速推动着社会的变革与发展。而这一切的背后正是千千万万像你我这样的普通程序员不断努力的成果。然而,我们是否已经做好准备去应对那些挑战,或者说我们是否清楚应该成为一个怎样的自己呢?这些问题曾不断困扰着我,但也正是通过对这些问题的深入思考及不断解答,才使自身获得了进步和提升。回想这十几年来的成长经历,给我最大帮助的莫过于自己对职业生涯、对个人发展、对编程本身,以及对美的本质的追求。还是来谈谈这本书吧。由于都是闲时所记,本不成什么体系,但由于出版的需要,最终将全书归纳为五个章节,但我却从心底里建议读者朋友们按照自己的喜好与兴趣挑选阅读,因为它们之间并无关联,也不存在学习某一技术时所必须遵循的顺序,况且相似题材的文章堆在一起阅读反而不那么易于消化。第一章 谈职业生涯:从程序员职业生涯的角度,阐述了我的一些观点和意见。其中,大部分内容是我的亲身经历,还有一些则是从他人身上获得的经验教训。经过多年积累,深深觉得,如果能让更多年轻程序员或是那些即将走上这条道路的在校大学生早些了解这些经验教训,或许能让他们在将来少走些弯路吧。第二章 谈编程中的实践与认知:讲的则是自己多年的编程实践,以及从中获得的感悟。既有《全栈工程师如何快速构建一个Web应用》《一名全栈设计师的Mac工具箱(设计、开发、效率)》这样的实践类文章,又包含了《突破程序员思维》《我似乎理解了编程的意义》这样看上去很湿,却是我真正希望能够启发年轻程序员们去思考编程本身,以及体会编程意义的文章。第三章 谈程序员的个人发展:以程序员如何变得优秀为话题,从当下有关程序员的各个热点(包括创业、自由职业、建立个人品牌等)入手,为你分析那些优秀程序员身上的共同特质,未来的发展方向,以及值得每一名程序员去做的有益尝试。第四章 谈编程中的教与学:鼓励大家在通过大量技术干货获取技能的同时,也关注那些优秀湿货对于自己成长的重要性。同时,我也对编程教学提出了一些自己的意见和观点。第五章 谈自学设计:在我看来,自学设计是对美的意识的重新唤醒,而这一章正是我在自学设计过程中写下的心得及学习笔记。在本章中,我与读者朋友们分享的不是那些设计中的应用技巧,而是如何尝试去理解设计的本质,希望读者朋友们也能以这种态度去学习设计,你会逐渐获得感知并创造美的能力,而这反过来也会促进你编程能力的提升。除了以上章节内容之外,我还为此书构建了一个主题网站,取名技匠社(jijiangshe.com),读者们(程序员或设计师朋友们)可以在此分享和推荐他们认为有价值的工具、资源和教程。目前,网站已收录了会员们分享的将近500个各类资源,涵盖了从前端、移动、后端、数据库、大数据开发到设计中的色彩、字体、图标、模板等各个方面。希望这个网站也能像它的名字所表达的那样,能够成为技术匠们汇聚的地方,并帮助更多的程序员或设计师获得成长。写文章对于我来说是一件轻松愉快的事情,我从未感受到写作本身带来的压力,反而是在完成之后,发现会有一些不足之处,而无法给读者带来真正帮助的时候,感到颇为沮丧。但我仍将这些文章收入到这本书里,因为这就是我当前所能达到的思考深度,也是一个匠人经过十几年成长后所形成的完整思想框架。这本书中的一些文章可能让你产生共鸣,一些可能对你有所帮助,而另一些你可能并不喜欢甚至感到厌恶,但这恰恰说明你在阅读的过程中进行了思考,我的想法蹦到了你的脑子里,衍生出你的新想法,这个连锁反应在你脑中反复激荡,最终让你看得更加透彻,思考得更深入,而这才应该是本书的真正目的和意义所在。这本书能够完成,需要感谢很多人,他们在我写作的过程中给予了我极大的帮助和鼓励。首先,要感谢指导我完成这本书的清华大学出版社编辑,她在目录的修订,封面与排版的设计等方面给了我很多意见。其次,要感谢我的妻子,她时常鼓励我进行写作,也总是我文章的第一个读者。还要感谢我的儿子,由于利用业余时间写作,陪伴他的时间少了很多,但他很懂事,从不在我写作时打扰。此外,我还要特别感谢我的母亲,是她给予了我写作的力量,激励我去做一些更有意义的事情。最后,我想感谢所有我文章的读者,是你们的喜爱促使我不断思考并写出更好的文章,你们的反馈更是我不断修正思想获得提升的来源。
编 者


第三章?谈个人发展一、那些优秀程序员身上的共同特质你是否发现,在我们身边的那些优秀程序员身上总是能找到一些共同的特质。虽然这些特质并非与生俱来,但逐渐在他们身上留下了深深的烙印,这也使他们变得与众不同,更成为我们心目中的佼佼者。1. 至少深入理解一门编程语言学习编程和学驾驶很像,你很容易就能学会驾驶,比如,经过一个月的驾校培训,你就能获得驾照,但要真正成为一名优秀的司机,却必须经过长时间的驾驶实践才行,这将帮助你在头脑中形成一套完整意识体系以应对驾驶中所遇到的不同情况。编程也是一样,当程序员们做出那些优秀的程序设计时,看似自然,但它的背后却是程序设计者们经过长时间编程实践之后所构建起来的编程思维。优秀的程序员不仅熟练掌握一门编程语言的语法和语义,他们还会:掌握这门语言的使用哲学:包括那些最佳实践、设计模式及它们背后所蕴含的原则。深入理解语言的特性:每一门语言都有各自的特性,并且很多新的特性还会不断加入到语言的最新版本之中。充分了解这些特性,能够帮助程序员更准确、高效地使用它们。了解语言的局限:任何程序语言都存在其局限性,这会让我们在解决某些问题时遇到麻烦。我们需要了解这些限制,并知道如何使用一些方法或技巧去绕过这些限制并解决问题。理解语言的缺陷:有些语言在设计之初就存在一些先天不足,比如,Java语言中的日期处理,那些原始数据类型,可能会给你带来一些疑惑。了解这些缺陷,并尽可能在编程中避免涉及这些缺陷,会让你的程序在日后更易于维护。了解语言的未来:有些编程语言如新生儿般茁壮成长,比如Swift、Go,有些则如青壮年般看上去年富力强,比如Java、PHP、Python,而有些则已进入暮年,不再受到关注,比如VB、Pascal。优秀的程序员能很快掌握一门新的编程语言,但只有了解语言的发展方向,才能让你更有信心地去应对未来。2. 看上去有些傻听起来或许有些可笑,但那些出色的程序员往往容易给人留下傻的印象。他们对某些事物的看法可能显得单纯而幼稚,他们的待人接物经常会闹出笑话。但这些并不会阻碍他们成为一名优秀的程序员,因为傻知道自己不够聪明,反而能使他们变得更加强大。不会停止学习的脚步:认为自己不够聪明才会通过不断学习去提高自己。而一旦你停止了学习的脚步,你将无法得到那些能够让你变得更加优秀的方法和技能。使得他们在工作中变得更加严谨:他们会花更多时间Review自己的代码,进行测试以保证交付的质量。虽然过程可能并不轻松,但他们却总是能交出令人满意的结果,这也让大家对他们充满信任。帮助他们获得更好的想法:在软件开发领域,那些最优的解决方案,往往需要你通过深入思考并探索尽可能多的可行方案后才能获得。这意味着你必须具有开放的思维,而不是那些聪明人的自以为是。3. 他们都是现实主义者相信每个人都有一颗追求完美的心,程序员也不例外。然而,在软件开发中完美并不存在,所谓的完美只是想象中的一个瞬间状态,而它是无法达到或者即使达到也极易被摧毁的。任何一段新的代码,一个新的功能中所存在的缺陷都可能将这种完美的状态打破,而为了达到完美所付出的代价更是我们所无法承受的。那些成熟的程序员更加现实,他们关注于如何高效地解决问题,并在此基础上给用户带来好的感受。优秀的程序员懂得平衡。他们理解时间、人员等资源都是受限的,因此他们会选择最简明有效的方法去实现需求或解决问题,而非为了不必要的完善和未知的将来,把一切想得过于完美,反而增加了系统的开发和维护成本。他们不会把代码写得过于复杂,因为他们知道团队中大部分的程序员都处于中等水平,过于复杂的代码会让他们产生困惑。优秀的程序员也深知完成即是价值的道理,他们知道从来没有绝对的对与错,与其长时间关在会议室里,去讨论或设想产品,倒不如尝试用较小的代价去实现出某一个功能或产品,然后通过用户的实际使用去证明它,继而在反复的迭代中不断完善。优秀的程序员尊重流程,但会灵活应用。每个公司或团队都会有自己定义的开发、测试、发布流程,优秀的程序员们尊重这些流程,但在某些时候他们也会对流程中阻碍自己效率的部分做适当的裁剪。优秀的程序员都很现实,这使得他们在不同的环境、团队、项目中都能快速获得成功。他们所开发出的系统往往处于较好的状态之下。虽然它并不完美,但却非常稳定。4. 从自己的失败中学习作为程序员,你不可能总是对的,你或许会错误地选择了某个技术或框架,或许错误地理解了用户提出的需求。但不经过这些失败,你可能永远无法得到那些正确的方法。诚实地面对自己的错误非常重要,这意味着你或者你的同伴能够及时地去修复错误,而这对你、对团队、对项目都是最有益的。每一次的失败也会成为一次自我提升的良机,造成失败的原因是什么?如何有效地避免失败?通过及时反思,并果断采取措施,那些失败将成为你获得进步的最佳途径。然而,承认失败往往需要极大的勇气,特别是在一些软件公司,他们营造了一些不良的文化,当产品出现问题时总是对用户掩盖搪塞,并想方设法蒙混过关。这对你个人无益,甚至可能因为延误了问题的最佳解决时机,而导致更惨重的失败。如果你希望变得更加优秀,那你必须具备直面失败的勇气,并学会从每一次失败中获得进步。5. 很懒却又很高效那些优秀的程序员有时看上去很懒,他们会在上班时间做那些与工作毫无关系的事情,比如,在纸上随意地乱涂乱画,长时间坐在那里发呆,甚至玩手机。但一旦他们进入编程状态,你又会发现他们变得像打字员般,指尖飞舞,瞬间完成他们的工作。优秀的程序员非常珍视自己的时间,他们会利用一切手段提高效率,主要体现在以下几个方面:常年的编程工作使他们都能熟练操作键盘,往往从一名程序员的打字速度上就能判断他是否优秀。他们能够熟练地使用IDE,他们不依赖菜单,而是使用快捷键来操控代码,从查找文件、文本编辑到格式化代码、文本替换都尽可能使用快捷键,这使得他们的开发工作更加连贯,也更高效。他们善于使用或发明工具,他们寻找一切能提高效率的工具,必要时他们还自己编写自动化脚本、发明新的工具,从而彻底抛开那些恼人的重复劳动或机械性工作。编程的过程是一个深入思考的过程,而非简单的不断敲出代码。那些看上去很懒的优秀程序员,可他们的思维却一刻不停地在运转着,这也是他们总是能够给我们带来惊喜的原因。6. 善于发现并改造轮子今天几乎每个程序员都知道不要重复发明轮子的道理,但问题往往是他们无法找到那个需要的轮子,或者他们无法很好地使用它们。优秀的程序员知道如何找到他们想要的轮子,主要体现在以下几个方面:他们会用几个与待解决问题相关的关键字在互联网上进行搜索,借助Google、Baidu、Bing等国内外搜索引擎,但很多解决方法、意见、建议往往会出现在国外的技术论坛中。他们会利用社交网络进行搜索,因为那里往往包含着最新的信息,相比传统互联网搜索,你往往会得到那些更具时效性的解答。他们善于提问,互联网上很少有人认识你,所以你完全不必害羞,在Stack Overflow等社群里提出你的问题,你很快就会获得热心人的回复。当然对任何回复都保持友好和善意也很重要,否则没人会愿意帮助你。优秀的程序员善于组合和改造轮子。虽然我们比以往任何时候都更容易得到轮子,但如何用好它们却是另一个学问。我们往往需要一些技巧将几个轮子组合在一起使用,必要时还需要对它们进行一些改造。优秀的程序员往往能通过阅读相关的文档、API及代码,快速地判断一种技术、框架、工具是否适合自己的需要,并且凭借扎实的技术功力,他们还能基于这些轮子,改造出更强大、更适合自己需要的轮子。7. 并行工作,有效利用时间效率可能是优秀程序员与那些普通程序员之间最大的区别,优秀的程序员总能更快、更好地完成布置给他们的任务。这背后当然有技术熟练度方面的原因,但我看到的另一个重要原因是他们更善于将工作进行切分,并充分利用时间并行地去完成它们。程序员每天都会参与很多活动,比如,参加需求讨论会议,和其他开发者讨论设计方案,大量地阅读学习,当然还有编码。很多时候,我们会按照别人的意愿,去安排自己的工作,但这对我们来说可能并不是最有效的工作方式。工作中充满了选择,你不可能一下子完成所有的事情,在开始之前先想一想如何把时间最有效地利用起来对你来说非常重要。优秀的程序员非常善于多线程工作,他们能够如项目经理一般,拆分并安排好自己的每一项工作。如果你长时间做一件事,那么很容易会觉得疲劳,但把几件事切分成更小的任务后,交错并行地进行,你便能更轻松地完成它们。就像我们在生活中,会利用坐地铁、等公交的时间,拿出手机来获得咨询一样。优秀的程序员能将所有的可支配的时间碎片化,利用这些时间片段,他们阅读、学习、开发、做个人项目他们并不比任何人有更多的时间,他们只是更会利用时间。8. 具备不错的软技能你可能是一个编写代码的高手,但这并不足以使你成为一名优秀的程序员,因为优秀往往是他人对你的评价,而你的老板、客户可能都不擅长或根本不懂编程,他们往往并不会给一个只懂得编程的员工以很高的评价。当然,我们不可能去责备一名程序员过于钻研技术,因为技术发展得太快,他们需要不断学习才能跟上技术的发展脚步。但程序员们仍然不应忽视那些对他们的发展同样重要的软技能。优秀的程序员往往需要具备:一定的语言表达能力:这样才能向他人准确而清晰地表达自己的设计或想法。学会倾听:这样才能获得他人的优秀想法或意见,帮助自己取得进步。有足够的信心成为一个领导者:尽管可能只是一个2、3人的团队,但那是一个很好的开始。指导他人的能力:包括教授方法和思想,而不仅仅局限于技术本身。持续学习的能力:你需要不断进步,否则即使你曾经优秀,也很难维持。谦逊的态度:这会让你更像是一个大师。尊重每一个人:与此同时,你也将会迎得他人的尊重。敢于承担责任:责任与机遇并存,承担责任的同时机遇往往就会随之而来。优秀的程序员不仅具备优秀的技术能力,他们也往往拥有以上这些软技能。在我所看到的所有项目中,很少会出现因为技术原因导致项目失败的现象,大部分的失败往往来自于程序员们软技能方面缺失所导致的团队协作问题。反而是那些被认为水平一般的团队,却经常能依靠着团队成员间的通力协作创造出让人惊讶的成果来。9. 身边有一些优秀的伙伴我认为程序员会向着个人化、多样性的方向发展。越来越多的个人程序员和更小的开发团队将会产生,在不同领域内,他们借助技术的进步与工具的发展,能做出以前只有较大规模团队才能开发出的优秀产品来。尽管如此,我仍然相信那些优秀的程序员并不会成为一匹独狼,相反,他们身边总是会伴随一批同样优秀的伙伴。回想我们的程序员生涯,当我们还是一个菜鸟时,身边总会出现一些导师,他们可能是你的团队Leader,或负责带你的资深程序员,那时我们在编程中出现的错误和缺点总是被无情地暴露在他们面前,经过他们的指正或批评,我们从不断修正自己的错误中获得了成长。随着我们技能的不断增长,在不同时期,因为不同的兴趣,我们身边的伙伴也在不断变化,他们成了团队中与你能力相当的同事,或是你所做业余项目中的志同道合者,又或者是你参与的开源项目中那些不同领域的专家,他们都成为了一名优秀程序员身边不可或缺的优秀伙伴。这让我想到了结对编程中关于轮转(Rotate)的原则并非固定两人一组,而是根据任务的不同,不断轮换搭档。任何时候,你都需要那些优秀的伙伴不断带来启发,给予指导,一起去完成不同目标,更重要的是坦诚地指正你的问题。与优秀者同行,你也将变得更加优秀。10. 对生活充满热情有很多因素会使一名程序员走向平庸,而最最直接的便是失去对编程的热情和兴趣。当一名程序员不再能够感受编程所能带来的乐趣时,编程对他来说,只是一项不得不去完成的工作,而他也将失去继续学习的动力,无法再与优秀沾边了。我看到的那些优秀的程序员,总是对编程充满着热情,每次完成一个新的功能,解决一个有难度的问题,甚至修复一个不易被发现的缺陷都能让他们兴奋不已,而这些又会成为他们不断去提升技能,学习新技能的动力。他们始终在不断突破自己的极限,并从中体会编程所带来的乐趣。同时,优秀的程序员们也懂得生活,他们对那些新鲜事物总是充满好奇,乐于尝试,他们也会有各自不同的兴趣爱好,比如,摄影、写作、旅行,或者游戏、追剧,他们总能很好地掌控这些兴趣爱好与他们所热爱的编程之间的关系。他们会每天有规律地完成如阅读、学习、运维自己的个人项目,之后再投入到自己的其他兴趣爱好之中。他们很少熬夜,这保证了他们每天都能迎来一个充满活力的开始。他们能够掌控生活,而不是反过来被生活所控制。优秀程序员们的身上一定还存在着更多我们所未见的特质,但归根结底,还是他们内心深处那份对于编程的热爱与执着,推动着他们去不断获得那些天赋与才能吧二、成为一名自由程序员越来越多的程序员已经或希望加入到自由职业者的行列,你是否也是其中的一员呢?在这篇文章里我将尝试结合自身的一些经验,来告诉你成为自由程序员能够获得的那些益处,以及为了取得成功所需要面临的挑战。1. 自由程序员的类型很多人把自由程序员定义为没有正式工作,在家里接活儿的程序员。而我认为下面这5种类型,都可以视为自由程序员。独立接包者:他们接的活儿都是基于项目的,但他们并没有任何雇员,而是独立地完成这些项目,然后通过结算获得收入。兼职程序员:他们一般都有正式的工作,但会利用较为充足的业余时间(晚上或周六、周日)来接一些规模较小的私活儿,或者参与一些工作之外的项目。混合外包:他们本身可能就是一家公司的外包,但他们的时间相对比较自由,可以接其他工作来干,工作和私活儿对他们来说已经不存在清晰的界限了。临时工:可能是经朋友介绍,短时间参与项目的程序员,项目完成后他们能获得一定的报酬,但他们一般不会主动找活儿来做。团队接包者:一般都是在某个领域深耕多年的自由程序员,他们往往会雇佣一个小型开发团队,并通过经营一个网店或服务网站的形式,对外提供软件外包服务。他们能够承接一些较大的项目,收益一般也会更高。2. 成为自由程序员的益处成为一名自由程序员有很多吸引人的地方,以下可能是最让人动心的:你将成为自己的老板,不再需要根据领导的安排去做那些你不想做的事情,这可能也是每个职场人的梦想吧!你的工作将具有更高的灵活性,或者说你可以按照自己最喜欢的方式来安排工作的时间、地点及进度。你可以选择在家办公,从而节省了租用办公室,购置办公设备及通勤的费用。3. 成为自由程序员的挑战同样,成为自由程序员,你也需要面临很多挑战:你的工作量不会非常稳定,有时候很忙,有时候却可能很闲,你需要合理地安排项目进度及管理自己的时间。在家工作很容易让你分心,你需要有很强的自控能力来保证工作的效率和质量。你将不再享受员工的福利,比如,养老金、医疗保险、住房公积金,等等。为了得到相应的保障,你必须自己购买相应的保险来进行弥补。你需要不断地寻找新的客户,这在成为自由程序员的初期尤为困难,你需要那些新客户的项目给你带来一定的现金流,从而挺过最开始几个月的困难期。同时,当你有了一些客户之后,你仍需要考虑如何与这些客户建立稳定的关系,时常询问客户的反馈,改进意见等,都能够帮助你提升与客户间的关系。项目管理是你要面临的另一挑战,这并不仅仅指你如何管理项目的进度,更在于在整个项目期间,如何有效地获得客户的需求,管控他们的期望,以及进行风险的管理,等等。我见过很多项目,在经过一段短暂的蜜月期后,最终因为项目管理不当而不欢而散,无法收回尾款。而对你来说,除了金钱之外,最大的损失可能是你的声誉。除了以上这些,你还需要拥有一定的法律及财务知识,因为很多项目特别是来自于企业的项目都需要你出具合同,你需要尽可能地在合同中保障自己的利益。当出现一些纠纷时,你也需要学会运用法律知识来保护自己。4. 如何成为一名成功的自由程序员像企业一样运作:即使你没有成立公司,你也应该把自己当作一个公司来进行运作。这意味着你需要懂得最基本的销售、市场、财务及商务知识。建立自己的品牌:你需要为自己建立品牌Branding,互联网是让你为人所知的最佳场所。你可以从利用你的社交账号,博客网站开始,逐渐让大家知道你所做的事情及你的所长。沟通至关重要:沟通非常关键,尤其对于那些习惯了使用技术语言的程序员来说尤其重要,你需要学会转变思维方式,并用非技术语言与你的潜在客户进行交流,并取得他们的信任。保证质量,追求持续的增长:在最初的日子里,自由程序员会感受到很多压力,比如,项目进度给你的压力,客户给你的压力,现金流方面的压力,等等。而此时你也很容易会忽视你交付的质量,并做出一些错误的决定。比如,放弃目前进行中的小项目,去承接一个看似能获得更高收益的大项目,等等。这样做,虽然可能会获得一些眼前利益,但最终会给你的声誉(或品牌)造成损失。请记住,一名自由程序员总是需要很长的时间才能建立起自己的声誉,而一个草率的决定往往就能使之前的所有努力化为乌有。持续进行技术积累,提高投入产出比:我之前也曾利用业余时间在Freelancer上做过一些国外项目,虽然我是一名Java程序员,但在大多数项目中,我都使用Drupal来为那些客户构建企业或商业网站。因为,在我看来那是投入产出比最高的方式。同样,你也应该对你所承接的项目有所选择,多做那些能够帮你进行技术积累的项目,逐步提高投入产出比,这能帮助你以更高的效率和质量去完成一个项目,而你也将因此在市场上获得更强的竞争力。适时建立团队:个人的力量总是有限的,当你所能够承接的项目已经让你忙不过来的时候,就应该考虑建立自己的团队。自由程序员团队并不容易管理,你需要了解他们所关注的,钱或是学习新东西,并坦诚相待,一起前进。5. 如何开始下面是我知道的一些国内外程序员兼职网站,它们或许能够帮助你起步,成为一名自由程序员(注:以下网站并不一定适合所有程序员,你需要根据自己的情况进行尝试后再选择最合适自己的平台)。(1)Coding码市(https:mart.coding.net)Coding码市是2015年7月底推出的软件众包平台。软件需求方可以在码市低价获取专业开发者技能资源完成项目开发,加速软件开发效率,节省人力成本,快速高质量地把想法落地成产品。而开发者则可以在码市找到合适的项目并将自身专业技能转变成财富。相较于猪八戒网,Coding码市是更单纯地服务于开发人员的众包平台。
(2)猪八戒网(http:www.zbj.com)猪八戒网上拥有500万家中外雇主,1000万家服务商,交易规模和市场占有率也很高。程序员们可以承接如网站开发、APP开发、应用软件开发等工作。相对而言都是以二次开发为主,你需要有一定的技术或产品积累才能体现出自己的优势。
(3)Freelancer(https:www.freelancer.comwork)国外知名的兼职网站,能够帮助你找到合适的国外兼职项目。由于项目基本是按国外程序员的平均小时费率计算报酬的,因此,如果你的英语不错,那么,在Freelancer上寻找兼职开发工作也是一个不错的选择。
(4)猿团(http:www.yuantuan.com)猿团是为A轮之前的创业公司或那些小企业提供技术服务,一边对接兼职的技术团队,一边对接需求方。与其他同类竞品不太一样的是平台的技术兼职隶属于猿团,也就是相当于猿团为需求方定制产品,而具体工作则是转包给第三方团队完成。因此,如果你已经有一个比较稳定的技术团队,那么可以申请成为猿团的城市合伙人,并利用猿团品牌来接单。
6. 关于未来最近几年我们看到了一些非常有趣的变化,它们也正在影响着我们的传统工作方式:越来越多的公司开始接受并鼓励员工在家工作,这一趋势正从互联网和科技公司逐步向传统公司蔓延(根据预测,到2020年将有超过40%的美国人在家办公)。这意味着,人们将会获得更多可支配的时间来从事自己感兴趣的第二职业。越来越多的优秀互联网协作工具不断出现,一方面,这使分布式协作效率大大提高,团队的组成将不再受到地域的限制;另一方面,开发团队也将能够更加轻松地承接来自全球的软件开发服务需求。兼职市场正在变得越来越大,国内的主要兼职网站的营收规模在2015年接近百亿元,并还在快速增长中。随着创新时代的来临,这一增长势头将会进一步加快。作为一名程序员,你应该能够感受到以上这些变化趋势可能给我们带来的机遇,那么何不提前做些准备,让自己也能在这个不断发展的市场中赢得一席之地呢?三、专家与普通人的区别在于觉察力如果问我,与10年前那个初出茅庐的自己相比,有了哪些重要变化,唯一让我感受最深的是自己对工作变得更有把握,而带来这一变化的正是更加敏锐的觉察力,以及在不断解决问题的过程中所建立起来的信心。编程对我来说是一项从未间断过的有趣工作,它通过创造来产生价值,并为我的工作赋予意义。很少有其他工作像编程那样同时对技术和思维都有着如此高的要求。可能只有在艺术领域,我们才能找到那些具有相同职业属性的人。编程与艺术极为相似,一件艺术作品的好坏在很大程度上取决于创造者的灵感和构思,然后以纯熟的绘画、雕塑、建筑等技巧加以表现。同样,编程的最大挑战也来自于程序员们对于问题的深入理解与思考,在找到最优解决方案后,以编码的方式加以实现。然而,编程与艺术间又存在着天壤之别,艺术的目的在于给人带来美的感受或情感上的共鸣,而编程则是为了解决实际问题;艺术更需要极高的天赋,而编程却是一项通过努力人人可以习得的普通技能。著名的10?000小时定律告诉我们通过努力学习和实践就能获得高超的技艺,但是,如艺术家或那些优秀程序员般拥有敏锐的觉察力却并不容易,它无迹可寻却发生在潜移默化之中,觉察力的递进往往来自于每一次更加深入运用它们的过程之中。过去,我也曾把很多心目中的技术牛人称作专家,今天,在工作或写文章的过程中,也会有人这样称呼我,但我清楚自己只是成了他人想象中的一个美好形象而已。在这10年里我认为自己并没有成为什么技术大牛,相较于那些毕业两三年并对技术非常热衷的年轻程序员,我所使用的那些技术可能已经显得落伍(比如,我使用的AngularJS。如果说在前几年还能算是比较新的技术的话,那今年你应该尝试的就是VueJS了)。但这却让我开始反思什么样的人才是真正的专家,他们又有哪些共同特点呢?为此,我读过不少各领域专家的传记或访谈,其中,越战纪念碑的设计者林璎的事例给了我很大的启发。林璎,1959年10月5日生于美国,是著名的美籍华裔建筑师。而她最为家喻户晓的却是在21岁,还是一名哈佛大学本科二年级建筑专业的在读学生时,参选并毫无争议中选的越战纪念碑设计作品。她的设计作品打败了将近1500件其他作品,而其中很多还是当时著名设计大师的作品。和其他作品不同,林璎的越战纪念碑并没有歌颂丰功伟绩,而是通过在一个回形标一样的纪念碑上刻满牺牲将士姓名,让参观者在行走中进行吊唁,并引发人们对战争的深刻反思。
越战纪念碑给林璎带来了极大的成功。前一刻还是个默默无闻的普通人,下一刻就成为了大家心目中的专家,可能有人会认为这是一时的灵感或运气使然,但在这背后我们却能看到:专家与普通人的最大区别在于他们能真正理解和解决问题:林璎所做的越战纪念碑设计原型虽然看上去非常稚嫩,远不及那些专业人士的作品,但她的设计却毫无争议地获得了采纳,其根本原因还是林璎最深刻地理解并揭示了越战纪念碑所需要表达的真正含义,那便是在缅怀越战逝者的同时,反思战争,珍惜来之不易的和平。可以说,只有林璎最好地理解了这次设计的目的,并完美地解决了问题。最优秀的方案来自于无与伦比的觉察力:灵感和运气都可能是林璎获得这次成功的原因,但这背后却是她无与伦比的觉察力发挥了决定性的作用。这与技术和经验无关,恰恰是童年良好的艺术熏陶及平时的积累才为林璎带来了这一次的灵感爆发。同样的,在编程领域,专家与普通人的区别也在于是否能够更好地解决问题,而解决问题的关键又在于程序员身上的敏锐觉察力。我们平时的学习、实践并不仅仅是为了积累所谓的经验,更重要的是培养自己独特的觉察力。从阅读一本书,写一段代码,做一次讲演,写一篇博客到旅游、烹饪等,善于思考的人总能从中获得更多的启发和灵感,这也使得他们能在工作中轻而易举地发现那些最优的解决方案,而不是像普通人那样绞尽脑汁却始终不得要领,久而久之他们便自然而然地成为了大家眼中的专家。良好的思维习惯能够帮助我们走出平庸,然而也有两样东西能把你重新拖回到平庸之中,那就是经验和环境。经验是每个人宝贵的财富,能使你对自己所在的专业领域有更深入的理解和认识,也更擅长去解决那些已经出现过的问题。这也是为什么我们在招程序员时,更喜欢那些拥有多年经验的候选者的原因,经验意味着熟练且不犯错。但过分强调或依赖经验也会适得其反,甚至阻碍我们继续前进。有经验的人往往会说就应该是这样的应该这样做。但在今天这个技术变革日新月异的互联网时代里,我们需要去解决的不再是那些已经出现过的旧问题,而是那些不断涌现的新问题,基于那些经验的陈旧思想已不再像以往那样被加以推崇,取而代之的则是创新的思维和意识,所有领域都在拥抱创新和变革,这也是为什么在美国大部分风投公司更愿意投资那些30出头年轻人的主要原因之一。另一个阻碍我们的因素则是环境,你所在的企业可能是一个传统行业,并没有很好的创新氛围,这使你无法学到最新的技术;你可能在一家创业公司里,但长时间都没有什么起色,让你有些灰心;你也可能很优秀,在BAT这样的互联网公司,但你可能只是一颗螺丝钉,每天做着重复而没有什么挑战的工作。环境还包括你每天工作中所使用的软件、工具、流程、技术,等等。我们中的大多数人会出于待遇、地理位置、是否稳定、职业发展等很多因素,去选择一个公司或团队,但无论出于什么原因,你都会逐步适应这个环境,它也会渐渐地将你带入一个舒适区,你不再需要学习很多东西来应对变化,你也不会遇到很多高难度的挑战,这让你渐渐失去了思考的动力,觉得一切都是那么习以为常。经验和环境既能使你变得优秀,也会成为你的包袱,如果你想为自己发现一些新的东西,就不能总背负着老旧的包袱。当今社会中存在着太多形形色色的专家,但其中很多所谓的专家靠的只是哗众取宠或是人为制造。在我眼中,真正的专家就是那些工作在各自不同领域,有着敏锐觉察力,并能够摆脱经验和环境的束缚,不断去为大家解决问题的普通人。四、程序员创业?你需要先避开这些坑说到创业,其实我也曾有过一段短暂的创业经历,虽然最终是以失败告终,但那次创业经历让我受益良多。同时,我也从身边曾经或正在创业的程序员朋友身上,得到了一些经验和教训。于是,便想着写一篇文章来说说那些程序员在创业初期应该尽可能避开的坑。1. 做自己不擅长的领域我经常看到一些程序员的创业项目是与他们自身工作或兴趣完全无关的行业或领域。他们似乎觉得找到了一个行业的最大痛点,想着只要用自己想出来的这个点子去做一个网站或APP就能撬动整个市场,甚至梦想着自己的企业能成为下一个独角兽公司。但我想说,这可能是创业中第一个也是最大的坑,当你的创业点子诞生时可能就已经注定了它的失败。心理学中有一个词叫作自我效能,指的是人们对自己能够取得成功的信念我能行。而我发现这种心理暗示,在人们产生创业想法时显得尤为明显。你不应该被一时的热情冲昏头脑,应尝试着问问自己,既然我的这个想法那么好,那么为什么在那个行业(或领域)里没有人想着去做呢?是因为这个行业里没有一个人比我聪明?还是因为我想要解决的问题并非是市场的真正痛点,或者是因为实现它的成本过高,根本没有人愿意去做呢?尝试着去做更深入的市场调研,然后再决定是否开始。此外,创业绝不会是一帆风顺的,如果它不是你真正的兴趣所在,那你在遇到一些小挫折时,就很容易会打退堂鼓,并最终选择放弃。创业除了需要热情之外,更需要的是坚定的信念和毅力。2. 不具操作性的商业计划我接触过不少初创团队,也看过他们的一些商业计划书。我发现那些最终失败的创业团队往往都存在一个共同点,那就是没有一个具备良好操作性的商业计划。它们要么太大要么太小,甚至有些根本没有商业计划书。在创业初期,你应该以确定自己的产品定位、核心功能、短期市场规划的目标为目的来写自己的商业计划书。因为在这个过程中,你能够进一步完善自己的想法,并形成一个在后续研发、运营过程中提供参考依据和方向的指南。另外,你需要尽可能地保证你的商业计划是可操作的。如果你的目的不是去寻找风投,那么你的商业计划书不应该超过30页。商业计划书与我们在学校或商业课程中所学到的报告制作方式不同,你应该尽可能地保证商业计划是具有参考意义的,并按照实际情况去不断地修正它。如果你的商业计划过大,那你很难保证它的有效性和可操作性。很多创业者一旦写完商业计划书就很少再去看它了,这恰恰说明了他们的商业计划可能并不可行。3. 参与者太少或太多创业团队需要具备良好的内聚性与人员构成,人数过多很容易在创业初期就因内部的意见分歧产生内耗,导致产品研发焦点分散,交付周期变长。程序员群体往往是具有激情、热爱创造的,但他们有时候也很容易产生挫败感。在创业过程中,一定会遇到很多困难,越是小的创业团队越容易克服这些困难,并最终走向成功。而比起团队成员过多,程序员们往往更容易犯单干的错误,认为有了一个很好的想法,将它实现出来就可以获得成功。确实我们看到很多成功的程序员创业案例,但我想说那些成功者们往往都是全才或通才,除了编程之外,他们也深谙市场之道,或者他们具有超强的学习能力,能够迅速掌握创业各个阶段所应具备的技能。如果你不是那样的全才,那么你就需要引入其他创业同伴。我所建议的初创团队可以在2~5人,其中至少应该有一名程序员、一名设计师、一名市场人员、一名投资者或决策者。当然,在某些情况下,这些角色是可以重合的,但至少你的团队中需要有人承担相应的角色。4. 研发周期过长,产品缺乏焦点或特色像增长黑客一样以最快的速度去推出一个可行的产品非常重要,比如,分答就采用了类似最小成本精益迭代的方式,第一版上线的分答,功能非常简单,只有最基本的提问和偷听功能,而且产品中还存在很多Bug,但这并不影响产品的上线及对产品核心功能的验证。这种最小成本最短时间做出一个最小化可行产品(MVP),是我最推荐程序员创业者们采用的。与10年前的创业环境不同,今天你所创造的产品必须具有鲜明的特色,一经推向市场便能依靠产品的定位与功能特色迅速赢得用户。请记住,你的产品需要有一击即胜的鲜明特色,否则它将很快被人们遗忘。5. 过度关注产品研发,而忽略了市场另一个程序员们容易犯的错误是太关注于产品本身而忽略了市场。即使是在产品上线之后,他们仍然会把大部分精力放在自己认为需要的新功能的研发上。这种做法其实是不可取的,一旦产品投入了市场,你就必须采取一切手段了解市场的反应,然后根据用户的反馈来提炼出用户真正的需求,改进并完善你的产品。同时,你也需要通过一些更有效的方法来获取用户的反馈,比如,采用免费策略,游戏化的激励举措等,都可以鼓励更多的用户来使用你的产品,并给出他们的反馈,从而帮助你的产品进步。6. 没有与你的用户维护关系 ,也不愿意向人求助程序员们大多内敛含蓄,喜欢沉浸在自己的程序世界里,而不愿与他人交流。但如果你是在创业,那你必须非常重视你的用户,并与他们建立起良好的关系,比如,及时地回复用户的留言,处理用户的反馈和建议,等等。你也可以逐步地培育起一些种子用户,来帮助你一起维护用户关系。你可能需要很长的时间才能与你的用户建立起良好的关系 ,但往往一次不恰当的行为,就可能让你永远失去他们。此外,程序员们往往不愿意向人求助,这可能是因为他们太过习惯于向搜索引擎求助了吧。在创业过程中,你一定会遇到很多需要其他人帮助或参与的时候,比如,请求其他优秀人才的加入,寻求企业的赞助,拉风投,等等。主动寻求他人的帮助,能帮助你调动更多有效的资源来加速目标的实现。

 

 

書城介紹  | 合作申請 | 索要書目  | 新手入門 | 聯絡方式  | 幫助中心 | 找書說明  | 送貨方式 | 付款方式 台灣用户 | 香港/海外用户
megBook.com.tw
Copyright (C) 2013 - 2024 (香港)大書城有限公司 All Rights Reserved.