大家好,我是程序员鱼皮,从大学期间上线个人博客网站开始,我做个人站长已经有 7 年多了。在这个过程中,我收获了很多,除了技术成长带来的快乐外,个人站长最开心的莫过于有用户使用、并且留下好评,真的很有成就感。当然,这期间也经历过很多痛苦,比如网站被攻击、数据库被黑、用户反馈的 Bug 无穷无尽等等。。。
不过现在回过头来看,经历这些痛苦反而是一种 "幸福"。一方面我会因为这些事获得成长,丰富自己的经验;另一方面有人攻击你、反馈 Bug,证明了你的网站获得了一定的关注。而做个人站长,最痛的事情莫过于:用心做的网站没人用。 我相信很多有自己网站的朋友,应该会感同身受吧。
这段时间我也花费了大量的精力带团队开发优化编程导航网站,又增加了不少经验值。
这篇文章,我会以该网站为例,分享成为个人站长需要做的工作,以及我做个人站长的一些经验。希望对想成为独立开发者的朋友们有些帮助。
如何成为个人站长?
想成为个人站长?想做好个人网站?以下的事情都是必须要做的。
大家也可以把这段分享当做是 "网站开发流程" 的学习。
1、先有 IDEA
你要做什么?
明确网站目标和核心价值,是创建网站的第一步。想法是最值钱的,一个好的 IDEA 是网站成功的关键。
注意,好的想法可不是找别人要来的。之前我遇到过比较搞笑的问题是 "鱼皮鱼皮,我想做个创业项目,能做什么呢?"
别人要是有好的 IDEA,为什么自己不做,而是要无偿分享给你?
怎么获取 IDEA 呢?我有 2 种方法是:
- 从自身的需求出发,思考你需要什么。比如学校抢课,这就是一个需求。
- 多看别人的网站,从中找到灵感和改进的空间。多问自己:现有的网站有哪些地方做得不够好?举个例子,经常有朋友吐槽微信占用空间过大,能不能自己开发一个比它更好的呢?搞不好你就是下一个 pony 🐴。
比如我的编程导航,IDEA 就源于我做编程知识分享多年来读者们遇到的问题 ------ 学编程效率低、资源分散、缺少交流、没有动力。所以我们的目标是:提供一站式编程学习交流社区,做您编程学习路上的导航员。
2、产品原型
有了 IDEA 之后,就要开始构想:网站要做成什么样子?要有哪些核心功能?一般要编写详细的产品设计方案和产品原型图。
在公司里,这一般是产品经理做的事,但对于个人站长,你就是产品经理,整个网站做成什么样,由你来决定!
首先要梳理网站的功能模块,可以用思维导图或者列表来展示,比如我们编程导航的功能模块设计:
- 用户模块:包括用户注册、登录、个人资料管理等。
- 文章模块:允许用户发布、编辑和阅读文章。
- 消息模块:通知用户有新评论、动态等。
- 搜索模块:聚合搜索所有的文章、资讯。
- 教程模块:提供免费和付费的学习教程、支持专栏阅读和视频播放。
确认好功能模块后,要针对每个功能设计产品原型图。没有专业的产品知识和产品思维也没关系,这是可以锻炼出来的,可以通过看、模仿、甚至抄一些成功网站的功能和设计来帮助你快速完成产品原型。
我们编程导航的首页原型图,就是我自己画的,画图工具用语雀自带的画板或者 draw.io 就可以:
3、需求分析
完成产品原型后,你会发现有一大堆的功能要开发。
别慌,这种时候我们要进行需求分析和排期:明确哪些需求要做?哪些需求先做?
如果是团队开发,一般产品会拉开发、测试、设计等不同岗位的同学一起开需求评审会来讨论。个人建站的话,就没必要开会了,也没必要使用专业的需求管理工具,反而麻烦。建议整理出一个需求排期表,将所有需要实现的功能按优先级排序。确定哪些是必须先完成的,哪些可以放在后续迭代中完成。对于大的功能模块,可以拆分为多个小需求,敏捷开发,有序推进。
需求排期表示例,这是我 6 月刚带大家做完的新项目:
4、前期设计
明确需求后,就要开始 多线开工 了,设计师要出设计稿,测试人员要设计测试用例,开发同学要进行技术选型和方案设计。
对于个人站长来说,以上所有的事情都要自己做。如果你是一名程序员,个人的建议是在网站开发初期,参考其他网站而不是自己做设计,先完成功能、有人用产品,再去抠那些细节。也没必要走标准的研发流程一样设计测试用例,完成功能后自己通过点击验证功能可用即可。但是,技术选型和方案设计是一定要认真做的,最好出一个详细的文档,明确实现的方案和细节,防止开发过程中才发现有问题或者无法实现。
技术方案设计包括核心实现方案和细节确认、库表设计、接口设计等,比如我们编程导航交流板块的库表设计,就是通过方案文档进行确认后,才写代码开发的。
5、开发实现
这段是程序员朋友们再熟悉不过的流程,也是技术通道的同学 "吃饭的本领"。对于网站开发,通常分为后端和前端。
5.1 后端
后端提供数据的操作和管理能力,通常后端开发同学需要提供接口文档,供前端同学查看。
有很多主流的后端开发语言比如 Java、Go、C++、PHP、C# 等,需要使用一个提高效率的开发框架比如 Java 的 Spring Boot(Quarkus)、Go 语言的 Gin 等。
像我们编程导航的后端,就是用 Spring Boot 开发的,绝大多数功能用 MySQL 数据库就能搞定,有些功能还用到了 Redis、WebSocket 等技术。
5.2 前端
前端提供给用户使用和交互的页面。通常使用 HTML、JavaScript、CSS 三件套,配合框架如 Vue 或 React 提高开发效率。除了开发页面外,前端还需要考虑浏览器兼容性、页面打开性能、搜索引擎优化(SEO)等等。
前端开发中,挑选一个好用的组件库可以大大提高开发效率,像我们用的是 Ant Design,优点是组件全面,基本每个页面都可以直接使用组件、像拼图一样完成开发。缺点就是这个库相对有点重,估计我们后面也会优化吧。
对于个人站长,前后端都要自己开发。我的建议是先做后端,明确了接口、数据和逻辑的定义后,再开发前端,会轻松很多。而且最好把复杂的计算逻辑放到后端,避免前后端维护 2 套逻辑,出现混淆和冲突。
6、测试验证
开发完成后,需要进行多轮测试:
- 开发自测:开发人员自己进行初步测试,确保代码基本功能正常。比如 Java 开发者可以用 JUnit 编写单元测试。
- 测试(QA)测试:质量保证团队进行详细测试,包括功能测试、性能测试、安全测试等。
- 产品验收:由产品经理或需求方进行最终验收,确保产品符合需求。
对于个人站长来说,除了自己测试外,可以邀请一些自己的朋友体验,帮忙找找 Bug。
在网站正式上线或收费前,一般是要经过充分内测的。像我以前开发的一些网站就是没有做好测试,结果上线就被人钻了漏洞。不过我觉得在流量没那么大的时候,如果上线出 Bug 并没有实际的损失,那么测试环节投入的时间比重可以小一些,只需要留给用户一个可以反馈 Bug 的渠道就好。
7、部署上线
部署上线是指将网站文件放到服务器上,让用户可以通过域名访问。
之前给大家分享过很多种不同方式的上线教程了,其实并不难:
- 传统服务器上线教程:www.bilibili.com/video/BV1eT...
- 容器托管平台上线教程:www.bilibili.com/video/BV1Xm...
- 微服务项目上线教程:www.bilibili.com/video/BV1Cp...
最开始我还是建议使用传统的服务器上线,因为成本相对较低。而且服务器的配置建议从低买起,比如 1 核 2 G 就足够流畅运行大多数个人网站了,不要一上来就买配置太高的机器,不一定会有明显的性能提升,反而是浪费资源。等用户量上来了,可以再考虑切换部署方式或者升级服务器配置。
平时可以多关注服务器的负载状态和资源利用率,像我自己很多网站占用的 CPU 和内存资源都非常低,所以我把部分网站放到了同一台服务器上,提高资源利用率。
8、运营分析
上线只是一个新的开始,站长需要持续运营网站(比如发布内容、搞活动),并且监控和分析网站的流量和运营情况。可以使用 Google Analytics、51.La、百度统计等专业的工具进行数据统计和分析,一行代码即可接入。这些数据可以帮助你了解网站的 UV、PV、用户来源、各功能使用情况、广告的投放效果等,对于后续的产品改进和优化非常重要。
9、网站优化
网站优化是一个持续的过程,也是最能提升技术水平的事情,涉及多个方面,比如:
- 产品本身优化:收集用户反馈,改进产品功能和用户体验。
- 页面设计优化:确保网站设计更美观、更易用。
- 网站性能优化:比如通过优化代码、使用 CDN 等手段提高网站加载速度。
- 网站可用性优化:确保网站 24 小时可用,避免宕机。
- 网站成本优化:通过监控服务器资源利用率,优化成本,避免浪费。
注意,网站优化不是凭空猜测,而是要在 符合产品本身定位 的前提下,通过 分析实际数据和用户反馈 来决定优化策略。
怎么理解这句话呢?
举个例子,曾经我以为网站优化就是不断地增加新功能,别人家网站有什么,我就添加什么,结果到最后很多功能也没有人用,反而分散了精力,没有把一个功能优化到极致。还有就是用户有的时候也不知道自己想要什么、用户的建议不是都要听取的,比如有用户希望给编程导航网站增加一个多人实时聊天室,如果是以前,我可能就做了(技术人内心:反正又不是做不了)。但放到现在,我就会思考一下,然后拒绝,因为我们平台本身就有交流社区的能力,而且做多人实时聊天室的风险太大了,会增加管理和运营成本,谁知道大家在群里发什么对吧?
微信产品的老大张小龙曾经说过:每天有 1 亿人想教我怎么样做产品。如果不考虑做产品的初衷和定位,盲目听取用户的建议,微信恐怕会比现在更臃肿吧。
如果不确定是否要做某个优化,可以对用户进行调研;或者通过灰度,让一部分人先体验优化后的网站,再通过收集反馈来验证优化的效果。
10、网站推广
我之前在直播中问了大家一个问题:你认为一个网站成功的关键是什么?
有同学说:产品体验好。
有同学说:用户多。
我觉得不完全对,个人认为网站成功的关键是:有人用 => 有的赚 。
我见过很多产品,做的很好,甚至不输大厂,但最后还是死球了。为啥?你做的再好,没人用,也是白做。这就是我认为,对于个人站长来说最痛苦的事。
所以网站的推广至关重要,可以通过以下几种方式进行:
- 内容创作:写文章、做视频,通过优质内容吸引用户。
- SEO 优化:通过搜索引擎优化,提高网站在搜索引擎中的排名,吸引更多自然流量。
- 广告投放:砸钱,找 KOL 合作或者直接在广告投放平台买量。前期一定要先自己优化广告文案,确保广告效果最大化,再去投放。投放的过程中要关注 ROI(投资回报率),当你投放 1 元,能稳定收入 1.01 元时,你就已经成功了!
做网站一定是要考虑盈利的。我认识不少个人站长,其中有些人是纯为爱发电,完全不盈利的。刚开始可能很积极,但过不了多久,基本就因为时间忙、嫌麻烦等理由放弃维护网站了。说白了,就是没动力了、"饿死了"。我之前做的绝大多数网站都是完全免费的,比如免费 SQL 自学网、免费网络安全自学网、框框大学、SQL 生成器、极客范儿浏览器主页等等,也认为做免费网站是值得骄傲的事。但是,这些网站都做不大,因为没有收入,也就没有人力和精力去维护更新。稍微换一个思路,如果网站有一些付费内容能够盈利,从而让你有资源和动力把网站做的更大,让更多人知道并使用到你的产品,岂不是更好么?
当然,一个网站想要盈利,就必须要有良好的用户体验。通过不断优化、运营和推广,网站才能逐渐进化,越做越大。
最后
已经说了这么多,最后再多说几句吧。经常有朋友问我:对于程序员来说,技术重要还是业务重要?
通过这篇文章,我相信已经有了一个答案:技术是基础能力、是吃饭的本领,而随着你的工作年限越高,非技术的能力就越重要,比如产品思维、运营能力、推广能力、销售能力、沟通能力、写作能力等。程序员朋友们天然具备站长属性,不妨试着去成为个人站长,做自己的作品是一件很幸福的事。
可访问我的 Github:github.com/liyupi ,了解更多技术和项目内容。