[查异常网]-20160401-为什么你应该尝试全栈

  程序员看到全栈这个概念,大概会有两种反应:

  1. 卧槽,这个好,碉堡了

  2. 你懂毛,全栈就是样样稀松

  以上两种反应其实都有失偏颇,即使只做一种技术,做的很菜的多的是,而全栈但是样样都做的不错的也不少,更别说这个世界还存在另外一种爆栈型的程序员,做什么什么精。

  全栈学徒至少要掌握以下几种技能:

  1. Web 前端开发,至少掌握一种前端框架
  2. Server 后端开发,至少掌握一种后端框架
  3. Server 运维,掌握 Linux Server 的搭建与维护
  4. 客户端开发,iOS 和 Android 至少掌握一种
  5. 数据库,掌握 SQL 和 NoSQL 数据库

  而获得“全栈”这个称谓则应该至少独当一面的一个人完成一款产品的构建,并且真的经历过商业化运作,被自己的“愚蠢”坑过无数次。

  由此可见,全栈的门槛还是挺高的,并不是说掌握以上五种技能,就能称为全栈,至少要加个学徒来修饰一下,也正是因为太多学徒自诩全栈,才导致第二种反应如此广泛。

  不过,这篇文章的题目是 —— 为什么你应该尝试全栈,所以讨论点并不在要不要做全栈,而是尝试。

  外行与内行

  过去几年里,我和不少团队的人聊过,发现绝大部分的团队矛盾都在于——

  • Server 端的不懂客户端,设计出来个 API 后瞎 BB
  • 设计师不懂客户端,设计个交互瞎 BB
  • 客户端不懂 Server,对着 API 瞎 BB
  • 客户端不懂产品,对着需求瞎 BB
  • 产品经理不懂需求,对着 Team 瞎 BB

  除了最后的产品经理应该被烧死以外,前四个矛盾都还是有救的。

  程序员是一个上帝模式的职业,每天的工作就是创造,这也正是这个职业看起来很酷的原因。但是正因如此,程序员多少都会有些自负,自负的结果就是以自己有限的知识去揣测别人的工作该怎么做。

  如果 Server 端不懂客户端,那么很容易设计出来不符合客户端机制的 API,以网页的思维去理解客户端,这时候好点的话做客户端的耐心解释,每个 API 耽误一两天的时间来磨合,不好的话就要吵架了。

  但 Server 端并不总是错的,客户端希望所有数据给出来后不需要再加工,而往往按照客户端需要的结构给的话,有些查询可能要耗时一两秒。客户端如果不理解服务端的机制,一味以 “服务端就是给客户端服务的” 来要求,就又要吵架了。

  如果说技术人之间的争论是冷兵器战争的话,那如果碰到更外行的产品经理或者老板,那就要爆发核战争了。

  “你就改个网页,十分钟能搞定吗?”

  “效果怎么可能很难做,我给你做个”

  “明天上线,赶紧的”

  “我不管你技术上有什么难度,反正你就得给我实现出来”

  而这样的场景,无论是哪家公司,几乎都在不停上演。

  尝试了解对方的技术

  先聊聊我的技术轨迹吧,从初中开始使用 Linux,以 Ubuntu 作为自己主力系统,而后切换到 ArchLinux,再回到 Ubuntu,一直使用到大一,这几年的 Linux 使用经验奠定了 Server 架构的基础,大一开始尝试自己做一款产品。

  那时候就琢磨,我应该先写一个网页版,然后再写个客户端。

  所以从后端开始,我使用 Django 作为起步,不过很快我转移到了 Rails 阵营,Rails 的敏捷开发极大的降低了开发成本,而其的约定习惯,也使得菜鸟能够平安飞过很多危险区域。

  开始写网页前端的时候,并不知道有前端框架这个东西,直到用 Rails 写完了后才发现原来有东西叫 Ember.js,于是开始用 Ember.js 来重写,一开始的理解还是如何用 Rails 来渲染前端,后来发现其实在引入了前端框架后 Rails 的角色已经变成了个 API Server 了。

  于是由此开始从新的角度去考虑如何设计 Rails 的 API,阅读了大量的 API 设计的资料,怎么样设计前端才好用,怎么样降低查询时间,服务器缓存,redis,安全等等。

  Rails 的自动化帮了不少忙,很多自己并不知道的地方它已经帮忙做好,而当你想了解的时候,又会发现其实现是如此精妙。更别说 Rails 对新技术的接受程度,使得你总是有新东西可以玩,CoffeeScript 和 Sass 最早就是 Rails 吸收作为自己框架的默认前端技术。。

  随后由 Ember.js 又切换到 Angular.js,用 Angular 重写一遍,期间又接触了前端工具 Grunt (前端的变化一日千里,现在用的东西已经不是这个了)

  最后到了 iOS 客户端,此时 iOS 的界面实现又与网页的 HTML 和 CSS 有着很多不同,也因此又花费了不少时间去理解 iOS 的 UI 概念,把思维从网页转换成 iOS 的界面开发思想。

  数据库也在这个期间从 MySQL 换成了 MongoDB,因为那几年的潮流也正好是这个转变。

  这个过程里幸好是我一个人,所以没人可以吵架,不然我想各个阶段都是有很多值得争吵的地方。

  项目上线后,随着运维的复杂程度逐渐提升,也因此接触了 chef 和 Ansible 这种自动化运维方式,再往后 NewRelic 这类的监控服务也上了,为了一个稳定的开发环境,继而使用了 Vagrant。

  而这一切都只发生在一年的时间里,不过很有趣的事情是,很多时候我写着 iOS 突然想明白了 HTML 和 CSS 的实现原理,做着 Rails 突然想出了更好的 iOS 架构方式,不同的技术之间触类旁通的感觉在每天都发生着。

  在后来的时间里,这段经历使得我和不同的技术人沟通都非常轻松,因为去年“秒视”做滤镜的原因,我开始研究起 openGL,在重拾了Blender 之后,很多以前似懂非懂的地方,实现突然变的像 Hello World 一样简单,因此也干脆玩起 Unity 来,在这一切的积累之后,Unity 的学习变的非常轻松,成为了我晚上的休闲项目,或许不久之后,你会看到一款我做的游戏(可能会是 RPG)。

  我并不觉得全栈会使得你全面平庸,每种技术在做的时候都可以为其他的技术提供思路,而在你了解各种技术的前提下,深入其中的某个技术,时常能够带来对其他技术的反哺。相反,了解的技术如果非常狭隘,很可能才是限制自己潜能的原因。

  尊重与和平

  在团队沟通的时候,对对方技术的了解能减少非常多的沟通成本,并带来尊重和和平。

  很少见大神在一起争论谁该来让步,相反往往都是初窥门径的人整天吵个没完,脾气一点就爆。

  虽然很难讲整个行业的水平能很快有质的变化,但是我想如果产品需求能够详细的描述清楚,说清楚原因,技术人员之间能够在一起相互学习,耐心的探讨,设计师能够尊重技术纬度的事情,设计出更符合当下的原型,那一切就会往者好的方向发展,这一切就从了解对方的工作开始。

