`

Java职业生涯(二)转“全栈开发者”

 
阅读更多

转自http://redis.iteye.com/blog/2006894

 

纯粹基于道德而掌握开发堆栈的每一方面的预期是合理的吗?可能不是,但Facebook这样要求。一个Facebook的员工在OSCON告诉我,Facebook只雇佣全栈开发者。那么全栈开发者是什么意思呢

 

对我来说全栈开发者是对每一层都熟悉的人,如果不真正对所有的软件技术感兴趣不会对它们精通。

 

好的开发者熟悉整个堆栈,他们是知道如何使生活周边的事更容易的人。这就是为什么在办公室我如此反对偏执的原因,当然,政治及沟通挑战在大型组织中还是按固有的套路。我认为Facebook所持有的招聘政策是:如果聪明的人用脑用心,就能在更短的时间内构件更好的产品。

 

全栈的层:

 

1.服务器、网络和服务器环境

  1. 知道哪里可能崩了和为什么会崩,没有什么是理所当然的。

  2. 适当的使用文件系统,云存储、网络资源,必须具备数据冗余和可用性的概念。

  3. 知道应用的伸缩性对硬件的需求。

  4. 什么是多线程和竞争条件?想想看,在开发机上你可能看不到这些,但是现实环境中它们就是会发生。

  5. 全栈coder还要能与运维并肩作战。提供有价值的错误信息和日志。确保它们是可靠的,因为运维会在你之前看到这些东西。(原文为DevOps

     

2.数据建模

  1. 如果数据模型有缺陷,业务逻辑和上层逻辑就要用奇怪的代码(很丑)来弥补数据模型的缺陷。

  2. 全栈开发者要能够建立合理的、标准的关系模型,包括外键、索引、视图、查找表等。

  3. 全栈开发者要熟悉非关系型数据存储(应该指的不止是NoSQL),并且知道它们相对关系型存储优势所在。

     

3,业务逻辑

 

  1. 应用提供的核心价值。

  2. 可靠的面向对象技能。

  3. 可能会用到的框架。

     

4,API层、Action 层、MVC

 

  1. 理解外部对数据模型和业务逻辑的操作。

  2. 该层会有很多框架应用。

  3. 全栈开发者要具备编写清晰、一致和易用的接口。过高的复杂度让人厌恶。

     

5,UI

 

  1. 全栈coder:a)知道如何创建可读的页面布局;b)或者明白自己需要帮助设计师。A或B,关键是要能有好的视觉设计。

  2. 掌握HTML5和CSS。

  3. JS正在逐步成为语言新锐,Javascript的世界里已经完成了很多激动人心的工作(node, backbone, knockout...)。

     

6.用户体验

 

  1. 全栈coder要知道用户需要的就是It works!

  2. 一个好的系统不会废了用户的手腕和眼睛。一个全栈coder会发现和审视需要8次点击、3步操作的流程,并最终把它一键搞定。

  3. 提供有价值的错误信息。如果崩溃了,就要向用户致歉。有时候程序员会写出让用户自我感觉很二的错误信息。

     

7.知道用户和业务到底要什么

  1. 现在我们模糊了架构的界限,但却可能远离了实际需求。

  2. 全栈coder要明确知道用户使用软件时的场景,而且要领会业务。

     

关于这个问题的其它方面:

  1. 编写高质量的单元测试能力。顺便说一下现如今连JS也可以做单元测试了。

  2. 持续集成。发掘程序构建中重复、可自动化的流程,在一定程度上自动完成测试、文档和部署。

  3. 对安全性的敏感,不同的层都可能有自己的脆弱点。

     

最后:

 

应用严重依赖一个特定的第三方实现(lib、系统、硬件等)是非常糟糕的实践。全栈开发者要知道了解全面不代表就可以走捷径。当然在抛弃原型法中,他们可以这么干。

 

在技术起步时很需要全栈开发者的多面技能。然而,在团队定型后,会越来越需要专注技能。

 

 

我不觉得在具备了多语言、多平台甚至跨行业的职业生涯之前,你可以称自己为全栈开发者。全栈远超“高级工程师”,它更接近是多语言的开发者并且能在更高的角度看到之间的关联。注意在我的列表中只有3-5项涉及到编码。

 
分享到:
评论

相关推荐

    Java柠檬班Java全栈自动化

    Java柠檬班Java全栈自动化课程是一项针对Java编程和全栈开发领域的专业培训,它针对的是...课程的设计旨在培养学员具备全面的技术能力,以便他们能够灵活应对软件开发中的各种挑战,为未来的职业生涯奠定坚实的基础。

    2020年JAVA程序员职业生涯规划范本.pdf

    作为一名JAVA程序员,职业生涯规划至关重要,因为这决定了你在IT行业的长远发展和专业成长。在信息化日益发达的今天,JAVA因其跨平台、稳定性和丰富的库支持,成为众多开发者的首选语言。以下是一些关键的知识点和...

    【职业规划】JAVA软件工程师职业生涯规划范本 (WORD档).doc

    【JAVA软件工程师职业生涯规划】 在当今信息技术飞速发展的时代,JAVA软件工程师作为IT行业的核心角色,有着广阔的职业前景。此份职业生涯规划旨在为JAVA软件工程师提供一条清晰的发展路径,帮助他们在职业生涯中...

    java面试资料

    在规划职业生涯时,Java开发者可以设定成为技术专家的目标,比如专注于架构设计、高性能系统开发或云计算解决方案。同时,也可以考虑管理方向,如项目经理或技术领导,负责指导团队并优化开发流程。 ### 4. 对加班...

    基于springboot+vue开发it职业生涯规划系统--附毕业论文+源代码+sql(毕业设计).rar

    《基于SpringBoot+Vue开发IT职业生涯规划系统》的毕业设计是一项综合性的项目,它结合了后端开发技术SpringBoot和前端开发框架Vue.js,旨在构建一个实用的职业生涯规划平台。这个系统不仅为用户提供个性化的IT职业...

    DesenvolvimentoFullStack:全栈学科竞赛

    全栈开发,也被称为全端开发,是一种涵盖前端和后端技术的软件开发方式。在这个领域,开发者需要具备从设计用户界面到构建服务器端逻辑,...这样的比赛有助于提升开发者全面的技能,并且对个人职业生涯的提升大有裨益。

    java北大青鸟2年毕业项目

    总的来说,【Java北大青鸟2年毕业项目】是一个全面的实践平台,它涵盖了从基础编程到高级应用的多个层面,旨在培养具备独立开发和团队协作能力的全栈Java开发者。通过参与这样的项目,学员不仅可以巩固理论知识,还...

    课工场Web全栈工程师7月份结业考试机试试卷.zip

    【标题】"课工场Web全栈工程师7月份结业考试机试试卷.zip"揭示了这是一个针对Web全栈工程师的结业考核,时间点...通过这个考试,学员可以检验自己在Web全栈开发中的理论知识和实践能力,为未来的职业生涯打下坚实基础。

    合工大《网站设计与开发》个人网站设计Java,html,css,js,sql

    在合工大的《网站设计与开发》课程中,学生通常会接触到一系列关键技术,包括Java、HTML、CSS、...通过实际项目练习,学生不仅可以加深对理论知识的理解,还能提高实际编程能力,为未来的职业生涯打下坚实基础。

    Java程序员必会的程序

    虽然JavaScript不是Java的一部分,但作为Web前端开发的主要语言,了解其基本语法和DOM操作,能够与Java后端进行有效交互,是全栈开发者的必备技能。 通过系统学习上述知识点,初级Java程序员不仅能构建坚实的编程...

    Java就业培训教程

    通过跟随张孝祥老师的引导,你将能够快速成长为一名合格的Java程序员,开启在IT领域的职业生涯。教程不仅提供了丰富的理论知识,还附带了实用的源代码和项目案例,让你在学习过程中能够做到理论与实践并重,从而更加...

    张孝祥Java就业培训教程书

    《张孝祥Java就业培训教程书》是一套全面而深入...总之,《张孝祥Java就业培训教程书》是一份覆盖Java全栈的详尽学习资料,无论是初学者还是有一定经验的开发者,都能从中受益匪浅,为自己的Java职业生涯打下坚实基础。

    作为程序员要取得非凡成就需要记住的15件事

    根据给定的信息,我们可以总结出以下15个关键知识点,这些知识点对于程序员在职业生涯中取得非凡成就至关重要: ### 1. 建立强大的个人品牌 建立强大的个人品牌非常重要,这意味着你需要通过各种方式(如社交媒体、...

    java毕业设计&课设-最新java十次方社交项目(视频+源码+资料).zip

    本资源主要涵盖的是一个基于Java开发的社交项目,名为“java毕业设计&课设-最新java十次方社交项目”,并附带了详尽的...通过该项目的学习,学员可以系统地提升自己的Java开发能力,并为未来的职业生涯打下坚实的基础。

    【Java毕业设计】JAVA个人博客管理系统-毕业设计.zip

    【Java毕业设计】JAVA个人...通过完成这个毕业设计,学生不仅可以巩固Java基础知识,还能掌握Web开发的全栈技能,包括数据库设计、前后端交互、测试策略以及项目管理等方面,为今后的软件开发职业生涯奠定坚实基础。

    thinkgem-jeesite4-master_JAVA源码_

    《深入解析thinkgem-jeesite4-master:Java企业级开发框架详解》 "thinkgem-jeesite4-master" 是一个基于JavaEE技术...通过深入研究和实践,开发者不仅能提高开发效率,还能提升自身的技术素养,为职业生涯添砖加瓦。

    微信小程序,小程序商城,商城,springboot框架,vue管理系统,java后台.zip

    【微信小程序】 微信小程序是腾讯公司推出的一种轻量级应用开发平台,它允许开发者在微信内部构建无需下载安装即可...通过这样的实践,学生可以提升软件开发能力,理解全栈开发流程,并为未来职业生涯打下坚实基础。

    达内,Java,Javascript

    【Java技术概述】 Java是一种广泛使用的面向对象的编程语言,由Sun Microsystems...在达内的课程中,学员可以系统地学习这两门语言,通过大量的编程练习和实战项目,快速提升技能,为未来的职业生涯打下坚实的基础。

    狂神说Linux课堂笔记.pdf

    综上所述,这篇狂神说Linux课堂笔记是对那些打算从事Java全栈开发者的Linux学习指南。它不仅提供了Linux的理论知识,还结合实际开发工作,指出了学习Linux的重要性及学习路径。通过这堂课的学习,开发者可以为在...

    Java毕设之远程家庭健康监测管理系统.rar

    【Java毕设之远程家庭健康监测管理系统】是一个完整的Java毕业设计项目,主要涵盖了Java后端开发、前端界面设计以及...通过深入研究和理解这个项目,学生可以提升自己的全栈开发能力,为未来的职业生涯打下坚实的基础。

Global site tag (gtag.js) - Google Analytics