使用Firebase及其他功能快速迭代到有价值的产品

Maurits Verbiest在Foter.com/CC BY上拍摄的照片 我们生活在令人兴奋的时代。 从设计到开发过程的所有时间,服务不断涌现,比以往任何时候都更快,更便宜地将数字创意转化为现实。 Firebase(以及最近的Firestore)就是其中一种已经存在很长时间的工具,它为您提供了一个完整的后端,即您实际存储和处理用户数据的地方,因此您可以突然减少所需的工作量自己建立和维护此基础架构(更不用说组建一支可以做到这一点的团队了。) 但是,便利总是要付出代价的。 当拥有由外部服务运营的公司的关键基础架构时,您需要了解风险和权衡因素,并在进入之前做好准备。对于Firebase,我建议您为以下情况做准备: 1)对于您的用例而言,其功能集太有限,可能仅在产品的后续迭代中显示 2)您到达了临界点,在该临界点上,您自己的基础架构的运营变得更具成本效益,或者产品达到了不同的成熟阶段,需要以其他方式进行部署(例如,本地企业托管) 3)Google认为从业务角度来说这套产品对他们而言不再有意义,并停止使用它们(就像Facebook在Parse所做的那样)。 这归结为自软件开始以来的事实:一切都会以不可预见的方式发生变化,并且软件工程师的工作是了解其软件将运行的环境,以便他们为更改做准备。 与大多数专业人士一样,程序员必须不断进行基本的权衡:速度还是质量? 特别是对于软件,有两个主要的危险:没有足够的远见,以及为太多永远不会发生的场景做准备。 幸运的是,由于Web开发相对简单,因此有一些基本的体系结构准则,无需过多的工作即可显着降低风险。 本文的技术性部分将基于一个基本规则:良好的体系结构可将重要的决定推迟到最后的负责任时刻。 在此过程中,我们将意外发现此规则的某些后果,这些后果使我们能够: 只需很少的工作即可生成质量更高的代码…

大学刚毕业:有关如何为软件工程师的第一周做准备的5条提示

你做到了! 在那些深夜的编码,咖啡和大学经验收集之后,您刚刚从某类大学毕业。 您和没有时间或技能的早晨煎饼一样新鲜,没有闲暇时间做早餐。 但是现在,您所有的辛苦工作最终都在一家大型科技公司或小型髋关节初创公司找到理想工作或最终幻想工作,最终将成为下一个大型科技公司。 您做到了–您正式是一位成熟的软件工程师。 但是速度不如本月初我刚穿的那双鞋要快,这里有一些技巧,可帮助您更好地为即将踏上的真实#成人生活做准备。 在第一天做好准备! 没有什么比争夺一个优步,取消那个优步,跑向您认为不会在定位前几分钟的公交车更糟糕的了。 即使您认为自己会早一点,也要增加额外的缓冲时间,以防万一发生意外情况,例如疯狂的交通或着装故障。 确保计划好一天-准备新熨烫的商务装,必要的提包和一两支钢笔,这是您选择的交通工具等。 2.提高您的技术能力。 从第一天起,您将沉浸在技术语中,因为各种错误修复和用户故事在您周围的对话中四处折腾。 因此,知道您在面试中声称知道的内容。 就个人而言,我建议您也了解您的unix和git命令。 在您第一周要进行的各种环境设置过程中,摸索这些命令没有什么比这更糟糕的了。 在设置这些内容时不必问自己“版本控制又如何工作?”,这比在老板面前显得自信更有好处。 3.准备花费大量时间进行设置。 这是不可避免的。…

管理“学习软件工程”

与onTy计划和讨论“学习软件工程” 将软件工程学作为计算机科学课程的一部分,我对课程的结局并不完全满意。 我想那是因为我一直很期待这门课程,所以有一些未满足的期望。 并不是说大学没有提供必要的工具和知识,或者这不是金钱的价值,因为许多私立大学甚至最好的大学并不总是为学生提供他们所需的必要工具和方向,也不是向学生提供他们所需要的东西想。 但是我不得不说,该课程最大的收获是它激发了我学习更多的知识,并最终与大学生和行业专业人士进行了实验,同时又与特定领域的专业人士一起工作。 在决赛周的某个时候,我安排了与实习主任的会面,提出了一个从理论和实践角度教授大学生软件工程的项目。 经过数小时的讨论和项目的批准,我意识到这比我最初想象的要多得多。 那时,我的主管将我与onTy联系起来,onTy是一个非常有活力和智能的软件工程师,具有10多年的行业经验,也是我使该项目成为可能的团队成员。 我们在会议中组织课程的讨论越多,我就越了解到不知道的东西和可以学到的东西。 我意识到有多少计划是必要的 尤其是在今天的会议上,我意识到将这个项目组合在一起需要进行多少计划,必须在夏季结束前花很少的时间才能实现目标,并且我们自己正在经历一个学习过程。 但是,经过几次集思广益的过程和我们最初的几次会议后,还有很多事情要做。 我们意识到,除了onTy和我本人这两位首席讲师之外,我们还需要一支强大而敬业的团队,我们需要TA以及更多其他人才。 因此,我们从人员和实际工具/材料的角度,以及在持续构建课程的过程中,列出了课程所需的清单。 我们需要强大而专注的助教,志愿者和一些额外的帮助来管理班级,到目前为止,我们已经成功收集了2名助教,2名志愿者和帮助之手。 我们意识到,该课程将使学生接触到一些用于项目和维护的Web技术 ,并且在实际运行课程之前,我们一直在自己使用这些技术中的很多来使自己适应学生的需求。 (在认识onTy之后,我接触了许多新技术并学到了很多东西!)…

