一个项目的诞生或如何编写自己的CMS

亲爱的Khabravchane,我欢迎您 很长一段时间以来,我都在这里写了一篇关于我自己和我的项目的文章。 在本文中,我想向您介绍我关于项目构想起源的故事。 并撰写关于软件开发总体观点的故事。 也许甚至根据我多年的程序员经验,我也可以转让一些知识。 走吧

关于我


我会告诉你一些关于我自己的事。 我的名字叫亚历山大(Alexander),我从事程序员已有10年以上。 我必须解决各个业务领域的问题,例如银行,电子商务,数据结构项目,解析器和企业部门的其他任务。

本文的目的是展示软件开发领域的各个方面,并可能为其他程序员打开新的机会之门。 我说的这句话是什么意思?

程序员开发阶段


当然,您之前已经阅读了有关程序员开发阶段的文章。 我认为,每个程序员都在其职业生涯中经历了发展阶段。

我分五个阶段为程序员定义了这种开发路径:

  • 第一个阶段是当您还是学生或对编程还不熟悉的时候。 您只想查看编程内容的结果,可以是带有“ Hello”按钮的窗口,也可以是用于分析和构造数据的解析器。
  • 第二阶段是您已经编写了复杂的集成并使用了高级框架。 您会喜欢一个事实,那就是您已经掌握了另一种工具。
  • 第三阶段是您开始弄清楚如何最好地结构设计应用程序。 您为正确地将逻辑划分为组件这一事实感到疯狂。
  • 第四阶段是软件开发之神的阶段。 您了解所有前面的步骤,并且想要构建一个系统,用于将所有应用程序模块组装并交付到一个方便的自动安装程序中。
  • 第五阶段是最悲伤的阶段。 您了解到,您最喜欢的东西不再带来以前的愉悦感,而只需在机器上执行所有操作即可。 然后就是当您想生产产品并将其推向市场,从而解决某人的问题或只是改善某种工作流程的时候。

生死观念


您可能已经理解,这些阶段是基于我的个人经验。 因此,也许某人会有完全不同的开发经验。 我没有宣布这是其他方式。 此外,我们将讨论开发的第五阶段以及下一步要做的事情。

一旦一个非常有趣的想法落入我的脑海。 当然,在此之前,我走了一个星期,思考了我将“兑现”什么样的服务。 认真认真地,我决定做点大事。

这个想法是创建一个平台,实际上是一个网站,该平台将使每个人都能在自己与他人相比擅长的方面向他人介绍自己的技能。 例如,一个狂热的渔夫想分享他的经验,如何正确地捕捉鲈鱼或鲤鱼。 他使用研讨会的日期在此平台上创建了一个事件,并放置了宣传视频或只是他的研讨会的描述。 其他用户以有趣或不有趣的方式投票,当收集一定数量的票时,该事件已被平台批准或由于缺少支持票而被拒绝。 此外,发布此事件的人有机会设置参加此研讨会的金额。 该平台的所有者必须充分组织此活动。 因此,对门票销售收取少量佣金。 这是完成的获利。

我已经在您的想法中听到:“是的,为什么要再次骑自行车。” 但这是有道理的,我将回到这一陈述。 当然,最后,这个想法急剧地转变为另一个想法,但是如果没有主要任务,我将不会看到这个问题。

只是一个CMS


然后出现了使用哪种技术来完成所有这些操作的问题。 不用三思而后行,我开始着眼于现有的CMS和其他平台来快速组装这种项目。 该解决方案使得我将采用某种引擎来处理数据,并且只需通过网络枪口即可通过REST检索此数据。 我不会深入研究整个开发。 最后,我仍然必须这样做。

我对软件开发的看法


对于每个任务,都有自己的工具。 在软件开发中,我总是尝试遵守此规则。 另一个重要因素是将逻辑划分为技术责任领域。 对我来说,不同技术之间集成的清晰界限很重要。 换句话说,例如,当前端与后端分离时,我喜欢它。 也就是说,从“完全”这个词开始。 或者有结构专用的模块,集成,并且所有这些都是独立工作的。 现在,它被称为微服务。

我认为组织项目工作更容易,根据开发人员的能力将开发人员划分为多个团队。

仅此而已! 我决定造一艘宇宙飞船


基于经验,我认为我们需要这样一个工具,该工具可以帮助我们从现成的块中形成页面设计,并将其直接从浏览器连接到该平台的数据和服务。 主要标准不是针对每个任务进行严格的专业编程。 一切都应该是抽象的,并应作为构造函数。

