全栈开发和web开发_成为全栈开发人员

全栈开发和web开发

This popular article has been updated in June 2017 to include modern technologies.

该热门文章已于2017年6月进行了更新,以包括现代技术。



A full stack developer who can get from a prototype to full MVP (minimum viable product) is often considered a jack of all trades, master of none, and with good reason. To define the modern full stack developer, we first need to focus on what the full stack developer used to be.

可以从原型发展到完整MVP(最低可行产品)的全栈开发人员通常被认为是万事通,无精打采 ,并且有充分的理由。 要定义现代的全栈开发人员,我们首先需要关注全栈开发人员过去的工作

全栈开发人员 (Full Stack Developers Then)

Long ago, circa 2000 (in Internet-time, 17 years is a very long time ago), a full stack developer was someone who could:

很久以前,大约2000(在Internet时,17岁是一个长的时间以前),一个完整的堆栈开发商是人谁可以:

  • whip up a web page in some Adobe tools like Photoshop or Fireworks

    在某些Adobe工具(如Photoshop或Fireworks)中刷新网页
  • turn this design into HTML, CSS, and hotspots on images (aw, remember those?)

    将此设计转换为HTML,CSS和图像上的热点(还记得吗?)
  • write some basic PHP 4.0 scripts (no object oriented PHP was on the horizon back then) to handle the server-side of the logic

    编写一些基本PHP 4.0脚本(当时还没有面向对象PHP出现)来处理逻辑的服务器端
  • store all dynamic data into MySQL, maybe do a bit of optimizing

    将所有动态数据存储到MySQL中,也许需要做一些优化
  • upload it all to a server via FTP and collect the paycheck

    通过FTP将其全部上传到服务器并收集薪水

Note that we’re talking about PHP here – a full stack Flash or Coldfusion developer had a different (but only slightly different) workflow.

请注意,我们在这里谈论的是PHP –全栈Flash或Coldfusion开发人员的工作流程有所不同(但仅略有不同)。

Those were simple times, life was good. One-man agencies were a dime a dozen, and people still had time to spend with their family after work.

那是一个简单的时代,生活是美好的。 一人代理机构只有一角钱,下班后人们仍然有时间陪伴家人。

What about now?

现在呢?

全栈开发人员现在需要了解什么? (What Does a Full Stack Developer Need to Know Now?)

These days, we have horrors like these happening – how did it come to this?

这些天来,我们有像恐怖这些事情发生-它是怎么来的?

App developer doesn't see his kids due to schedule

To succeed in a now-saturated market, we developers – who are often perfectionists – hesitate to delegate and often live by the “if you want something done right” motto. This forces us into a corner where we have to learn everything, so that being a full stack developer often ends up encompassing the following.

为了在如今饱和的市场中取得成功,我们的开发人员(通常是完美主义者)不愿意委托他人,并且常常遵循“如果您想做对的事情”的座右铭。 这迫使我们进入一个必须学习所有东西的角落,因此成为一个全栈开发人员通常最终会包含以下内容。

服务器管理员/开发人员 (Server Admin / Devops)

A developer must know how to do basic server management. This includes but is not limited to:

开发人员必须知道如何进行基本服务器管理。 这包括但不限于:

  • connecting to remote servers through the terminal, in non-GUI environments

    在非GUI环境中,通过终端连接到远程服务器
  • basic shell scripting

    基本的shell脚本
  • managing users and groups on a server

    管理服务器上的用户和组
  • managing server programs like Apache and Nginx for serving apps

    管理服务器程序(例如Apache和Nginx)以提供应用程序
  • managing firewalls and permissions

    管理防火墙和权限
  • installing new software and updating the distribution

    安装新软件并更新发行版

via GIPHY

通过GIPHY

Apart from these basics, a developer should know how to create good, healthy, isolated development environments, in either Docker or virtual machines like with Vagrant. If all of the above is something you’re unfamiliar with, we have an excellent book about it for sale here.

