您的位置:首页 > 业界新闻

在移动互联网时代,产品的开发模式和以前互联网时代相比,有哪些新特点?

2020-06-04 08:05 459 查看

程序员的面试,晋升,离职,远程办公,自由职业,以及创业。不管做什么事情,专业性总是第一要点。就像书中写的那样,我们应该成为「专业人士」,这就要求我们对所做的工作始终精益求精。这其实与行业无关,职业精神在任何行业都应该俱备。

在程序员这个行业,我们的职业精神在于追求代码的美,这包括架构的可扩展,命名的规范,合理的注释,合理的设计模式。但其实,我们最最欠缺的职业精神是:按时发布产品。

我们总有无数的借口:未知的技术挑战,没有遇到过的 Bug,产品需求的变更,相关联调人员的问题,但是好的程序员,总是能够在各种风险发生时,通过自己的努力保持按时上线。
在中国如何做自我营销呢?基本上做到两点就可以了:

写技术博客。
发技术微博。
写技术博客好难啊怎么办?可以从翻译国外博客开始。发技术微博好难啊怎么办?可以从转发技术微博开始。看看 JSPatch 的作者 bang,人家从 10 年前就写博客了,能写不好吗?

切忌把时间花在混各种圈子,包括 QQ 群、微信群、各种技术论坛,这对自我营销效果基本没有,而且还很花费时间。

技术人攻略:您从什么时候开始接触编程?编程带给了您什么样的乐趣?在不断超越自我的过程中,是否遇到过什么困难,是否曾有过想放弃的时刻呢?
我初次接触编程是在 1972 年,那时我还在英国上高中。有一部分人提前完成了考试,在学校没有别的事情可做。正巧校园对面的科技学院开设了编程课,于是我们申请了参加这个一周两次的课程。

我最初打算学数学专业,但当我开始编程,我慢慢爱上了它。

那时候我用 Basic 语言,将代码敲到纸带上,通过一台 110 波特的调解器将数据传到大型机上运行。虽然如此麻烦,但我发现编程十分符合我的大脑的运作方式——我喜欢这种创造性和精确性兼备的体验。

从那时开始,我从未间断过编程。我十分确定——除非是在度假的时候,我生命中的每一天都离不开写代码。

我也常常会有感到艰难的时候,但每次考验过去之后,你的技艺都将更上一层楼。所有值得做的事情都是困难的,但克服这些挑战不仅会让你更强大,还会让你变得更加投入。

技术人攻略:我们处在一个快速变化的时代,新的技术层出不穷,程序员应该如何保持和这个世界同步,持续提升自己的竞争力?
想要跟上技术更新的速度越来越难。当我开始编程的时候,主要通过阅读书籍和杂志了解进展,但现在几乎每天都有新概念出现。

但事实上很多的新事物只是人们对旧东西的再发明。我们行业里的许多人,眼光只看向将来,对计算机的历史却知之甚少。这些人想要创造东西(当然是好的),但他们并不知道自己想做的东西在 20 或 30 年前已经实现了。

正因为如此,许多新生成的事物其实并没有那么新。对我来说,要跟上潮流就变得简单了,因为看到它们就会让我想起 “啊,这和 X 很像呢”。

但同时,也确实有一些不错的创新。我每个月总有那么一到两次,会遇到很有意思的东西,让我有兴趣去尝试一下。阅读技术内容是有趣的,但只有通过尝试才能认识得更加深入。

这很花时间,但对于程序员来说这种投入非常重要。如果不这么做,很快我们就会被淘汰。

技术人攻略:在大公司里,职位被划分得很细,例如前端、后端、运维、数据库等,程序员被固定在了公司设定的职位上,您认为程序员应如何提升技术的广度和深度?
专业化分工属于昆虫世界。真正能够改变世界的人:他们具备更加广泛的能力,并能将不同的技术结合起来创造价值。

我认为很多公司并没有意识到这点,他们更乐于创造层级制度和把员工限制在某个职位上。

