如何开始一个编码项目并确保几个月后你还能记得它🌟
我如何开始一个编码项目?
作为开发者,我们常常渴望学习更多,掌握新技能。这个过程通常始于寻找新的技术。例如,如果你热爱移动应用开发,并且掌握了使用 Objective C 构建 iOS 应用的丰富知识,那么你接下来很可能会学习 Swift。现在,你会上网搜索或参加 Swift 训练营。你之所以学得好,是因为你对编程语言有了扎实的理解。接下来,你就可以开始用这门新语言开发应用了。你确实会开发出很棒的项目、精美的项目、用户友好且实用的应用……
时间飞快,八个月过去了,你正参加一场面试,你知道这能让你成为一名 iOS 开发者。面试官随后问了你一些你觉得非常残酷的问题:“你能描述一下你是如何开始这个 XYZ 项目,以及你利用了哪些资源来获得帮助吗?” 你简直答不上来。真的!你的脑子确实很灵光,你也记得导师或网上给予的帮助,但过程呢?那又怎样?你缺乏的是对细节的关注。
我先明确两点:
-
本文旨在提高您完成优秀项目的能力,并采用最佳实践来开始一个新项目(考虑到这是您的第一个项目),以便您成为一名完整的开发人员(而不是另一个在 Udemy 上购买课程的开发人员,制作已经被数百名其他学生开发的相同项目,然后过一段时间就忘记他做了什么)。
-
这是我第一次写这样的文章。所以,如果你发现任何错误,请务必在评论区指出,我会在需要的地方进行修改。我仍然承认自己是个学生,这些是我多年来编程和做项目时的一些感悟。
看来我已经把想要的东西都清理干净了。好的,我们继续!
我如何开始一个编码项目?
通常有三个步骤:
- 为项目收集想法💡
- 项目规划📝
- 构建项目
让我们逐一看一下。
>“嘿,我没有任何项目想法!”
我们有过类似的经历。苦苦思索到底要做什么!我们听说过程序员通过编写代码和开发软件来解决别人的问题。但他们是如何获得灵感的呢?好吧,你应该这样做:
1️⃣ 在开源上投入时间:是的,您需要查看GitHub、BitBucket等网站。开源对每个开发人员来说都是一种福音。
无论您是经验丰富的专业人士还是编程新手,您都能找到大量的项目。对于“新手”来说,最棒的是他们可以免费查阅其他人的代码。您不仅可以了解您最喜欢的编程语言/技术领域的最新动态,还可以观察其他专业人士是如何编写代码的。
2️⃣ 扩展现有工作:好吧,当“想法”这个词突然闪过你的脑海时,你一片空白。试试这个,你肯定用过一些产品,对吧?从那个大产品中切分出一部分,然后尝试自己实现。举个例子,你每天都用 WhatsApp,你有没有发现一些你希望它有但还没有的功能?比如我希望 WhatsApp 支持动画贴纸。就做这个吧!(哈哈,我刚刚免费给了你一个想法!)
你已经对如何为 iOS/Android 应用编写代码有了基本的了解,现在开始研究、浏览不同的网站、做笔记,并按照步骤来实现它。在你独立实现该功能之前和之后,你将截然不同!
3️⃣ 如果你已经做过一个项目,那就改进一下:现在你的硬盘里闲置着 5-10 个项目,这些项目都是你在参加训练营或在线课程时跟着老师一起编写的。大多数情况下,你完成了课程,也就是做了 5-6 个看起来不错的项目,但课程结束后,拿到证书后,你就把这些项目留在那里了。我也遇到过这种情况。
你可以做的是从众多项目中选择一个,修改它,添加新功能,或者至少更改界面,使其成为你自己的。如果觉得这不太好,那就换个技术栈吧。哈哈,那也不错!用 React 构建 Web 应用?用 Svelte 也一样。寻找那些有需求的新技术栈,以及那些你可以在此基础上进行构建的技术栈。正如我已经说过的,成千上万的学生都开发过那个食谱应用,招聘人员也看到了这一点,要想脱颖而出,你需要努力工作,并为那个食谱应用赋予你的“新意”。
4️⃣ 不要犹豫,和朋友一起进步:如果你觉得“我是个后端开发者,不会写前端代码”,那么你需要重新思考一下。这并没有什么坏处。
想象一下,你那位书呆子朋友已经做过后端工作了,但他是你在一场大型黑客马拉松比赛中的项目伙伴,你相信他能赢,或者至少能拿到亚军,现在他需要你的帮助,你会怎么做?坐在那里等着奖杯来找你?不,那是不可能的。你得去做项目中那个令人畏惧的前端部分。是的,这需要你和你的朋友付出更多的努力,但这不应该阻止你学习和走出舒适区。还有什么比自称是前端开发人员更让人安心的呢?尽管你热爱后端!
5️⃣ 当你还在考虑成为自由职业者时,不妨问问别人:问问别人总没错。我们人类,话很多。但作为程序员,我们应该寻求帮助,问问别人你是否能为他们的公司做项目?无论是一个简单的静态网页,还是为他们的公司创建一整套数据库。
当然,你可以免费做这一切,你不是自由职业者。记住,你应该出于热情去写代码,而不是为了钱。绝对不是,你应该出于热情去做任何工作,而不是仅仅为了钱。只要你满怀热情和耐心地工作,钱最终会来的。你正在构建优秀的项目,提升你的技能,积累更多的知识,而不是在公司里打工。
“要想无可替代,就必须与众不同。” ——可可·香奈儿
> “我明白了。好极了!那计划怎么样?”
新手可能会想:“我要做个小项目,干嘛要规划啊?哦,‘项目’这个词太沉重了!简直就像学校作业一样……”。现在,有项目规划和没有规划的程序员的共同点就在于——都能获得 更好的结果。
1️⃣ 关键在于技术栈!:对于初学者,请坚持使用你喜欢且最熟练的编程语言。不要急于知道别人在使用你从未听说过的框架或平台。
你已经了解HTML和CSS,那就学起来,做那些“从设计到代码”的事情吧。当你把设计文件转换成可用的HTML文档后,你就会充满信心。选择技术栈是项目规划的第一步。这看起来似乎显而易见,但我见过我的朋友们先选择一个框架,然后反复尝试,最终搭建了一个WordPress网站……千万别这么做。
2️⃣ 项目大纲:拿一张纸(或者像我一样,写个代码日记),写下你的项目名称(这可能需要你一整天的思考时间),并简要描述一下这个项目的功能。你是否有一个雄心勃勃的想法,想通过一个移动应用解决你所在城市的网络问题,为每个家庭提供一个安全私密的网络?写下这个应用将如何帮助他人,以及新手如何操作它。弄清楚你的应用的功能,列出要点,列出它能做什么和不能做什么。这有助于消除任何进一步的疑虑。
当你独自一人完成这个项目时,你也会承担其他人的工作。因为一旦你成为用户界面 (UI) 设计师,下一次你就会编写一些代码,将数据库连接到像亚马逊网络服务 (AWS)这样的后端服务。确保在设计应用程序时,在应用程序屏幕之间提供一些箭头来显示应用程序的流程。这将使你的工作保持一致,并且你会提前知道在第一个屏幕之后要构建哪个屏幕。当然,任何你能用笔和纸做的事情,都可以用InVision Freehand、Sketch等软件/服务来完成。
3️⃣ 弄清楚代码/外部库:我们还没有打开 IDE 编写代码。在此之前,您应该知道项目需要哪些类或依赖项来实现上面列出的功能。例如,如果您使用 Flutter 制作同一个应用程序,那么您可以编写需要哪些小部件来制作所需的 UI。它们将在哪里RaisedButton
发挥作用?如何请求后端?默认http
包是否足够?在这里做出这些决定,阅读官方文档。不要去找那些过时的文章。是的,文档可能看起来很枯燥,但这是开发人员最重要的事实来源。您将养成阅读官方文档的习惯。
在列出项目功能后,也可以考虑使用 MVT/MVC 之类的架构模式。将项目拆分成所需的不同模块,并将“仅 UI”文件与“仅逻辑”文件分开。这样可以明确哪些代码是优先编写的。
4️⃣(可选)制作时间线:你是那种根据天数或时间追踪工作进度的人吗?喜欢番茄工作法?这对你来说会是锦上添花。现在你一定已经知道你的项目会有多长或多短了。是一个电商应用吗?那很长!是一个待办事项应用吗?那很短。
使用日历,标记项目开始的日期,大致估算一下最后一天的工作时间(当然,时间会多次变化,人无完人!),记录下你每天愿意投入的时间。一开始,我们都会充满热情地工作,但热情会慢慢消退。这没关系,但不要半途而废。规划好每周要开发的功能。例如:“第 1 周 - 实现 Firebase 登录”。
“在编程中,困难的部分不是解决问题,而是决定解决什么问题。” ——保罗·格雷厄姆
> “太好了,我已经做好计划了。我准备好建造了吗?”
是的,你现在正处于一个完美的位置,可以敲出那些精彩的代码了。当你收集完想法并规划好整个项目后,你就完成了一半的工作。瞧,以上两点有多重要?
现在,是时候完成以下几点的项目设置了:
1️⃣ 准备好资源:当然,你需要资源。文章、YouTube 教程、Stackoverflow(在 10 个标签页中打开)、书籍等等。在项目进行过程中,遇到问题时你必须知道去哪里查找。正如我上面提到的,官方文档会是你的好帮手。学习如何浏览文档,如何在 Stackoverflow 上搜索你遇到的问题。
如果你加入了你最喜欢的技术栈社区,不妨加入他们的 Slack 或 Discord 群组,在那里你可以获得更多实用资源。当网络连接中断或笔记本电脑无法使用时,不要惊慌,你可以在这里寻求书籍或朋友的帮助。把伪代码记在日记里,等其他问题都解决后,再利用日记的帮助继续编码。这真是节省时间的好办法!
2️⃣(重要)别灰心丧气,慢慢来:这是现实。我们工作时都会感到沮丧。如果这是你的第一个编程项目,你很可能会突然对自己说:“好了,我完成了。” 为了避免陷入这种困境,你需要专注于上面提到的第四点,即制定时间表。
如果你有一个切实可行的计划,不要求每天花 10 到 12 个小时编程,你就不会再为此感到困扰。别以为顶尖程序员会连续编程几个小时,没人能做到。我们的大脑需要休息。所以,好好休息吧。制定一个灵活的时间表,这样你就不会陷入沮丧的境地,一步一步地写代码,而不是一下子完成。这会花费更多时间,但最终你和你的项目都会互相称赞:“干得好,伙计。”
3️⃣好了,是时候用你的笔记本电脑工作了:我们终于到了这一步。如果你已经完成了上面的大部分内容,那就太棒了。
首先,列出你完成这个伟大项目所需的工具。这包括 IDE/编辑器(例如 WebStorm或Atom)、在线服务(例如 GitHub或Asana)、生产力工具(例如 Trello或一些番茄工作法应用) 、扩展程序( 例如VisBug或React Developer Tools)、部署服务(例如 Heroku或Google Cloud Platform)。当然,这些工具主要针对 Web 开发(我主要从事 Web 开发),你也可以找到其他任何用途的工具。准备好这些工具后,就可以开始写代码了!
4️⃣(重要)编写干净的代码:我们大多数人都擅长编程,但这次换个角度思考,是时候编写“干净的代码”了。你说什么是干净的代码?简单来说,“干净的代码就是易于理解和修改的代码”。
如果您想详细了解, Robert C. Martin 的《代码整洁之道》是一本不错的参考书。但为什么要关注编写代码的整洁性呢?这不仅会影响您自己,还会影响您将来所在的团队。那么,为什么不从一开始就养成这个习惯呢?最终,您会注意到自己的编码风格有所改善。想更深入地了解如何编写代码的整洁性,请参阅 Shubham Gupta 的以下文章:
如果您需要了解有关干净代码的所有信息以及为什么它在软件工程中如此重要,请阅读 Severin Perez 的一篇文章:
“在短暂的计算机发展史上,还没有人写过完美的软件。你也不可能成为第一个。” ——安迪·亨特
在我说“再见”之前...👋
我写这篇文章的灵感
最近我参加了一家远程公司的面试,他们问了一些关于我项目的问题。就在那里,我感觉少了点什么。几个月后,我竟然记不起当初是如何以及为何写下那些主要代码的。
我从这段短暂的经历中学到的是,作为一名程序员,你需要了解你做的项目,这不仅是为了你的工作/事业,也是为了你自己的利益。你说我后来做了什么?是时候反思了。我问自己:“我知道在这个XYZ项目中我做了什么来实现那个ABC功能吗?我是怎么解决这个问题的?” 我得到的答案是:“不,你知道40%,剩下的你只是因为没太注意而忘记了。” 就这么简单。
为了摆脱这种困境,我决定把这些都写下来。没错,我们需要一个日记本,随时记录下来!我选了一个项目,用Sublime Text打开,逐个浏览文件,然后写下我实现某个功能的流程。用到了哪些类?需要哪些外部库?它们通常用来做什么?项目的架构图等等。以下是我为了整理思路而写下的内容:
就是这样!( ̄︶ ̄)↗
如果你读到这里,并且实现了我上面提到的大部分要点,那么恭喜你,你已经跻身于编写简洁代码的行列,并且领先于大多数其他程序员。希望这些技巧能对你有所帮助,如果是的话,请在评论区留言或发推文告诉我。以下是Emma Bostian
为本文结尾所发的一条推文:
开发者提示:
——艾玛·韦德金 (Emma Wedekind) 🐞 (@EmmaWedekind) 2019 年 5 月 27 日
🎧 投资优质耳机
💻 在打开 PR 之前重新阅读代码
🤜🏻 真正遇到困难时寻求帮助
🙌🏻 帮助遇到困难的其他人
🙀 承担让你害怕的任务
❤️ 不要害怕承认你不知道某事
感谢 DZone Inc. 提供的引用。链接 1 - 链接 2。