除了这些基础知识外,开发人员还应该知道如何在Docker或Vagrant之类的虚拟机中创建良好,健康,隔离的开发环境。 如果以上所有内容都不是您所熟悉的,我们可以在这里出售一本关于它的绝妙书籍。

The developer should also be intimately familiar with version control systems in order to be able to reliably produce backups and shareable, collaborative collections of code, tracked for changes across time. No modern developer workflow is complete without version control these days. We have a fantastic video course about this for purchase here.

开发人员还应该非常熟悉版本控制系统,以便能够可靠地生成备份和可共享的协作代码集,并跟踪跨时间的更改。 如今,没有版本控制,没有现代的开发人员工作流能够完成。 我们在这里有一个很棒的视频课程供您购买。

(Cloud)

Apart from actual managed or virtualized servers, a developer might need to know about the cloud – hosting on platforms like Heroku, Google Cloud, Azure, AWS, and others.

除了实际的托管服务器或虚拟服务器之外,开发人员可能还需要了解 -托管在Heroku ,Google Cloud,Azure,AWS等平台上。

via GIPHY

通过GIPHY

There’s a fair bit to be said about platforms and tools that are more hype than immediately useful, but being familiar with the services everyone is talking about can come in handy in the long run – a client could demand a switch of providers any day now, and it pays to be ready. Luckily, we have the ultimate guide to deploying to all these cloud hosts.

对于平台和工具而言, 比起立即使用要夸张得多 ,但还有很多话要说 ,但是从长远来看,熟悉每个人都在谈论的服务会派上用场–客户现在可能每天都需要更换提供商,而且做好准备是值得的。 幸运的是,我们拥有部署到所有这些云主机最终指南

后端 (Back End)

On the back end, apart from knowing the language of choice – in our case PHP and its multitude of frameworks and CMSes – a developer needs to be familiar with:

在后端,除了了解所选择的语言(在我们的例子中为PHP及其众多框架和CMS)之外,开发人员还需要熟悉:

  • web servers like Nginx and Apache which ties into Devops above

    Nginx和Apache等Web服务器,它们与上述Devops联系在一起
  • unfortunately, NodeJS for compiling JS, CSS, and other assets into statically hostable ones. Fortunately, there are ways to avoid NodeJS by using PHP.

    不幸的是,NodeJS用于将JS,CSS和其他资产编译为可静态托管的资产。 幸运的是,有一些使用PHP避免NodeJS的方法

  • tools like Composer for package and dependency management in PHP itself – no modern developer’s environment is complete without it

    诸如Composer之类的工具,用于PHP本身中的软件包和依赖关系管理–没有它,任何现代开发人员的环境都不完整

  • good API design, since most new websites today are API-based and merely talk to a detached front-end (more on that below).

    良好的API设计,因为当今大多数新网站都是基于API的,并且只与独立的前端通信(请参见下文)。
  • search engines like ElasticSearch (introduction here) are really important for performance

    像ElasticSearch这样的搜索引擎( 在此处进行介绍 )对于性能而言确实很重要

  • cronjobs and background jobs with tools like Gearman or libraries like Crunz

    使用Gearman之类的工具或Crunz之类的库进行cronjobs和后台作业

  • knowing about caching with Varnish, Redis, and similar powerful tools that slice hosting costs into the single digits will often make or break a project

    了解使用VarnishRedis和类似的功能强大的工具将托管成本切成个位数的缓存通常会成败一个项目

数据库 (Database)

The database is a separate section because apart from a good grasp of relational databases for data the schema of which won’t often change (like MySQL or PostgreSQL), a developer needs to know about noSQL databases like MongoDB, Redis, or Cassandra – not to mention graph databases like Neo4j.

数据库是一个单独的部分,因为除了很好地掌握关系型数据库(其数据架构不会经常更改(例如MySQL或PostgreSQL))之外,开发人员还需要了解NoSQL数据库(例如MongoDB ,Redis或Cassandra) ,而不是提到像Neo4j这样的图形数据库。

Database illustration

