← 返回目录

基础知识篇

第 5 / 119 卷日期:

在那些不了解你的人的印象里,就是猜测你什么都会。

因此,这就会变成一个骂名,也是一个在目前看来很难改变的问题。在这方面只能尽可能地去了解一些通用的问题,并不能去了解所有的问题。在一次被面试全栈工程师

的过程中,有一个面试官准备了几个不同语言(JavaScript、Java、Python、Ruby) 的问题来问我,我只想说 Ciao —— 意大利语:你好!

除了这个问题——人们不了解什么是全栈工程师。还有一个问题,就是刚才我们说的成为专家的老大难问题。

无栈让我毫不犹豫地选择当全栈工程师有两个原因:

  1. 这个世界充满了未解的迷,但是我只想解开我感兴趣的部分。
  2. 没有探索,哪来的真爱?你都没有探索过世界,你就说这是你最喜欢的领域。

当我第一次看到全栈工程师这个名字的时候,我发现我已然是一个全栈工程师。因为我的学习路线比较独特:

中小学:编程语言 -> 高中:操作系统、内核、游戏编程 -> 大学:硬件、Web 开发 -> 工作:后端 + 前端

而在当时我对SEO非常感兴趣,我发现这分析和Marketing似乎做得还可以。然后便往 Growth Hacking 发展了:

而这就是全栈学习带来的优势,学过的东西多,学习能力就变强。学习能力往上提的同时,你就更容易进入一个新的领域。

参考书籍

•《精益企业:高效能组织如何规模化创新》 •《企业应用架构模式》

•《敏捷软件开发》 •《技术的本质》

基础知识篇

在我们第一次开始写程序的时候,都是以 Hello World 开始的。或者:

printf("hello,world");

图 19-1
图 19-1

图 15: Growth Hacking

又或许:

alert('hello,world');

过去的十几年里,试过用二十几种不同的语言,每个都是以 hello,world 作为开头。

在一些特定的软件,如 Nginx,则是 It Works。

这是一个很长的故事,这个程序最早出现于1972年,由贝尔实验室成员布莱恩·柯林汉撰写的内部技术文件《A Tutorial Introduction to the Language B》之中。不久,同

作者于1974年所撰写的《Programming in C: A Tutorial》,也延用这个范例;而以本文件扩编改写的《C 语言程序设计》也保留了这个范例程式。工作时,我们也会使用类似

于 hello,world 的 boilerplate 来完成基本的项目创建。

同时需要注意的一点是,在每个大的项目开始之前我们应该去找寻好开发环境。搭建环境是一件非常重要的事,它决定了你能不能更好地工作。毕竟环境是生产率的一部

分。高效的程序员和低效程序员间的十倍差距,至少有三倍是因为环境差异。

因此在这一章里,我们将讲述几件事情:

  1. 使用怎样的操作系统
  2. 如何去选择工具
全站分卷索引 · 119 卷
  1. 1Growth: 全栈增长工程师指南
  2. 2软件开发的核心难题:沟通
  3. 3大公司的专家与小公司的全栈
  4. 4全栈工程师的未来:无栈
  5. 5基础知识篇
  6. 6工具只是辅助
  7. 7语言也是一种工具
  8. 8提高效率的工具
  9. 9IDE
  10. 10终端或命令提示符
  11. 11包管理
  12. 12环境搭建
  13. 13Windows
  14. 14GNU/Linux
  15. 15学好一门语言的艺术
  16. 16输出是最好的输入
  17. 17如何应用一门新的技术
  18. 18Web 编程基础
  19. 19从 HTML 到页面显示
  20. 20HTML
  21. 21中文?
  22. 22其他 HTML 标记
  23. 23小结
  24. 24CSS
  25. 25简介
  26. 26样式与目标
  27. 27更有趣的 CSS
  28. 28JavaScript
  29. 29JavaScriptFul
  30. 30面向对象
  31. 31其他
  32. 32前端与后台
  33. 33后台语言选择
  34. 34PHP
  35. 35Model
  36. 36View
  37. 37Controller
  38. 38后台即服务
  39. 39后台即服务
  40. 40数据库
  41. 41搜索引擎
  42. 42前端框架选择
  43. 43前台与后台交互
  44. 44JSON
  45. 45WebSocket
  46. 46编码过程
  47. 47Web 应用的构建系统
  48. 48Web 应用的构建过程
  49. 49Web 应用的构建实战
  50. 50Git 与版本控制
  51. 51Tasking
  52. 52Tasking 开发任务
  53. 53写代码只是在码字
  54. 54内置索引与外置引擎
  55. 55内置索引与外置引擎
  56. 56如何测试
  57. 57测试替身
  58. 58Mock
  59. 59测试先行
  60. 60可读的代码
  61. 61命名
  62. 62函数长度
  63. 63代码重构
  64. 64提炼函数
  65. 65内联函数
  66. 66查询取代临时变量
  67. 67重构到设计模式
  68. 68上线
  69. 69隔离硬件:虚拟机
  70. 70隔离操作系统:容器虚拟化
  71. 71隔离底层:Servlet 容器
  72. 72隔离依赖版本:虚拟环境
  73. 73隔离语言:DSL
  74. 74GNU/Linux
  75. 75HTTP 服务器
  76. 76数据库端缓存
  77. 77前端缓存
  78. 78运行机制
  79. 79自动化部署
  80. 80依赖与包仓库
  81. 81构建软件包
  82. 82数据分析
  83. 83想法-构建
  84. 84产品-衡量
  85. 85数据分析
  86. 86分析数据
  87. 87用户数据分析:Google Analytics
  88. 88流量获取
  89. 89移动应用
  90. 90网站性能
  91. 91SEO
  92. 92什么样的网站需要 SEO?
  93. 93内容
  94. 94UX 入门
  95. 95什么是简单?
  96. 96进阶
  97. 97认知设计
  98. 98持续交付
  99. 99持续集成系统
  100. 100持续交付
  101. 101持续部署
  102. 102持续阅读
  103. 103遗留系统与修改代码
  104. 104遗留代码
  105. 105修改遗留代码
  106. 106速度优化
  107. 107模块重构
  108. 108Retro
  109. 109三个维度
  110. 110架构模式
  111. 111预设计式架构
  112. 112演进式架构:拥抱变化
  113. 113意图导向
  114. 114重构
  115. 115模式与演进
  116. 116相关阅读资料
  117. 117架构解耦
  118. 118CQRS
  119. 119CQRS 结合微服务