在花了两个星期的时间搜索相似的内容并体验了两个免费的CMS- DrupalWordpress之后 (我尝试将它们用作数据管理和REST API集成引擎)。 但是没有一个人满足我的要求。 因此,我决定用“二十一点和妓女”来编写我的CMS。

技术领域


下一个要解决的问题是选择要实施的技术堆栈。 不用多想,我当然更喜欢用Java做所有事情。 只需要决定采用哪个框架即可。 选择框架的标准是:不要花费太多,而仅使用工具的必要部分(后来我对此选择感到有些遗憾)。 为了构建管理面板界面,我从Taiwan- ZK Framework中选择了一个鲜为人知的AJAX 框架 。 我喜欢其中的MVVM方法及其AJAX组件(现在我已经认为这是一个缺点)。 由于您无需编写大量的JS来监视页面上用户界面状态的相关性(目前,我找到了一个更好的选择)。

结果我得到了什么样的技术栈:

  • ZK框架(MVVM)
  • Java(EJB)
  • 杰克斯
  • Mongodb
  • 野蝇

好吧,继续前进!


在从事有薪项目时,我全心投入这个项目。 我的项目时间主要在晚上和周末,有时我设法在主要工作中抽出时间,我也在那里工作。 在项目工作过程中,实施原则已多次更改。 数据模型也进行了许多修改。 同时,我告诉了程序员的朋友我正在从事的工作,并提出加入该项目并开始一起工作。 但是不幸的是,我继续独自做这个项目。 结果,我花了3年时间获得了预期功能的工作版本。

一个人在外地不是战士,还是...


然后我仍然想创建一个团队。 我开始在其中一种业务加速器中将产品注册为初创企业。 但是他没有完成他的申请,因为他已经停留在“您的团队”阶段。

我经常告诉我的朋友,他们在IT(信息技术)领域或IT领域工作过。

最后,我设法为我的产品找到了同样的疯狂潜在客户。 他像我一样,决定生产自己的产品,但他不是程序员。 而且他需要一个产品平台。 我决定,就在这里! 我什至不必主动提供自己使用CMS的权限,但有人要求我在上面创建一个网站。 当然免费。 这是我在实际开发中试用CMS的机会。 您知道吗,我很惊讶,但是我的CMS 100%地完成了这项任务。 是的,当然,我在组装过程中做了很多工作,对其进行了改进,并且只是“修复”了错误。 但是最后,我能够灵活地将任何设计和模板拉到页面上,连接并集成来自第三方来源的数据和服务。

还有瑞士人,收割者和花花公子


从这一刻起,我意识到您需要在营销领域发展知识,并阅读有关建立业务的书籍。 在此过程中,我与该产品一起参加了MongoDB的黑客马拉松 ,部分收到了观众对该产品的反应。 在社会上。 网络做出了回应,甚至分享了有关我进行CMS的信息。 根据黑客马拉松的结果,我当然没有获得任何奖项,但是我很高兴参加了这次活动。

当我等待黑客马拉松的结果时,我仍然两次尝试在投资促进活动上“挂钩”我的产品。 之后,我已经看到观众的热烈响应。 给我带来了很棒的经验。

结果


我现在有什么:

  1. 某个涵盖功能的MVP(最低可行产品)
    • 灵活的标准化
    • 文件存储
    • 动态数据模型修改
    • 与REST服务集成
    • MongoDB中的角色和用户管理

  2. 展示IT产品和听众反映的经验。
  3. 从事IT产品工作的合作伙伴致力于解决仅出于创意的问题。
  4. 以及进一步产品开发的大路线图。 目前,在技术堆栈上,我构想了此技术堆栈的巨大处理过程和几乎完整的更改。 加上功能扩展。
  5. 我将实施中的意识形态保持不变。

结论


现在,我将回到开始的地方。 即使您周围的每个人都说“是的,但他们已经在您之前完成了所有工作” ,总有理由制造您的产品。 一旦我在阿诺德·施瓦辛格(Arnold Schwarzenegger)的一次励志演说中听到了这个词,我就将这些人称为英语单词Naysayer

开发产品的几种可能方法:

  • 开源
  • 与相关产品合作
  • 聚集一个像我一样疯狂的社区,他们创造产品并尝试销售产品。

这是官方促销视频:


这是CMS的官方演示站点:

MastermindCMS

PS:对于本文中频繁使用“美国主义”,我深表歉意。 开发人员语充满了他们。 如果我将所有内容解释为俄语同义词,那么我将失去研讨会同事可以理解的叙事风格。

希望您喜欢我的故事,并且有人会觉得它有用。 祝您有美好的一天!

Source: https://habr.com/ru/post/zh-CN463655/


All Articles