知乎-顾鹏-对Full Stack Engineer的认识

2024-02-10 07:48

本文主要是介绍知乎-顾鹏-对Full Stack Engineer的认识,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

动机

  1. 做这样一个简单的app:一个天气应用,干净清爽的界面,天气信息一目了然。它不仅可以精确预测未来10天的天气,还可以显示某地的历史天气信息。它具有自定义提醒功能,支持web版本,iOS版,Android版。

  2. 为什么想要做这样一个App?因为你喜欢旅行,但没找到一个天气app可以提供你下个月或者某个特定月份的天气信息;因为你懒你没有每天看天气预报的习惯,你想要在第二天温度达到30度以上或者温差有+/-7度的时候,获得温馨提示;因为你要成为一个Full Stack Engineer,你必须不断训练每个stack的能力。

Web版

  1. 你决定用mysql来存储用户数据,用nosql存储历史天气数据。你用Redis作为cache,缓存一些最常请求的天气数据。你用Python写后台,功能简单,后台不复杂,用户注册登录,抓取返回某城市的天气数据,某地的历史天气数据,很快便搞定。

  2. 后台开发并测试好了,接下来是web前端。你十分清楚一个好的UI设计对一个app的重要性,你也明白UI的设计不只是为了美观,更重要的是提高信息的可读性和程序的可用性。幸好你平日的积累这次派上用场了。你把之前保存下来的上百个优秀的UI设计作品拿来研究,你从书架上拿出Norman的那本经典 - The Design of everyday thigns 重新细读。最终你用白纸黑笔敲定了第一个版本的UI,简洁直观,没有任何多余的设计,所有元素的排列间距 大小颜色都恰到好处。你相信即使天气不好,但用户只要使用这个app都会有着愉悦的心情。

  3. 那么开始写前端吧。啊,别急,都忘了还有icon和logo,可是不会PS不会AI怎么办呢,学吧。你平日喜欢结交不同领域的朋友,正好几周前在一个活动上你认识一位朋友做设计的。她花一个下午的时间教你基本的PS和AI的使用,并对你的UI设计给出了一些意见。你请她吃了顿晚饭表示感谢,然后立即回家根据她的一些建议重新调整了UI,这次你在PS里把UI画了出来,icons和logo也顺道一起做了。

  4. 接下来的一周,你学习HTML,CSS,以及javascript,并漂亮地把前端搞定。

发布App

  1. 在朋友圈发了个状态,找人帮你做Beta测试。他们都首先问你是什么app,一开始你简单回答一个天气的app。但你发现,这不能提起他们的兴趣。你觉得你需要用语言,用故事包装一下。不光是作为别人「是什么app」提问的回答,也是成为Full stack Engineer道路上的一个重要技能。

  2. 你去看了所有你喜欢的产品的主页,从他们的文案上获得一些灵感启发;你读了经典的On Writing well,发现好的文案,好的设计,其实和好的代码很相似,都是重在交流,如何让他人毫不费劲地明白你要表达的内容。你的故事要吸引人,你的产品介绍要在1分钟内解释清楚,并确保你的父母可以毫无压力听明白。

  3. 一切就绪,产品上线了。反响不错,用户持续增加。很多用户希望有移动版本,于是你立即投入到iOS版本的开发上。

iOS版及后台优化

  1. 你花一周不到时间学习了基本的语法和工具使用便投入到app的开发中。你知道learn by doing 是最好也是最快的。由于之前学习了设计的基础,UI,icons很快搞定,不久iOS版本便发布了。iOS的发布带来了更多的用户增长,后台服务器的压力颇大,你知道是时候优化后台了。

  2. 你在AWS上多开了2台服务器,并写了一个script来自动化部署过程。

  3. 你改用uWSGi协议,用uwsgi作为application server

  4. 你使用Nginx来做并发,负载均衡…
  5. ……
  6. ……

