您是否曾参与过(全职)项目,使用敏捷方法实际上允许您完成40小时的工作周?如果是这样,最有价值的敏捷实践是什么?
基于他们的工作,您如何区分出优秀的SQL开发人员?
示例可能包括:
很少使用CURSOR,并试图将它们重构.
很少使用临时表,并试图将它们重构.
可以放心地处理OUTER JOIN中的NULL值.
避免未广泛实现的SQL扩展.知道如何优雅地缩进.
我们的一些主要开发人员已经寻求管理层指派一名初级开发人员为他们记录他们的代码.
他们的论点是:
然而,为了保持最新状态,他们保持忙碌的程序员数量似乎随着时间的推移而增加.
这是一个好主意吗?
哇!这不是我们的经验!
以下是一些重要的澄清说明.
高级开发人员是反身自我记录员.这是一个核心招聘问题.他们有时需要被告知"为初级人员留下这个".
这是作为高级家伙的验证工具(我们的初级人员被聘用,我认为相当高的标准清除).
是的,代码应该是单一目的和自我记录.如果初级人员不能轻易评论,这是老年人认真对待的反馈.
期望青少年将其视为重构练习,并且它的工作方式比您预期的更频繁.特别是捕捉YAGNI问题,范围过大等问题.他们将老年人放入十字准线.事实上,他们起源于这种变化.(如果他们真的开始反对,我们会支持它.老年人非常愿意调整 - 他们明白他们比其他任何人都更有责任成功.)
难道你的资深人士不想解释他们的代码吗?
我们坚定地致力于"每个人都拥有代码"的敏捷原则.我们认为这会加速这一进程.
最后,个人笔记 - 当我试图理解别人的代码时,我想要做的第一件事就是在我试图理解它时重新评论它.为什么评论被视为如此繁重?
也许我们过滤掉一些初级申请人,因为我们明确说明这是我们的工作方式.但这不是营业额问题.(但这只是3个月.)
我一直看到浮动的问题,引用了名为DateLastUpdated的数据库表中的列.我不明白.
我见过的唯一伴侣字段是LastUpdateUserId等.从来没有关于更新发生原因的指标; 甚至是更新的内容.
最重要的是,此字段有时是在触发器内写入的,其中可用的上下文更少.
它当然甚至没有接近成为审计线索; 所以这不能成为理由.如果有是在日志或任何与审计线索的地方,这一领域将是多余的.
我错过了什么?为什么这种模式如此受欢迎?
对于另一个问题,我偶尔会遇到一种误解,似乎在这里出现.一些提问者似乎认为触发器属于数据库,因为事件属于OOP.
有没有人有一个很好的类比来解释为什么这是一个有缺陷的比较,以及误用它的后果?
比尔K.已经正确地击中了它,但也许并没有看到事件和回调函数之间的重要差异的重要性,无论如何.触发器实际上导致代码在每次事件发生时执行; 只有在为一个事件注册时才会发生回调(绝大多数事件都不是这样); 即便如此,在大多数情况下,回调的第一个操作是取消注册自身(或者至少回调包含一个限定出口,因此它只执行一次.)
如果你编写一个触发器,它将在每次事件发生时可靠地执行,因为没有办法注册或注销代码段.
触发器是一种将重复逻辑同步插入执行线程(即同步)的方法.事件是将逻辑推迟到以后的手段(即实现异步性).
在这两种情况下都有例外和缓解,但触发器和回调的基本模式在意图和实现方面大多相反.通常这种区别似乎没有完全沉没.(恕我直言,YMMV).:d
在各种SQL方言中,最有可能正确解释Date和/或DateTime的字符串表示形式?有SQL标准吗?这两个答案是相同还是相似?
编辑:
对于建议,我们是否可以使用任何不符合的已知SQL方言进行评论?
偶尔我们会通过软件学习体验来颠覆我们的假设,并且我们从全新的角度来看待软件开发.对于我们大多数已经存在一段时间的人来说,我怀疑的最明显的一个是向硬核OOP的过渡.您经历过其他类似的地震,您如何建议我们可以利用您的经验来质疑我们的假设?
编辑:也许有一些关于你学到了什么的建议,以及它是如何改变你的编程的?
奇才可以启动功能.他们也可以混淆你的代码,并且是反YAGNI.
总的来说,你认为奇才更有用还是更有害?
在我看来,对于具有深度和广度功能的结构化开发,ASP.NET MVC和Silverlight有可能构建一个具有出色UI粒度和减少AJAX暴露的强大框架.有没有人尝试构建这样一个堆栈,考虑到未来的耐用性?