但是也有些不一样的公司,懂得通过制定目标和提供指导让程序员有最好的产出,而不是监督所有的细节。这些公司理解一个优秀的程序员可以同时胜任数据库设计、规划应用部署,也许还喜欢解决技术支持方面的问题。

我鼓励年轻程序员获取一些在不同的公司工作的经验,以寻找适合自己的工作方式。例如试试在大公司和在创业团队工作有什么不同,甚至尝试下独自工作。一旦你了解了自己适合的方式,就可以找到或者创造出合适的职位,让自己做得更好。

作为一名员工,很容易抱怨自己的公司,或者怀有这样的想法 “我就是一个普通人,没有能力改变什么”。但事实上,你有责任作出改变——让事情变得更好。这种责任不仅是对公司的,而且也是对自己的。看看你是否能让公司有所改变,如果无法改变现状,那么你应该换一个更适合自己的环境。

技术人攻略:《The Pragmatic Programmer》影响了非常多的人,如果这本书出修订版,您打算做哪些改变?今天,一个讲求实效的程序员正在做些什么?
我和 Andy Hunt 常常会讨论这件事。实际情况是,虽然书上的案例看上去古老了一点,但背后的概念仍然很适用。无论你是做 C++ 还是 Javascript 编程,DRY(注:DRY 即 Don’t Repeat Yourself,不要重复自己)原则仍然适用:)

我个人认为可以修改或者去掉一些小的 tips,但没什么大问题。

如何做一个高效的程序员:do what works, and work at what to do。“do what works” 意味着你应该不断问自己 “我正在做的事情有什么样的价值?”,每天都尝试寻找提升所做事情价值的方法。“work at what to do” 意味着要时常回顾,从全局角度看问题,并且寻找改进工作的新方法。

技术人攻略:您是一名技术高手,又拥有自己的软件公司,您觉得程序员应该创业吗?程序员创业有哪些优势和劣势?
这是一个很棒的问题,但我也还不知道答案。

我的一个弱点在于我喜欢让事情保持简单——我认为大多数程序员都喜欢这点。但现实世界——公司运作的世界,并不简单。我不得不克服把事情过度简单化的诱惑,因为我知道这样会让自己错失机会。

我认为程序员从事商业,最重要的强项在于我们懂得事物的关系如何。管理代码的原则,同样可以用在管理公司上,这也是 The Pragmatic Bookshelf 这家出版公司成功经营的原因之一。我们在一开始的时候,并不知道图书出版公司该如何运行,所以我们采用了管理软件公司的方式去产出图书,而不是产出代码。结果,我们将版本控制、持续系统构建,以及全自动化等方式运用在了商业运营的方方面面。其它出版商无法做到这些,我们对于出版行业的无知成为了最大的优势。

技术人攻略:在 Ruby 大会上听说您最近在关注一门新语言 Elixir,它为什么吸引您?您会像推广 Ruby 一样去推广这门语言吗?它是否代表了接下来的技术流行趋势?
我非常确信未来的世界属于并行和分布式,五年之内,还要编写一个从头到尾顺序化执行的程序,这将是一个笑话。

但同时我们并没有拥有真正可以让我们创建分布式和并行系统的工具,用 Ruby 或 Java 写并行代码很容易出错,用 Javascript 也同样痛苦。

Erlang 诞生差不多 25 年了,这种语言的目的就是要进行分布式和并行编程,就是解决大规模和可靠性问题——在后者的环境中,要保持代码一直处于运行状态,即使代码在升级时也是如此。

Elixir 则没有这个问题,这种语言看上去跟 Ruby 很像,非常易于理解和编写。但是它运行在 Erlang 虚拟机上,这意味着它可以获得 Erlang 的一切好处。同时又可以胜任 Erlang 完成不了的任务,它有很强的元编程能力、宏和协议等方面也不错。

Elixir 会统治世界吗?可能不会。但我认为它代表了未来的方向。学习 Elixir 的过程可以让我理解未来的编码方式。五年后我可能不会用 Elixir,但我十分确信我会用一些类似的语言,我通过 Elixir 学到的东西仍然可以帮助我。

