作为周末回顾的一部分,我已经准备了几十个问题和故事供大家思考。在这一部分,你会发现我所经历的故事和问题,在这里你可以获得进一步的经验或测试你对事物的思考。正确的解决方案可能不是它看起来的那样。
选择正确的技术是成为高级开发者的先决条件。这些决定往往并不容易,因为你必须考虑到应用程序目前的技术状态,你的发展方向,你目前的团队知识是什么,什么知识在就业市场上是常见的,每种技术的成本是什么,它会给你的操作带来什么风险,技术的安全性和稳定性如何,最后但并非最不重要的是,比如说,5年后你目前团队的80%被取代时,开发人员会对什么感兴趣。…
你是一个大型遗留应用程序的开发者,你正在逐步将PHPStan引入其中。你从0级开始,这相当具有挑战性,但最终你会得到它。你进入下一个层次,你的代码的一部分开始报告一个未使用的$lock变量,你应该删除它。
代码看起来像这样。
public function processOrder(int $orderId): void
{
$lock = Lock::createLock('订单-' . $orderId);
// 这里有一些逻辑...
}
…
2016年底的一个故事,当时我真的被一个同事救了:在一个PHP应用程序中,你决定通过一个代理脚本来检查图片,除其他外,它可以根据传入的请求调整其尺寸和其他参数。作为优化的一部分,你也将生成的变体物理地保存到磁盘上。
然而,在生产操作中,你突然开始看到巨大的负载和成千上万的请求排队。每个用户的图像都是按顺序逐一加载的。页面刷新和链接点击都不起作用。该应用程序似乎完全冻结。只有等待一切处理才行。…
一个外部监测工具会向你报告,在过去30分钟内,5个被监测的URL的平均响应时间增加了一倍。该项目运行在一个单一的物理服务器上,该服务器不在你的管理之下,在数据中心的某个地方运行。你通过SSH连接,启动htop,看到CPU负载为95%,内存早已溢出。
根据git,你知道大约一周前他们做了一个数据库迁移到一个新的表结构,一个同事在聊天中写道,他不得不连夜运行迁移,因为重新计算列和索引花了大约5个小时,在此期间几乎整个数据库都被锁定,INSERT和SELECT都不工作。…
2017年的一个故事:你在一家机构中担任首席开发者,你管理着公司在这段时间内开发的大约300个不同规模的项目。它们中的大多数是简单的Nette应用程序,最多有10个模板、一些表格和数据库表。没有什么花哨的。你对这些项目并不了解,因为每个项目都是由一个稍微不同的供应商开发的,人们在公司里轮换,你希望通过某种方式来完成它。因为该公司做了大量的成本优化工作,他们在一台服务器上一次可能托管50个项目。…
在我的生活中,我一直错误得可怕的一件事是我对微软的看法。
在我年轻的时候,我在一台旧的台式电脑上使用Windows XP,然后用我的第一笔钱买了一台Linux笔记本电脑(Ubuntu),因为从用户和性能的角度来看,Windows并不适合我。但后来我发现了其他的应用程序和完整的企业解决方案,如AD登录、Office、Outlook、Teams,后来MS收购了GitHub,并大大改进了GitHub,设计并收紧了惊人的TypeScript语言,我还能发现许多其他领域。…
一位初级同事向你提出了一个想法,即如何重构/改进你们共同开发的系统中的现有功能。你很高兴他在努力思考问题,你肯定会赞扬他,并给这种可能性一个机会。
在分析过程中,你发现所提出的解决方案并不比现有的解决方案好,甚至还包含设计问题。但不幸的是,这些问题非常棘手,你无法直接指出来,它们更多的是基于直觉和基于运行其他系统的经验。例如,一个新提出的解决方案在某种程度上可能会增加约30%的运营成本,你将不得不对现有团队进行部分再培训。
你如何决定?
1…
3年后,你的主机供应商突然告诉你,由于能源成本的增加,他们下个月要涨价50%。当你在电话中谈判时,他们的经理只是告诉你,你要么接受新的条款,要么他们就得说再见。
如果这只是你的项目,你会以某种方式弥补的。如果是一个你已经照顾了几年的客户服务器,而且你想和客户保持良好的关系,那就更糟糕了。
这是一个利润相对较差的项目,但它的运行成本和要求已经相对较高。
你如何决定?
除了让客户知道涨价外,你还要...
1.你把决定权留给客户,而你并不关心。
2…
你和一个初级同事正在开发一个定制的电子商店,作为FTFP工作(固定价格,固定时间)。 你已经准备好所有的模板图形,编码的主页和产品细节。初级同事只能使用Nette和Latte,编码知识水平比较一般。
但你一个月前听说了React,你只在周末玩这个,并试图学习它。你仍然不知道它在生产部署中的表现,你将如何处理路由和服务器端的渲染,以及你将需要什么样的服务器。
你如何决定?
1.你是否愿意承担风险,尝试使用现代(可能是更好的)技术?
2…