What’s worse, these are all on the server, under the control of the developer. There’s also several remote solutions like the Mongo-like RestDB or the Google-owned Firebase, etc.

更糟糕的是,这些都在开发人员的控制下,全部在服务器上。 还有一些远程解决方案,例如像Mongo一样的RestDB或Google拥有的Firebase等。

前端 (Front End)

On the front end, there’s true chaos.

在前端,确实存在混乱。

via GIPHY

通过GIPHY

For a comprehensive overview of what’s needed for a healthy front end workflow these days, please see this excellent post on the JavaScript channel, but as a TL;DR it includes the following:

有关当今健康的前端工作流程需要什么的全面概述,请在JavaScript频道上查看此出色的文章 ,但作为TL; DR,它包括以下内容:

  • NodeJS and NPM

    NodeJS和NPM
  • Yarn

  • Preprocessors and transpilers (like Babel) for things like Typescript, ES6, LESS, SCSS, SaSS

    诸如Typescript,ES6,LESS,SCSS,SaSS之类的预处理器和编译器(例如Babel)
  • Builders and task runners like Grunt and Gulp

    像Grunt和Gulp这样的建造者和任务赛跑者
  • Frameworks like VueJS, React, Angular

    VueJS,React,Angular等框架
  • Module bundlers like Webpack, Browserify, Rollup

    Web Pack,Browserify,Rollup等模块捆绑器

设计 (Design)

In design, a developer needs to know how to sketch out a prototype of an application before converting it into a usable format like HTML and CSS. This can then be made interactive with some JS, back-ends can be simulated with fake JS endpoints, and only once this shell app is done and its user experience design and interface design are ready can true development begin. This in and of itself is a huge undertaking and warrants a special set of tools like:

在设计中,开发人员需要知道如何草绘应用程序的原型 ,然后再将其转换为可用的格式(例如HTML和CSS)。 然后,可以使其与某些JS交互,可以使用伪造的JS端点模拟后端,只有完成此Shell应用程序并准备好其用户体验设计和界面设计,才能开始真正的开发。 这本身就是一项艰巨的任务,并需要一套特殊的工具,例如:

  • Photoshop and/or Illustrator or an open source alternative like Gimp / Inkscape – find out all about this on the Design channel

    Photoshop和/或Illustrator或Gimp / Inkscape之类的开源替代方案–在“ 设计”频道上了解所有相关信息

  • a good, fast editor like Atom or Sublime Text (here are 10 ST plugins for the full stack dev)

    一个好的,快速的编辑器,例如Atom或Sublime Text(这里有10个ST插件,用于完整的堆栈dev )

  • pattern pickers like Subtlepatterns and color pickers that match colors to one another

    模式选择器,例如Subtlepatterns和使颜色彼此匹配的颜色选择器
  • grid systems for CSS

    CSS 网格系统

  • everything from the Front End section above for the JavaScript mocking

    上面的“前端”部分中的所有内容,用于JavaScript模拟
  • ways to deploy a prototype online for customers to see it and give you feedback – Ngrok is very useful for this

    在线部署原型供客户查看并提供反馈的方法– Ngrok在此方面非常有用

记录中 (Logging)

To effectively keep an eye on an app’s health, a developer will need to be able to track error and access logs and extract valuable information from them. They’ll need to be able to recognize and flag trends, as well as notice upticks in CPU or I/O usage in order to prevent downtime on time. This ties into Devops a little, but demands its own particular set of skills.

为了有效地关注应用程序的运行状况,开发人员将需要能够跟踪错误并访问日志并从中提取有价值的信息。 他们需要能够识别和标记趋势,并注意CPU或I / O使用量的上升,以防止按时停机。 这与Devops有一些联系,但是需要它自己的特定技能。

via GIPHY

通过GIPHY

We have an excellent post about the ELK stack that’ll get you as ready as you need to be for all your logging needs – it combines ElasticSearch for searching logs, Logstash for collecting them, and Kibana for a dashboard in which to show them into a fine stack for user-friendly monitoring. There are even hosted solutions that take care of this for you, like Logz.io.