时间: 2024-10-06 13:13:11

[查异常网]-20160401-为什么你应该尝试全栈的相关文章

为什么你应该尝试“全栈”

程序员看到“全栈”这个概念,大概会有两种反应 1. 卧槽,这个好,碉堡了 2. 你懂毛,全栈就是样样稀松 以上两种反应其实都有失偏颇.因为即使只学一门技术,水平很菜的人也多的是,而全栈工程师当中样样都做,而样样都做得不错的也不少.更别说这个世界还存在另外一种爆栈型的程序员,做什么,什么都精. 从我的个人实践出发,全栈学徒至少要掌握以下几种技能: Web 前端开发,至少掌握一种前端框架: Server 后端开发,至少掌握一种后端框架: Server 运维,掌握 Linux Server 的搭建与维

为什么你应该尝试全栈?

今日小节: LANG=C sed -r "s/[\x81-\xFE][\x40-\xFE]//g" (去汉字) 程序员看到全栈这个概念,大概会有两种反应: 1. 卧槽,这个好,碉堡了 2. 你懂毛,全栈就是样样稀松 以上两种反应其实都有失偏颇,即使只做一种技术,做的很菜的多的是,而全栈但是样样都做的不错的也不少,更别说这个世界还存在另外一种爆栈型的程序员,做什么什么精. 全栈学徒至少要掌握以下几种技能: Web 前端开发,至少掌握一种前端框架 Server 后端开发,至少掌握一种后端框

为什么你应该尝试“全栈”[转载]