这听上去好像是我认为 Elixir 不会流行,但其实我不这么想。到目前为止,Elixir 是我们所拥有的最好的语言和运行时之一。当我没有为(由 Ruby 编写的)已有系统写代码的时候,我会用 Elixir 开发,我十分喜欢它。

我鼓励其他程序员试试 Elixir(或者其它类似的语言),我总是鼓励程序员去学习更多的东西。

技术人攻略:在移动互联网时代,产品的开发模式和以前互联网时代相比,有哪些新特点?
我认为程序员面对的世界和五年前相比有了显著的变化。浏览器基本上还和 IBM 将老式 3270 终端连到主机上的应用一样——你向它发送数据,用户输入一些东西,然后浏览器给出回应。还是以服务器为主。我知道:客户端在不断加入很多令人头痛的东西,比如 JavaScript 应用什么的,但是整体架构仍然一样。我认为浏览器技术基本上已经进入死胡同。我观察身边的人——他们在手机和平板上使用 App,只有在必须用到浏览器的时候才会用一下,移动世界是以用户为核心,而非以服务器为核心的。

在移动 App 上,客户端掌管一切,服务器仅仅作为资源提供方。这要求程序员掌握一些新的技能和技术支持这种结构。在客户端,我们需要通过编写复杂的,异步的应用,并且将这些应用运行在一系列不同的设备上(不仅是手机和平板)。在服务器端,我们需要从 Rail 风格的应用转向更灵活、更多以联合方式运行的架构。(这正是 Elixir 令人兴奋的原因之一。)

技术人攻略:去年的 Qcon China 上,您谈到了敏捷的腐化和到底什么是敏捷,有没有哪些软件项目领域,是敏捷开发模式不适用的?
你的问题认为,“敏捷” 是一种东西。

真相是,“敏捷” 并不存在。它不是一种 “东西”,不是一个名词。人们是把它当成一个名词开始用起来的,但是他们并不理解背后的含义。

“敏捷” 不是一种东西,敏捷是一个形容词——它描述了一种东西。你可能有一个敏捷的团队,或者一种敏捷的过程,但你却从来不是 “敏捷”。

这是什么意思?这意味着那些向你硬推 “敏捷” 这个名词的人在撒谎,因为 “敏捷” 是买不来的。

相反,敏捷是因人而起的——它来自于那些希望把事情做得更好的个体。这些个体观察如何做事,并寻找改进事情的方法。Kent Beck 说这需要勇气,他说得没错。每当你尝试做出改进,你都在尝试改变现状,你将直面风险,你挑战了那些和你共事的人,他们也会用挑战来回敬你。

但是,我认为:在任何环境下,这些挑战和相关的讨论都是合适的。

技术人攻略:您接触过中国的程序员吗?您觉得他们和西方的程序员有哪些区别?
我喜欢来中国的原因之一,就是可以和这里的程序员交流。

这次的中国之行,我们在一家创业孵化咖啡馆(注:车库咖啡)渡过了非常愉快的一段时光。大家的活力和热情让我和我的妻子非常震惊,她甚至还为此写了一一篇博客。

西方的程序员也拥有这样的热情,但我在中国遇到的程序员表现出更多东西。或许是因为中国程序员要在更困难的环境下工作,又或许是因为中国的市场正开始爆发。不管是因为什么,我总能从中国程序员身上感到更多能量。

中国同时还有另外一类程序员,我在和他们谈话的过程中注意到,他们把工作当成任务。或许在家庭的推动下进入这个可以获得一份 “好” 工作的行业,或许想在一个大型机构里寻求安全感。不管是出于什么原因,这类程序员身上都缺乏激情,缺少一份对他们所作事情的热爱。这令人伤心,因为写程序真的是一件非常有成就感,非常让人满足的事。我建议这些程序员们看看我妻子的那篇博客上的照片,问问自己是否也愿意加入其中,是否愿意向桌子对面的人分享自己的新想法?
他们可以做到——任何人都可以做到。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: