学习编程时常见的一个问题是:设计程序时,什么样的想法算是好的?
如今,大家会经常听到一些陈词滥调式的答案,如:“做个象棋游戏”或者“命令行界面”,这些答案确实没错,但它们没有适应现代编程的需求。
现代软件很大一部分是SaaS和web应用。这意味着你需要了解在线编程。编写拥有用户的网站或者应用程序,需要服务器、身份认证和数据库,这操作起来要复杂得多。必然会要用到那些在开发一行命令的井字游戏时永远用不到的技术。
其中一些可以由AWS或其他一些大公司通常用的第三方平台完成。同样,还是会接触到在行业中多数人倾向的有用技术。这会给你的简历加分,同时有助于学习如何使用新技术。
如果选的项目很复杂,那就集中精力关注一个特性。一次性建立完整的网站或者应用程序是很难的。从创建一个登陆页面开始,或用户的着陆页。如果试图立刻一下子接手整个项目,那么很大概率会失败。
娱乐
1. 无需人工干预便能发布前10名博客的web爬虫工具
一些推荐项目的帖子中存在的问题之一是那些编程不能激励程序员继续开发下去。
例如,很多人建议开发web爬虫。一旦构建了web爬虫,就会抓取数据,那这些数据有什么用呢?
相较于仅抓取数据,为什么不利用它们建立一个网站呢?不一定要太花哨也无需很多评价。该爬虫工具可以将数据录入数据库,选出最受欢迎的帖子,复制标题和几个句子,然后创建一个在线分享的帖子。项目虽简单,但能真正展示出它精彩的一面。
现在已经表明,你能做的不仅只是对系统的一小部分进行代码的编写。相反,你可以思考整个系统。这需要考虑如何实现流程自动化、数据库管理、网站创建和帖子的选择。实际上,你也创建了一个有形的最终产品。
没有那样的成品,真的很容易使人变得毫无动力,结果只能停留在web爬虫的建立上。
此外,也许你永远不知道你的网站会很受欢迎!
涉及技能:数据库操作、web爬虫应用、自动化、web开发(针对博客)、一般程序设计。
2. 使用Meetup和Eventbrite APIs的行程提醒系统
你是否曾经想去看乐队或喜剧表演,却意识到那是上周的事吗?也许你所在的地区举行了一个关于数据科学或大数据的免费会议,但你却因为忘记检查日期而错过了。
为什么不使用Meetup和Eventbrite APIs创建自己的信息收纳器呢?当描述的事件或标题中出现关键字时,它会通知你。现在,假设Meetup和Eventbrite都有相似的选项,但是尝试建立自己的系统总是很有趣的。
你可以定制系统,让它按照你想要的方式运转,甚至可以把它变成一个网站,让其他人来制作自己的行程提醒。我们喜欢这个项目的原因是可以练习使用两种不同的APIs。你可以比较归纳两者中你喜欢和不喜欢的地方。这样一来,如果你曾经负责构建一个API,将会更好地了解什么是有效的,什么是无效的。
涉及技能:APIs、数据库、自动化、web开发、一般编程设计。
3. 仿冒9GAG
在创建自己的项目时,并不总是需要尝试重复造轮子。简单的项目,如可以登录、发布照片、GIF包和通过订阅源更新内容的网站,给先创建坚实基础网站提供了一个机会。然后可以添加许多有趣的功能,比如关注、点赞和搜索。特别是搜索功能,将是了解推荐系统和机器学习的好机会!
尝试仿制流行网站总是很有趣的。事实上,这实际是一种很好的学习方式,因为你必须对每个功能进行逆向工程。逆向工程是一项非凡的技能,因为作为一名软件工程师,你将不断地维护他人的代码,潜入他们的系统插件。
涉及技能:机器学习(针对推荐系统)、数据库、自动化、web开发、一般程序设计。
零售类网站
4. 推荐礼物的应用程序
你是否曾经为朋友寻找合适的礼物而感到烦恼?如果你能创建一个告诉你如何为朋友挑选礼物的网站呢?终端用户在这里不仅可以创建账户还能得到礼物推荐。
同样,这也为创建需要身份验证、数据库开发等的帐户提供了机会。
此外,这个项目的另一个重要部分是可以使用亚马逊的API作为附属链接,凭借它你可以做一些事情。其一,了解如何使用APIs,并可以轻松阅读API文档。其二,如果做得好,你可以从每件他人购买的产品中获得佣金。
这个项目也有机会尝试创建一个基础的机器学习模型。可以创建一个测验,尝试找出什么是适合的礼物,然后,根据人们是否点击该礼物,从而使得模型基于回应率学习。
涉及技能:APIs、数据库、一般程序设计、应用程序开发。
5. 物物交易网站
想想OfferUp(二手闲置交易平台),与其花钱,倒不如创建一个仅允许物物交易的网站。这个概念促使你在开发功能前需进行一番思索。没有计划,你就不能拿下这个项目。
人们如何发布,在哪里找到最近发布的物品,以及如何搜索,这些都是可以构建的独立功能。此外,你需要考虑用户如何互动,甚至他们实际上是如何进行交易的。
这个想法在真实生活中不一定100%实用,但在提高程序员的技能方面必须切实可行。
涉及技能:数据库、web开发、一般程序设计、应用程序开发(前提是选择开发一个应用程序)。
B2B
6. 发票和合同管理系统
合同和发票管理是非常复杂的过程。因为有许多难以追踪的有着细微差异的条款和规定。
即使你将它简化为一些核心组件,它还是会成为一个非常好的项目。将复杂的业务流程转化为软件系统并不容易。但该项目也因此成为很好的挑战。
还是那样,别把这个项目过度复杂化。使用一个基本功能,比如输入合同条款,而且首先开发这一部分。然后,可以添加其他一些功能,如发票跟踪、合同分析和预测。
涉及技能:过程管理、数据库、web开发、一般程序设计。
7. 任务管理系统
像KanbanFlow这样的任务板是由几个模块化功能构建而成,这样一个大项目让我们有了更多的尝试。刚开始有一些操作,正如需要建立一个稳定的动态用户界面一样。事实上,这个项目更多的是两个人的工作。一个人在前端,另一个人在后端。
不要因此而气馁!这实际上是你提高沟通和团队合作技能的机会。你需要通过讨论设计内容来确保你们都完全理解该项目,知道你们的模块将连接到哪里。通常,这比看上去还具有挑战性。
涉及技能:沟通、前端、数据库、web开发、一般程序设计。
8. 工作板
任何允许各种类型的用户输入内容的项目都会为设计添加一个有趣元素。与潜在求职者相比,你如何确保雇主体验网站的方式满足他们的需求?像大多数其他项目一样,你不需要同时关注所有的功能。首先尝试创建发布工作职位的功能。然后可以去关注求职者和他们的反应。
涉及技能:数据库、web开发、一般程序开发。
9. 基于预测利润的网站
对于大多数公司来说,有许多非常标准化的数据集。这包括通常基于成本中心、账户、行描述以及最终实际交易成本的会计数据。
任何数据集标准化的伟大之处在于,在该数据集之上进行分析会变得容易。为何不创建一个标准化的仪表板,帮助公司预测支出,查看每月支出,并可能帮助他们减少支出。
对于这个项目,你可能要花很多时间学习如何确保数据安全。当然,建议大家在深入研究安全性之前,首先尝试构建侧重于获取和标准化数据和数据可视化的模块。那是一个永远避免不了的步骤!
涉及技能:预测、商业逻辑、数据库、web开发、一般程序设计。
游戏思维
10. 贪吃蛇
如果你在21世纪初拥有手机,可能已经玩过贪吃蛇了。这是一个简单的游戏,但是你总是可以试着让事情变得更复杂有趣!首先,从尝试做游戏开始。
这要求你弄清楚如何在线开发游戏。Sebastian Opperman的《霓虹蛇》是一个很好的开始。不过在原有的基础上,可以添加一些很酷的新功能,比如特殊物品或者特殊能力。
这会是一个玩游戏和娱乐的机会。从有很多用户注册并使用该网站的角度来看,这个项目不需要什么专业技巧性操作。然而,如何让游戏在线运行是一个很棒的挑战。