编者按:本文作者周楷雯,90 后 CEO,Catch 团队(http://catchchat.me/)创始人,全栈开发者. 擅长 iOS 开发.UI 设计.Ruby on Rails.界面动效.3D 建模等技能. 曾独立开发 Piner.Coinsman.MilkPass 等 App.热爱开源社区, 有 PNChart.Waver 等开源项目. 程序员看到全栈这个概念,大概会有两种反应 1.卧槽,这个好,碉堡了 2.你懂毛,全栈就是样样稀松 以上两种反应其实都有失偏颇,即使只做一种技术,做的很菜

[查异常网]-20160331-谈谈J2EE项目中的异常处理

为什么要在J2EE项目中谈异常处理呢?可能许多java初学者都想说:“异常处理不就是try….catch…finally吗?这谁都会啊!”.笔者在初学java时也是这样认为的.如何在一个多层的j2ee项目中定义相应的异常类?在项目中的每一层如何进行异常处理?异常何时被抛出?异常何时被记录?异常该怎么记录?何时需要把checked Exception转化成unchecked Exception ,何时需要把unChecked Exception转化成checked Exception?异常是否应该

[查异常网]-20160401-清除代码异味

为什么我们需要有质量的代码? 敏捷开发方法是用来应付那些要求代码做大量改动的反馈信息的方法. 如果程序没有用一种好的表达方式来表现,那程序会很难读,难维护,难修改. 什么是代码异味? 代码异味是一种由写的很差的代码引起的一种有臭味的感觉,一种程序什么地方会有问题的感觉 异味更多的是来自一种直觉,而不是一种有据可查的标准,当你看到有味的代码时你就“感觉”到了 如果你不把异味清除,不久之后你就会习惯这种气味,不再对它有察觉 用任何语言都能写出有异味的代码:即使最简单安全的语言,你也能做出天才才能想出

[查异常网]-20160403-程序员总结:帮助你早些明白一些道理

1. 分享第一条经验:“学历代表过去.能力代表现在.学习力代表未来.”其实这是一个来自国外教育领域的一个研究结果.相信工作过几年.十几年的朋友对这个道理有些体会吧.但我相信这一点也很重要:“重要的道理明白太晚将抱憾终生!”所以放在每一条,让刚刚毕业的朋友们早点看到哈! 2. 一定要确定自己的发展方向,并为此目的制定可行的计划.不要说什么,“我刚毕业,还不知道将来可能做什么?”,“跟着感觉走,先做做看”.因为,这样的观点会通过你的潜意识去暗示你的行为无所事事.碌碌无为.一直做技术,将来成为专家级人

[查异常网]-20160402-解决「问题」,不要解决问题

工程师有喜欢解决问题的天性,尤其不能忍受他的系统里面有 bugs.所以只要碰到问题,他就想要把它们通通解决掉,似乎只要能够解决越多问题,他就能够创造越多价值.这样的逻辑在企业用软件的开发.维护中,或许是对的,但拿到消费者市场里面,却几乎是杀死创业者最重要的原因. 问题的价值 根据定义,每个问题的价值是不一样的.有些问题对消费者而言非常痛 (癌症.氧气),有些则没什么大不了 (擦伤.臭味).有些问题对某些人非常严重 (下雨天没雨伞),对另外一些人却没什么大不了 (晴天没雨伞).既然创业是在创造价值

某课网 - 全网首发mpvue小程序全栈开发

第1章 课程简介本章节介绍了课程概述,教学方式 ,还有小程序项目的演示.第2章 原生小程序对原生小程序做一个入门的介绍,包括小程序帐号申请和开发工具安装和使用,小程序目录文件的讲解,再简单把小程序原生的组件和API过一下. 第3章 使用vuejs开发小程序本章节用一个todolist案例,带着vuejs入门,再用mpvue的方式重写这个案例,为实战项目开发打好基础. 第4章 koa2入门本章节讲解 koa2入门相关的基础知识点,为实战项目的服务器开发部分做准备,其中包括,使用koa2开发web接

浪潮与网易云“互联网+”,用全栈一体机拿下私有云市场

关于本次传统企业数字化转型,核心要点是在云上完成数字化的产业升级,这是毕马威最新研究报告所指出的.毕马威认为,混合云通过建立传统IT与云环境之间的纽带,打破了IT上一代技术与未来云技术间的障碍.混合云为传统大型企业提供了一个全面连接数字化解决方案的平台,企业可以通过这个平台,自主选择未来业务的部署模式,以较小的代价.较低的风险来推进数字化转型之路. 目前以企业愿意接受的一体机形式交付的混合云,只有微软的AzureStack.自去年11月在中国市场发布以来,联想与华为都推出了AzureStack一