关于ELK堆栈 ,我们有一篇很不错的文章 ,它可以满足您所有日志记录需求的准备-它结合了ElasticSearch用于搜索日志,Logstash用于收集日志,以及Kibana用于仪表板,以将其显示到便于用户监控的良好堆栈。 甚至还有托管解决方案,例如Logz.io都可以为您解决这一问题

移动 (Mobile)

Finally, there’s mobile to consider. With webview on both iOS and Android becoming more and more performant, and the advent of PWAs (progressive web apps), native apps are losing their charm because of the complex process of developing them. A full stack developer thus has to be familiar with either PWAs, or go with something like React Native or a full on webview like NativeScript, Tabris, Cordova, Phonegap, or other implementation to get a good “client app” going for their API (see back end section above).

最后,要考虑移动设备。 随着iOS和Android上的Webview越来越高性能,以及PWA( 渐进式Web应用程序 )的出现,由于开发它们的复杂过程,本机应用程序正失去其魅力。 因此,一个全栈开发人员必须熟悉要么个PWA,或者用东西去像阵营本地或完整的WebView像NativeScript,Tabris,科尔多瓦,PhoneGap的,或其他实施方式来获得良好的“客户端应用程序”去为他们的API(请参阅上面的后端部分)。

做一个全栈开发者值得吗? (Is Being a Full Stack Developer Worth It?)

So after all this, is it worth it?

所以毕竟这值得吗?

First of all, it should be noted that very few full stack developers are this full stack – many focus on just most of these technologies and aspects, not all, simply because it’s not possible to pay good attention to them all.

首先,应该注意的是,只有全栈开发人员才是这种全栈开发人员–许多人只专注于大多数技术和方面,而不是全部,只是因为不可能对所有这些都很好地关注。

Secondly, knowing at least a little bit of everything might not make you a master of a specific craft, that much is true, but it’ll make you capable of understanding what goes into a project and which ones of these technologies a project actually needs. This is a priceless skill when delegating, opening an agency, or just guiding an existing team back from a lost path onto a well defined road.

其次,至少了解所有事情可能不会使您成为特定技术的大师,这是真的,但它使您能够了解项目中要涉及的内容以及项目实际需要哪些技术。 。 在委派,开设代理机构或只是将现有团队从迷路中带回到定义明确的道路上时,这是一项无价的技能。

I might not be the “JavaScript rockstar”, “Elasticsearch ninja”, “MySQL guru”, “Devops maniac”, or “Mobile wrangler” you’d fawn over, but in my case, being full stack lets me spread my wings, test out different technologies, and offer alternative, uncommon solutions to my clients when freelancing. The money can come from all sides, and contracts I can take up range from server work to WP plugin development and everything in between because I’m moderately familiar with all those things (the former more than the latter, admittedly). For me, being full stack is definitely worth it and if I compare it with my Flash-only days, while I did enjoy the work more back then (no JavaScript!), the pay was lower and the projects harder to get.

我可能不是您会喜欢的“ JavaScript摇滚明星”,“ Elasticsearch忍者”,“ MySQL大师”,“ Devops狂人”或“移动牧马人”,但就我而言,堆满了我可以展开翅膀,测试各种技术,并在自由职业时为我的客户提供替代的,不常见的解决方案。 金钱可以来自各个方面,我可以承担的合同范围从服务器工作到WP插件开发,以及介于两者之间的所有事务,因为我对所有这些事情都相当熟悉(诚然,前者比后者要多)。 对我来说,全栈无疑是值得的,如果我将其与仅使用Flash的日子进行比较,那时候我确实更喜欢这项工作(没有JavaScript!),但薪水却较低,而且项目更难获得。

How about you? Are you full stack or specialized? Whichever it is, do you feel like it’s worth it?

你呢? 您是全栈还是专业的? 无论是哪种方式,您都觉得值得吗?

翻译自: https://www.sitepoint.com/full-stack-developer/

全栈开发和web开发

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值