成立公司

  1. 用户持续增长,每天你都会收到十几二十封用户的邮件。你很感激这些愿意花时间给你写邮件的用户,你相信他们是你最重要的用户,是潜在的付费用户。如果你把他们像上帝一样对待,他们同样也会把你看作是上帝。所以除了睡觉时间的发来的邮件,每一封邮件,你都会在2小时内给予回复。

  2. 果然这样的付出是收获巨大的,他们不仅惊讶且非常感谢你的快速回复,他们会在app store里给你★★★★★的评价,他们在社交网站上分享你的app,他们甚至会主动提出捐款给你。

  3. 你从快速的用户增长中嗅到了商机,你开始思考如何赚钱。广告你是坚决不能允许的,你认为再精确的广告也会影响用户体验。你设计了2个不同的付费方案,你打算用A/B测试看哪个方案更好。你分别给200个用户发去邀请尝试付费的邮件,邮件内容你精心打磨过,并在最后写上:CEO & Founder. 通过分析2种方案的用户行为,你决定将使用第一种方案。

  4. 接下来,你相信差不多是时候成立个公司了。为了省时间,你花2000块钱找了个园区挂靠并帮你注册公司。公司的名字让你头疼了很久,你不想只是简单的用这个app的名字作为公司名字,你知道公司将来还会做出其他优秀的产品。你希望这个名字简单易记,同时其含义也是你公司文化的象征。

  5. 公司注册下来了,但银行那边得自己跑。你联系了一些媒体编辑,邀请他们来试用你的产品;你重新设计了产品主页,并开始写产品的blog;你在各大社交网络都给app注册了账号,即做社区客服也为宣传… 这些事大大压缩你写代码的时间。以往你都是以代码量作为衡量自己当天工作效率的指标,所以这些天你总感觉没做啥工作。

  6. 这样的发展早已超过你的预期,这个app从一个side project几乎变成了你生活的全部。你跟你女朋友半个月才出去约会一次,为了省时间你总是约她在酒店房间见面,她抱怨不断;你1个月没跟朋友出去喝酒了;你2个月都没锻炼过身体… 你意识到, YOU CAN NOT DO THIS ALONE,你需要帮手,你需要找人一起把这个做下去。

  7. 但你不是要成为Full Stack Engineer么?你现在是了么?

Full Stack Engineer

  1. 设计,后台开发,前端开发,移动开发,运营维护,PS,文案… 好像都会了,这算Full Stack Engineer了么?

  2. 不,这只是踏上成为Full Stack Engineer的第一步。你知道目前只是每个stack都懂一点,离senior或者expert还差得远,而要每个stack都做到极致,需要大量的时间和精力。精力有限,产品开发紧迫,力不从心啊,这条道路也太孤独,因为你不需要与任何人进行协作。难道要把一些stack的任务交给别人做么?这样算是放弃成为Full Stack Engineer么?

  3. 不!这不是。
    什么是Engineer?「Engineers are versatile minds who create links between science, technology, and society」
    Engineer的本质工作是设计,开发出应用于大众的产品。

  4. 一个真正的Full Stack Engineer,他从生活中发现问题,洞察需求,他设计解决方案,并开发出初始版本的产品。为了达到目标,他愿意去学习任何领域的技能和知识。同时他不追求一个人完成所有工作,如果有人可以比他在某方面做得更出色,便会十分热情的邀请他们加入。

  5. 最终他的职位也许不再是Engineer,他不再设计UI,不再写代码… 他的工作不再是design and building an app or product,因为他有更大更重要的任务要做 - design and building a team or a company which builds great products.

  6. 而这时,社会给了他们另一个称呼 - 创业者。尽管众人已忘记他们engineer的身份,但在他们骨子里,内心深处,自己始终都是一个engineer。当他们需要从头再来时,他们毫不犹豫从设计开发产品做起。Nikola Tesla,Ferdinand Porsche,Henry Ford,Jack Dorsey,Mark zuckerberg,Elon Musk… 细数那些改变了或正改变世界的创业者,他们大多数是engineer背景,热衷于设计创造。他们学习技能和知识,不是为了成为某个领域的专家;而是因为那些 是完成自己目标所需要的。

个人思考

  1. 在知乎中发起的,”怎样成为全栈工程师Full Stack Developer?“中,有人提出了”一个真正的全栈工程师,目标只有一个:创业。“这个观点,和上文胡鹏的观点其实是一致的,只不过在这里说得更加清晰一点,看了之后我感触比较深。

  2. 上文中,不仅在讲关于FSE的学习历练过程,而且也描述了一个潜在创业者的成长过程。

    1. 从生活刚需或个人想法出发,app的设计理念的诞生;
    2. 后端开发;
    3. 前端开发;
    4. 初步上线;
    5. app优化;
    6. 多终端支持;
    7. 用户积累,创办公司的条件成熟;
    8. 招人,构建团队,管理公司;
    9. 新的产品;
    10. 不断发展;
    11. ……
  3. 整个过程非常清晰,同时我一直在关注微信公众平台上一个栏目”格局生涯”,也讲到了很多有关创业的事情,这里列举两个:

    1. 【企业推荐】波波网:从发型师垂直互动交流社区切入美发 O2O
    2. 【企业推荐】海外购物分享社区小红书,获几百万美元A轮融资
  4. 因此,成为全栈工程师,作为一个创业者,是我走技术路线的目标。当前,好好积累技术,跟大牛学习,积累人脉吧。任重道远,好好努力。