软件开发生命周期

您是否曾经停下脚步,想知道为什么我们需要如此频繁地更新软件? 例如,考虑一下普通的智能手机。 您会在这款手机中找到一些常见的应用程序,例如Facebook,Twitter,Instagram,也许还有其他一些可能会在日常生活中帮助用户的应用程序,但接下来让我们专注于前三个。 它们全部(几乎)每周更新一次。 添加其他应用程序,再加上操作系统安全补丁,更新和错误修复,您的手机几乎每天都在更新某些内容。 更新资料 用户可能不知道这一点,但是这些应用程序总是在更改,无论他们是否可以看到更改。 这就是我们谈论软件开发生命周期时所指的内容:开发一件软件所需的多个步骤。 这些步骤通常是一个永无止境的周期的一部分,这解释了为什么会有如此多的更新。 SDLC的一些常见阶段包括计划,分析,设计,构建,测试,部署和维护。 乍一看,似乎只经历了一系列步骤,但是最后一步,即维护,通常意味着必须重新开始才能使程序更好。 请注意,我经常但不总是说,我们稍后再讲。 拥有“生命周期”的全部目的是能够发现软件中的错误,故障或错误,以免它们造成麻烦,甚至更糟的是,导致最终用户产生负面反馈(这是“真的那么糟糕,因为最终的负面反馈仍然是一种反馈形式,您可以使用它来改善,但仍然可以)。 为了您的利益而使用SDLC通常可以节省时间,金钱,最重要的是可以提高产品的整体质量。 调试 SDLC中最受欢迎的两种方法是“敏捷”和“瀑布”。 它们之间的主要区别在于敏捷是周期性的,而瀑布不是周期性的。 尽管似乎敏捷总是在击败瀑布,但在某些情况下,瀑布占了上风。…

我如何使用笔和纸来简化我的工作流程

资料来源:pexels.com 本文并非旨在指导您如何使用笔和纸来简化特定的工作流程。 相反,它旨在为您提供灵感,如果您认为这样做会有所帮助。 这对像我这样的软件工程领域的新手可能有用。 对于任何一个在现实生活中认识我的人来说,组织从来都不是我的强项。 自从我作为软件工程师开始我的职业生涯以来,这已经成为一个特别的痛点–通常,事情会从裂缝中溜走,这些裂缝很快加起来阻碍了我的工作。 我一直使用的一种方法是养成在记事本上记下东西的习惯。 刚开始工作时,我得到了一个笔记本,笔记本很快被丢到我的文件柜中,几乎被人遗忘了–我犯了一个错误的事实,那就是低估了笔和纸的用途。 直到我的同事建议使用它作为保持思想和思想的一种手段时,我才开始意识到在软件工程领域中记下事情可能是多么有用。 通常,我会用它提醒自己已经发生或将来会发生的事情; 尤其是,对于记录会议,避免那些尴尬的时刻很有用,避免那些令人尴尬的时刻,即在三周前发生的那一次冲刺回顾中的一项动作就在您的舌尖上。 现在,我可以回顾我的笔记,以记念那次会议中发生的事情。 笔记本电脑改变我工作方式的另一种方式是帮助我进行估算。 在此之前,我通常会开始编写故事,而没有足够的时间去粗略地计算完成一件工作所需的时间-结果往往是一个故事,它花费的时间比原本应该做的要长得多这项工作的一部分已经“被猜测”了。 现在,在执行任务之前,我想花点时间浏览项目并将所有内容分解为较小的块,并在“待办事项列表”中记下每一步。 这带来以下优点: 它为任务提供了更系统的方法。 通过将事情分解为更小的,更容易实现的任务,您已经有效地制定了计划,以实现自己正在做的事情。…