不知道工作多长时间了, 觉得如果工作经验在三年之内的, 先把技能点点好吧, 大公司和小公司的要求还是不一样的, 所以你还是多钻研技术吧.
http://www.epubit.com.cn/book/details/4003以下引自<Web 全栈工程师的自我修养>
"野生程序员是指仅凭对计算机开发的兴趣进入这个行业,从前端到后台一手包揽,但各方面能力都不精通的人。野生程序员有很强大的单兵作战能力,但是在编入“正规军”之后,可能会不适应新的做事方法。
遭遇“野生程序员”
腾讯公司内部的团队很多,在团队管理上有项目和专业两个维度。也就是说,有些团队是项目维度的,整个团队共同维护一个产品,成员来自不同的职业岗位;有些团队是专业维度的,比如一个组都是前端工程师,维护不同的产品。
因为前端组是设计部最接近后台技术的团队,所以团队平时的工作和技术交流分享,都不局限于前端技术领域,还包括很多服务器端或者移动端的技术。从前端到后端,一些技术问题都要我们自己来解决。
在招聘前端工程师的时候,我们对应聘者的要求是,在掌握基本前端技术的前提下,最好有更为全面的技术。这样,即使我们的项目人力结构、平台和方向发生变化的时候,他也能够更加灵活地转移到其他角色中。而且技术的全面更能表现一个人对技术的热情以及较强的学习能力。从团队多样性来讲,多一些技术种类的话,大家在一起也能碰撞出新的火花。
有一次,我在 QQ 群发布了一条简单的信息:“招聘前端工程师,全栈更佳。”随后有一个“全栈工程师” A 君向我自荐。
我仔细看了他的简历:“三年工作经验,擅长 PHP 、 MySQL 数据库、 jQuery 、 HTML 和 CSS ,对 CDN 加速和网络安全也颇有研究。”他的简历让我眼前一亮,于是我跟他进行了一次简单的电话面试。
电话面试的第一个环节照例是让 A 君简短地介绍自己。 A 君在一个传统行业的小公司做 IT 技术支持工作,公司的 3 个网站项目都是他一手搭建,从架构到编码细节他都如数家珍。他号称能解决一切技术问题,老板提出的所有需求都能完成,而且只有他能完成。随着最近公司业务量越来越大,他还招了两个下属,但是主要的编程工作还是他在做。
我问他:“我们的职位是前端工程师,那么您有哪些前端方面的技能呢?”他回答:“我擅长 HTML 、 CSS 和 JavaScript 。”
“对于 Web 性能优化,您有哪些了解和经验吗?”他思索了一阵答道:“我们在发布项目之前压缩 CSS 和 JavaScript 源代码,这样文件体积就变小了,用户加载必要资源所花的时间也就更短了。”我继续说道,很好,还有吗?他想了半天,答不上来了。"
......(一大段话)
好吧,我想这是一个典型的“知易行难”的开发者,他知道采用 MVC 架构的项目的可维护性更高,可是在分离样式与结构上面还没有达到最基本的要求,甚至把 CSS 写在 HTML 中。至于他说的在本地环境上发现 CSS 文件经常缓存,可能要看看本地服务器的缓存设置是否有问题,然后再做调试。稍微了解一点 HTTP 的浏览器端缓存,这就不是难事了。我更欣赏在开发流程上花工夫去理解和优化的应聘者,而不是马马虎虎,只是以完成需求为目标的人。
我突然想到他说的“所有需求他都能完成,且只有他能完成”,于是就想问问他代码版本管理方面的问题。我说:“您们团队现在加入了两个新人,那么您们如何进行代码版本管理?”他回答:“我们有一台测试服务器,用 FTP 来测试代码,如果在测试机上没有问题的话,我们就会发布到生产环境。”
我说:“等等,我不是问您们代码部署的问题,是平时您们如何管理代码版本,如何分工协作的?”他说:“我们把代码从测试服务器上拷下来,修改完了之后再传上去。”
到这里,我终于明白为什么他们团队的新人无法快速融入项目了,因为项目没有使用 SVN 或者 Git 这样的版本管理工具。团队只有一个人在写代码的时候,缺乏版本管理工具的问题可能还不会暴露出来,但是当更多成员加入时,整个项目就会寸步难行,大家都要花大量的时间合并代码,以及找回丢失的代码。万一出现了外网 bug ,版本工具也能帮我们把站点状态快速恢复到之前的时间点。在本书的后面章节,我会详细介绍版本管理工具。
最后我抱着几乎绝望的心情,问了下关系数据库设计原则方面的问题,他的回答也不是很理想。
我知道,我又遭遇了“野生程序员”。