这篇关于知乎-顾鹏-对Full Stack Engineer的认识的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/696535

相关文章

Java架构师知识体认识

源码分析 常用设计模式 Proxy代理模式Factory工厂模式Singleton单例模式Delegate委派模式Strategy策略模式Prototype原型模式Template模板模式 Spring5 beans 接口实例化代理Bean操作 Context Ioc容器设计原理及高级特性Aop设计原理Factorybean与Beanfactory Transaction 声明式事物

每天认识几个maven依赖(ActiveMQ+activemq-jaxb+activesoap+activespace+adarwin)

八、ActiveMQ 1、是什么? ActiveMQ 是一个开源的消息中间件(Message Broker),由 Apache 软件基金会开发和维护。它实现了 Java 消息服务(Java Message Service, JMS)规范,并支持多种消息传递协议,包括 AMQP、MQTT 和 OpenWire 等。 2、有什么用? 可靠性:ActiveMQ 提供了消息持久性和事务支持,确保消

认识、理解、分类——acm之搜索

普通搜索方法有两种:1、广度优先搜索;2、深度优先搜索; 更多搜索方法: 3、双向广度优先搜索; 4、启发式搜索(包括A*算法等); 搜索通常会用到的知识点:状态压缩(位压缩,利用hash思想压缩)。

C++——stack、queue的实现及deque的介绍

目录 1.stack与queue的实现 1.1stack的实现  1.2 queue的实现 2.重温vector、list、stack、queue的介绍 2.1 STL标准库中stack和queue的底层结构  3.deque的简单介绍 3.1为什么选择deque作为stack和queue的底层默认容器  3.2 STL中对stack与queue的模拟实现 ①stack模拟实现

SpringMVC-1.认识及配置

SpringMVC是一个基于请求驱动的Web框架,和structs一样是目前最优秀的基于MVC框架,现在的项目一般都使用SpringMVC代替Structs。 MVC模式中,Model是应用程序中用于处理应用程序数据逻辑的部分,通常模型对象在数据库中存取数据。View是应用程序中处理数据显示的部分,通常视图是依据模型数据创建。Controller是应用程序中处理用户交互的部分。通常控制器负责从视

【H2O2|全栈】关于HTML(1)认识HTML

HTML相关知识 目录 前言 准备工作 WEB前端是什么? HTML是什么? 如何运行HTML文件? 标签 概念 分类 双标签和单标签 行内标签和块标签 HTML文档结构 预告和回顾 UI设计相关 Markdown | Md文档相关  项目合作管理相关  后话 前言 本系列的博客将分享前端HTML的相关知识点。 本篇作为本系列的第一期博客,主要讲解H

认识鬼火引擎

一、Irrlicht简介 (1)概念Irrlicht引擎是一个用C++书写的高性能实时3D引擎,可以应用于C++程序或者.NET语言中。通过使用Direct3D(Windows平台)、OpenGL 或它自己的软件着色程序,可以实现该引的完​全跨平台。尽管是开源的,该Irrlicht库提供了可以在商业级的3D引擎上具有的艺术特性,例如动态的阴影,粒子系统,角色动画,室内和室外技术以及碰撞检测等。(

Jenkins--pipeline认识及与RF文件的结合应用

什么是pipeline? Pipeline,就是可运行在Jenkins上的工作流框架,将原本独立运行的单个或多个节点任务连接起来,实现单个任务难以完成的复杂流程编排与可视化。 为什么要使用pipeline? 1.流程可视化显示 2.可自定义流程任务 3.所有步骤代码化实现 如何使用pipeline 首先需要安装pipeline插件: 流水线有声明式和脚本式的流水线语法 流水线结构介绍 Node:

Java-数据结构-栈和队列-Stack和Queue (o゚▽゚)o

文本目录: ❄️一、栈(Stack):     ▶ 1、栈的概念:   ▶ 2、栈的使用和自实现:      ☑ 1)、Stack():       ☑ 2)、push(E e):      ☑ 3)、empty():         ☑ 4)、peek(E e):        ☑ 5)、pop(E e):       ☑ 6)、size(E e):  ▶ 3、栈自实现的总代

c++stack和list 介绍

stack介绍 堆栈是一种容器适配器,专门设计用于在 LIFO 上下文(后进先出)中运行,其中元素仅从容器的一端插入和提取。 堆栈作为容器适配器实现,容器适配器是使用特定容器类的封装对象作为其基础容器 的类,提供一组特定的成员函数来访问其元素。元素从特定容器的 “back” 推送或弹出,这称为堆栈的顶部。 stack接口 stack() 构造空的栈 empty() 检测stack是否为