写在开始编程之前
前言
自己学编程已经快两年了,有一些经验想分享一下,编程方面的经验因为大家选择的方向不同,所以这里不再提及,而是把重点放在编程以外的地方,也就是在开始编程之前,我们最好要学到什么。
提问的智慧
虽然篇幅很长,翻译的一般,而且例子有些过时,但是大体意思还是没问题的,建议提问之前看一看(懒得看的话,也可以只看目录)。
有一个古老而神圣的传统:如果你收到 RTFM (Read The Fucking Manual)的回应,回答者认为你应该去读他妈的手册。当然,基本上他是对的,你应该去读一读。
RTFM 有一个年轻的亲戚。如果你收到 STFW(Search The Fucking Web)的回应,回答者认为你应该到他妈的网上搜索。那人多半也是对的,去搜索一下吧。(更温和一点的说法是 Google 是你的朋友!)
在论坛,你也可能被要求去爬爬论坛的旧文。事实上,有人甚至可能热心地为你提供以前解决此问题的讨论串。但不要依赖这种关照,提问前应该先搜索一下旧文。
语言
不要怕用英语,不会英语就用翻译,Chrome 自带翻译比较好用(相对于 Edge 自带的翻译来说)。再说计算机词汇也不多,平常看的多了就明白意思了,也不用专门去学。
命令行
也不要怕命令行,很简单的,多用用就熟悉了,遇到报错就上网搜,然后找找别人的解决方案,复制改改再粘贴就行了。
Windows 上记得用 PowerShell,别用 cmd,容易出现一些问题,最好配合 Windows Terminal 来用(据说 Windows 11 自带了,没有的话应用商店装一个),体验挺好。
搜索
搜索引擎是一个伟大的发明,要好好利用,遇到不会的问题,先用搜索引擎搜一下,万一解决了呢,就算没解决至少也锻炼了信息检索能力,之后再寻求其他人的帮助。如果用的是开源软件,也可以在 Issues 或者 Discussions 里提问(外国人的软件记得用英文提问)。
对于搜索引擎的使用,我有几个建议,可以酌情参考:
- 不建议用百度、搜狗、360 以及其他更小众的搜索引擎
- 推荐有条件的用 Google 和英文搜
- 没条件的用 Bing ,搜中文还不错,搜英文不如 Google
- 搜索的时候用 关键词 + 空格,不要有疑问词和标点
- 请酌情屏蔽 CSDN 及各种垃圾采集站
根据我使用搜索引擎查找前端技术问题的经验来看,Stack Overflow 和 GitHub Issues 是最有可能存在正确答案的地方,但是用中文搜索引擎很难搜到这两个网站的内容(特指百度),所以建议使用 Google 或者 Bing 搜,而且要用英文来搜,成功率比较高。
网络
前端搭环境的时候,80% 以上的问题是因为网络连接不通畅造成的,所以尽量有一个良好的国际网络连接。
Markdown
一种非常简单的标记语言(HTML 也是标记语言),用来写文档的,它可以用一些纯文本的符号代表一些格式,比如标题、代码块、列表等。对于程序员来说,这是一种很方便的格式,因为它和代码一样,都是纯文本的格式,用任何一个编辑器就能打开进行编辑。
学习 Markdown 的资料网上随处都是,5 分钟就能看完,然后就是用它来写文档了(这篇文章就是用 Markdown 写的)。
Git
Git 是一个版本控制工具,比较常用,基本是程序员必备的技能了,应该也是现在最流行的版本控制工具,建议学一下。
推荐阅读
GitHub
GitHub 是很有影响力的网站了,来自世界各地的开发者都在上面写代码,更何况可以白嫖 GitHub Pages 和 GitHub Actions。建议注册一个账号,然后把 自己写的代码 放上去,说不定就能 在北极保存 1000 年 。
为什么不用 Gitee?有中文虽然好,但是下个文件居然都需要登录,还是算了。
环境配置
适用于 Linux 的 Windows 子系统
可以在 Windows 上运行 Linux,配合 VSCode 开发非常方便(JetBrains 系也支持)。而且安装只需要去应用商店下载即可,基本不用配置。
WSL 分为 1 和 2 两个版本,两者实现的原理不同,我比较喜欢 1 版本,因为读取 Windows 文件的性能更好,而且占内存少;WSL2 和虚拟机更类似,功能更全,但是占内存多。安装的时候推荐两个版本都装,自己试一试那个版本好用,而且切换版本只要一条命令就行,很简单。
新出的 Windows 11 貌似支持 WSL 图形化,也就是也是使用 Linux 里的 GUI 软件了,所以 Windows 可能是最好的 Linux 发行版。
推荐阅读
Docker
是一个容器,可以理解成一个简化版的虚拟机,在 Windows 上安装需要借助 WSL2(其实就是装在 Linux 里)。
我自己一般用 Docker 来运行一些服务,比如 MySQL,传统的安装方法需要去官网下载一个安装器安装,启动的时候需要到服务里启动,管理起来特别麻烦,有了 Docker 之后,只要一条命令就能启动 MySQL,而且删除啥的非常方便,也都是一条命令就完成了。
Chocolatey
一个 Windows 上的包管理器,用命令行安装软件,有自带的 软件仓库 。
可以用它来装一些环境,比如 JDK、Node 之类的,也是一条命令就装上了,而且会自动配置好环境变量,挺方便的。
前端
前端最常用的环境就是 Node 了,在 Linux 上直接用 nvm 就可以管理不同版本的 Node,在 Windows 上貌似也有类似的软件,不过好像不是很好用。
npm 是前端的包管理器,但是因为国内网络环境不太好,经常会有各种各样的问题。阿里出过一个 cnpm 来解决这个问题,但是依然会遇到一些问题。所以我推荐使用 yarn 和 pnpm 这两个包管理器,然后将 npm 和 yarn 的仓库地址添加到代理白名单中。
文字排版
為什麼你們就是不能加個空格呢
如果你跟我一樣,每次看到網頁上的中文字和英文、數字、符號擠在一塊,就會坐立難安,忍不住想在它們之間加個空格。這個外掛(支援 Chrome 和 Firefox)正是你在網路世界走跳所需要的東西,它會自動替你在網頁中所有的中文字和半形的英文、數字、符號之間插入空白。
漢學家稱這個空白字元為「盤古之白」,因為它劈開了全形字和半形字之間的混沌。另有研究顯示,打字的時候不喜歡在中文和英文之間加空格的人,感情路都走得很辛苦,有七成的比例會在 34 歲的時候跟自己不愛的人結婚,而其餘三成的人最後只能把遺產留給自己的貓。畢竟愛情跟書寫都需要適時地留白。
與大家共勉之。
所以一定要记得 加空格。
孔雀计划
「孔雀计划:中文字体排印的思路」由本站作者 Eric Liu 于 2017 年发起,系列倡导从中文出发、以中文的思维方式讨论中文排版。
关于中文排版的一个网站,有时间推荐读一读里面的文章。
我觉得排版是需要一点审美能力的,除此之外就是一步步实践,多去尝试和模仿别人的做法,然后自己再进行优化和总结,找到自己最喜欢的风格。当然,这需要时间的积累,而且如果不感兴趣的话,是一个很枯燥的事。所以我还是觉得要找到自己感兴趣的事去做,这是最好的。
推荐阅读
常用工具
原则:网页能解决的就不要下个软件。
Squoosh
Google 开发的图片压缩软件,同时可以用来转换格式和调整分辨率,支持 PWA 和离线使用,缺点是一次只能处理一张图片。
Figma
一个做设计的软件,在某种程度上可以替代 Photoshop,比如可以做 Logo、做软件介绍图片、做网页设计稿等等,最重要的是它是免费的,而且可以商业使用,而且打开浏览器就能用。缺点是没网不能用,桌面版也一样。
Can I use
查询某个功能的浏览器兼容性,HTML、CSS、JS 的 API 都可以查。
一些观点和想法
不一定对,欢迎讨论和提出想法。
不要只看书
这里的「书」指的是实体书。
现在的技术发展很快,尤其是前端,各种框架几个月就要更新一个版本,书的出版速度很难跟上技术的更新换代,所以最好的方式就是去 读官方的文档,同时可以上网找其他人写的文章辅助学习。当然,有的技术发展过程中变化不大或者老版本更适合,比如 SQL 和 Java 老项目,学习这些技术可以看看比较有名的书。
我个人是比较喜欢追新版本的,大部分还在维护的项目都是用的最新版的语言或者框架,不过有时候也会因为懒而不更新之前的技术(说的就是 Node,换版本要重装全局包,挺麻烦的,所以现在还是用的 14 版本)。
总之,我觉得学一个新技术还是要先看看网上的文档之类的,而不是直接去图书馆找书看。(其实,我自己不太喜欢实体书,因为太沉了。)
支持正版,尊重版权
我自己也没有完全做到这一点,但是作为软件开发者,肯定都不愿意看到自己的成果被别人剽窃和抄袭吧,何况用盗版还有法律风险。所以在选择软件的时候,我还是会尽量选择开源或者免费的替代品。