优秀全栈工程师成为
2021-06-28 16:16:52 5 举报
AI智能生成
全栈工程师绝不是一夜铸成的,你需要打好技术基础,强化核心技能,并持续学习。
作者其他创作
大纲/内容
什么是全栈工程师
掌握多种技能,并能利用多种技能独立完成产品的人
全栈工程师是一位资深开发工程师、架构师,以及具有敏捷开发技能的程序员
全栈工程师的价值
个人价值及自由度的极大提升
而当你成为一名真正的全栈工程师后,会感受到前所未有的个人价值与技术自由度的提升。
全局思维与技术前瞻性
于具备了各个开发环节与技术领域的知识,全栈工程师往往具有更好的大局观和技术前瞻性,能够在项目初期就选择正确的技术,并很好地把控一个项目的整体方向
降低沟通成本
栈工程师除了能够独立完成前后端的开发(甚至包括设计)外,如果能够在项目初期提前介入,便能很好地规避技术风险,过滤不合理的需求,从而显著降低因不同技术差异导致的沟通问题,显著降低项目风险
初创公司
初创公司往往资金有限,而一名优秀的全栈工程师能够帮助初创公司用最低的代价与最短的时间推出自己的产品
全栈工程师的技能栈
(1)关键开发技能(硬实力)
Git/GitHub
你必须掌握如何使用Git来管理和分享你的代码
至少一门编程语言
你需要精通至少一门编程语言,如Java 、PHP、Swift、C#、Python、Ruby、Perl等
运用开发框架和第三方库
流行的开发语言,一般都伴有出色的开发框架,比如,Java的Spring、MyBatis、Hibernate,Python的Django,PHP的thinkphp、yin,nodeJs的express
前端技术
你至少需要掌握HTML5、CSS3、JavaScript等基本前端技术,同时进一步学习JQuery、LESS、SASS、AngularJS或REACT等前端框架或第三方库。
数据库与缓存
任何产品或项目都需要一个数据库来存储数据。
作为全栈工程师,你也需要至少掌握一到两种数据库,并知道怎样与数据库进行交互。
目前流行的数据库主要包括MySQL、MongoDB、Redis、Oracle、SQL Server等
基本设计能力
你需要掌握那些最基本的UI设计原则,如色彩的搭配,基本的排版,并具备良好的审美能力和一些基本UI设计能力
根据自己的兴趣与发展方向
大数据方面的技术
移动互联网:学习Swift,开发iOS应用
(2)附加技能(软实力)
沟通
在项目进行的过程中,你更需要通过有效的沟通去确定方案,消除误解,与项目成员协同前进
良好的沟通能力将使你在团队中更具影响力,受到更多尊重和关注
问题解决能力
全栈工程师首先是一名工程师,他必须掌握用工程化的方法来解决遇到的各种问题
有很多提高问题解决能力的方法,但没有一种比实践更有效
时间管理
作为全栈工程师,你可能会被安排同时在不同的项目中承担不同的角色。
你需要合理地分配时间,保证所有的工作能够按时交付。
合理地进行时间分配,并对一些关键任务进行计划是很重要的
好奇心
对任何工作都抱有好奇心,并愿意不断学习和改善是那些优秀工程师的共同特性
优秀的全栈工程师需要不断地学习来抓住这些变化,跟上计算机领域发展的脚步
领导力
优秀的全栈工程师往往会被赋予技术Leader甚至项目管理者的角色
成为管理者并不是让你去支配其他人,或让其他人替你做事。
管理者需要理解你的团队成员的长处与不足,并知道如何以服务的态度使团队获得最大化的产出
成为管理者将会使你更加睿智、可靠和值得他人信赖,也会对你未来的职业生涯带来极大的益处
全栈工程师如何快速构建一个Web应用
1.网站定位与功能设定
资源发布与展示(核心功能,用户可以分享他们的资源,也可以看到其他人的分享)。
用户的第三方登录(为了快速开发,我省略了不必要的用户注册功能,全部采用第三方社交平台登录)。
用户反馈功能(用户反馈几乎是我自建的每个网站中都包含的功能,这使我能通过不断收集用户的反馈来改进这个平台)。
2.信息架构
业务实体
•User(用户)。•Resource(资源)。•Feedback(用户反馈)。
服务
•UserService(用户服务)。•ResourceService(资源服务)。•FeedbackService(用户反馈服务)
3.UI设计
借助现代网站设计工具(比如Blocs)或利用现成的网页模板去实现它
4.应用架构
没有最好的架构,只有最合适的架构。
为了便于系统日后的扩展,采用了前后端分离的架构设计
前端
目前最流行的两个前端框架是AngularJS和React
选择的是AngularJS(https://angularjs.org/)
可以使用它的Controller、Service、Directive等特性来构建出一个完整的Web应用
将来用Ionic来写出一个APP应用,由于Ionic也是基于AngularJS的
后端
基于Spring Boot(http://projects.spring.io/ spring-boot/)的框架,Spring Boot并不是Spring的一个升级版本,而是一个为构建微服务提供更好支持的全新框架。
借助Spring Boot,并基于Domain Driven Design的设计思想将系统的服务进行拆分,构建出一系列微服务。
后端使用到的框架技术组合
•Spring Boot:开发基于REST的服务,使用JSON作为数据交换格式。
•MyBatis:提供基于SQL的持久层支持。
•Redis:由于采用了前后端分离的做法,我用Redis来持久化用户Session信息。
•Spring Security:提供安全方面的支持,能与SpringBoot无缝整合。
•MySQL:在这个项目中我仍然使用了传统的关系型数据库。
•Maven:项目的包依赖管理,以及项目打包。
5.开发
基于Spring Boot及其他第三方库所提供的API来开发出基于REST的服务
在前端利用AngularJS将应用分为几个模块(UserManager,ResourceManger, FeedbackManager)分别开发
通过$http调用后端服务来进行业务处理和数据交互。
6.部署
(1)选择云服务器
上线初期,我们可以将系统的前端、后端和数据库都部署在一台云服务器上
如果你是一个学生,那么我建议你选择亚马逊云,因为它能提供首年免费使用的服务
(2)应用部署
后端:由于采用了Spring Boot,所以后端的服务可以用MavenPlugin直接打包成一个可运行的jar包,它集成了Jetty服务器可以直接向外提供REST服务
前端:前端是一个静态网站,包含HTML、CSS,以及图片文件。我将它部署在了一台Apache服务器上,当然你也可以选择Nginx这样的高性能服务器。
(3)安全
你需要定义出网站的安全策略,比如,用户组,用户权限的分配,出于对安全的考虑,尽可能将不需要开放的端口用防火墙隔离,只保留80等几个对外提供服务的端口
如果你的网站交互中包含一些敏感的信息,那么你还应该使用TLS对数据的传输进行加密处理。
7.性能调优
在正式上线之前,你还应该对网站做一些性能调优,以保证网站能够有比较好的响应速度。
使用YSlow等工具是一个不错的选择,它能告诉你网站加载缓慢的原因,并给出优化的建议。
常见的优化方法
合并压缩静态文件:将JavaScript、CSS文件进行压缩(去掉不必要的空格、换行和注释)与合并(将多个CSS或JavaScript文件合并成一个文件),并使用GZIP进行压缩,可以提高网站的加载速度
使用前端镜像库:对于网站中用到的第三方字体和前端代码库,我通过360和百度的前端镜像站点来获取,这样可以降低网站本身的流量开销,也可以提高网站的整体加载速度
利用云存储和CDN进行加速:技匠社的资源分享具备图片上传功能,而图片是最占带宽的,3M的带宽根本支持不了几个用户的同时访问
8.网站数据统计
网站上线后,你仍然需要对网站的访问量、用户情况进行持续的统计和分析。
我们可以借助第三方的统计平台来帮我们做这件事,如百度统计,你只需要在百度统计中注册一个账号并加入你的站点,然后在你的网站头部加入一小段JavaScript代码就能实现最基础的网站统计功能了,当你需要更多用户个性化分析时,可以在应用的内部增加相应的模块来进行数据的抓取和分析。
9.开发与设计工具
(1)Eclipse(https://eclipse.org/)
(2)Sublime Text 3(http://www.sublimetext.com/)
(3)CodeKit(https://codekitapp.com/)
(4)Sketch 3(http://www.sketchapp.com/)
优秀的全栈工程师应该走出去
参加技术大会
InfoQ、CSDN、GITC、优设、TED等网站都会定期举办各类技术大会
开拓思路,扩大技术社交圈
做公开演讲
全栈工程师作为团队的核心成员,他一定需要在团队内部做技术、管理等方面的演讲
尝试录制个人课程(视频或音频),并在慕课、网易课堂、优酷,或荔枝、喜马拉雅等各种媒体上分享自己的技能和知识
个人博客
优秀的全栈工程师懂得如何进行知识的积累,而技术博客就是一个很好的方式,将自己平时的实践、思考记录下来,配以tag标签方便日后的回顾
当你在不断记录和更新你的博客同时,来自不同地方的程序员也会通过你的博客认识你
参加线下活动
与以前的程序员总是宅在家里不同,现在的年轻程序员们更愿意分享和交流
很多网站也会组织不同技术主题的线下活动,在这些活动中你可以听到一些技术牛人的分享,还可以找到很多和你一样对技术富有激情的人
全栈工程师的Mac工具箱
1.设计类工具
Sketch 3
Affinity Designer
Framer
PaintCode
Hype 3 Professional
Pixave 2
Iconjar
Sip for Mac and iPhone
2.开发类工具
(1)Sublime Text 3
(2)Eclipse
(3)Dash
3.效率类工具
Alfred
CheatSheet
Fantastical
Day One
Ulysses 2.0
Screenflow
LICEcap
Unibox
0 条评论
下一页