成为Web全栈开发"攻城狮"

自从 Facebook仅招聘全栈工程师,国内各大IT名企纷纷效仿,全栈对于工程师提出了新的要求,但是全栈究竟是什么?全栈的要求又是怎样的?并没有具体的技术要求。各大名企从来不缺少各个方面的专家,但实际工作中确实感觉只熟悉和精通某个领域开发人员,在Agile模式下End-to-end user story 验收模式下,局限性就突显出来,Team需要专才更需要全栈开发者。个人理解是所谓全栈是对开发的每个层次都有所了解和掌握,能适应跨功能Agile teams合作,从前端页面设计,前后端代码开发,安全性代码开发,单元测试代码开发,API测试代码开发,UI自动化测试代码开发,数据库开发管理,Web Server部署性能调优到代码部署,持续集成等,还包括与PM沟通,业务需求的理解,跨部分合作的有效沟通等软技能。要成为个合格的全栈工程师真是要经过项目的不断锤炼。回顾自己在过去的两年中,在Agile模式下和小伙伴们一起成长,我们是个全栈的团队,自己在Web设计实现,开发测试方面有了宝贵的实战经验,但自己的全栈路还需要继续深入下去。

全栈究竟指哪些具体的技术,还是由项目决定,以这次新项目为例,这次新项目需要参与到美国硅谷同事们项目中,与美国工程师合作机会难得,可以了解和熟悉新的开发技术和架构。粗略理了下, 全栈工程师需要掌握如下技术

Web前端技术

Open Source Brief introduction Links
Code Style
  • Airbnb JavaScript Style Guide
  • Angular 1 Style Guide
  • How to Write a Git Commit Message
Javascript Style Guide

Angular Style Guide

Git Commit Style Guide

ES6(ES2015) ES6 standard for javascript ECMAScript 6入门
TypeScript TypeScript is a superset of JavaScript that compiles to clean JavaScript output Typescript

gulp-typescript

Gulp front-end build system. Gulp
AngularJS JS framework designed for building web-apps AngularJS
ESLint ESLint is a tool for identifying and reporting on patterns found in ECMAScript/JavaScript code. In many ways, it is similar to JSLint and JSHint with a few exceptions… ESLint
SASS CSS extension language SASS
Foundation A Framework for any device, medium, and accessibility. Foundation is a family of responsive front-end frameworks that make it easy to design beautiful responsive websites, apps and emails that look amazing on any device. Foundation
Jasmine with Karma AngularJS Unit testing Jasmine

Karma

Protractor end to end testing for AngularJS Protractor

Web 后端技术

Open Source Brief introduction Links
Code Guidelines Style guidelines:

Indents should be 4 spaces (no TAB characters)
Keep line width under 132 characters
Use Unix line delimiter
Use UTF-8 encoding

Code Guidelines
Java Best Practices
Java 8 JAVA8 API

New features

Java8 Tutorial

Redis Redis is an open source (BSD licensed), in-memory data structure store, used as database, cache and message broker… Redis
Cassandra Apache Cassandra is a free and open-source distributed database management system designed to handle large amounts of data across many commodity servers, providing high availability with no single point of failure. Cassandra offers robust support for clusters spanning multiple datacenters, with asynchronous masterless replication allowing low latency operations for all clients Cassandra
PostgreSQL DB - PostgreSQL is a powerful, open source object-relational database system PostgreSQL
PMD PMD scans source code in Java and other languages and looks for potential problems PMD
Findbugs a program which uses static analysis to look for bugs in Java code Findbugs
Checkstyle Checkstyle is a development tool to help programmers write Java code that adheres to a coding standard -Static Analysis Checkstyle
TestNG TestNG is a testing framework inspired from JUnit and NUnit but introducing some new functionalities that make it more powerful and easier to use TestNG
Mockito Tasty mocking framework for unit tests in Java Mockito