软件工程

针对在系统开发生命周期中工作的专业人士,学者和学生的问答

13
是否需要创建一个尽可能少的表的数据库
我们是否应该创建具有最少表数的数据库结构? 应该以一种将所有内容都放在一个地方的方式进行设计,还是可以有更多的桌子? 反正会影响什么吗? 我问这个问题是因为我的一个朋友修改了mediaWiki中的某些数据库结构。最后,他只用了8张桌子而不是20张桌子,花了8个月的时间才完成(这是他的大学任务)。 编辑 我得出的结论是:在特殊情况下,表的大小并不重要;在这种情况下,非规范化可能会有所帮助。 感谢大家的答案。

1
您如何用Haskell或其他功能编程语言设计程序?
我在面向对象的编程语言(例如C#或ruby)方面有一些经验。我知道如何设计面向对象风格的程序,如何创建类和对象,以及如何定义它们之间的关系。我也知道一些设计模式。 人们如何编写功能程序?他们如何开始?有功能语言的设计模式吗?极限编程或敏捷开发等方法是否适用于功能语言?

12
如果您的单元测试代码“闻起来”真的有关系吗?
通常,我只是使用复制和粘贴以及所有其他不良做法将单元测试放在一起。单元测试通常看起来很难看,充满了“代码味道”,但这真的重要吗?只要“真实”代码是“良好”,我总是告诉自己,这很重要。另外,单元测试通常需要诸如存根函数之类的各种“臭味”。 我应该如何应对设计不佳(“臭”)的单元测试?

18
尽管存在敌意管理,但仍成功完成了项目?[关闭]
我为一家大型全球公司的子公司工作。从一开始这不是一家子公司,而是一家被较大公司收购的公司。 我们似乎正走向死亡之路,我想知道我(或我的团队)是否可以做些什么来解决管理问题或完成这些项目。 这是典型的每日WTF情况: 期限不切实际(管理“估计”为6个月,开发团队至少需要18个月); 长时间(最多3小时)的日常会议,进一步降低了我们的生产力; 管理层拒绝让步,因为他们希望新老板看起来不错。 开发商被欺负,被指控无能,被置于“耻辱之墙”等。 团队领导刚刚辞职,士气处于历史最低水平。 我想离开-大多数开发团队都在考虑-但我不愿意退出。我真的很需要钱,而且在失业一段时间后我也只来过很短的时间(5个月),所以现在辞职可能会给潜在的雇主带来危险。 是否有任何策略可以有效地促进与管理层的更多合作,或至少将持续的中断最小化? 编辑: 从这个问题的答案我收到了很好的建议。我不能真正接受一个答案,因为我不能接受一个以上的答案,这对其他人来说是不公平的。 考虑到这种情况,我们决定尽力而为。我们正在推迟管理,以查看我们是否真的可以从他们那里获得帮助(如新员工,新截止日期等)。同时,我正在寻找新工作(因为我的同事已经在做)。 我们将看看会发生什么并相应地计划。但是有一点可以肯定:在公司圣坛上牺牲自己是不可能的。 谢谢你们!

11
对于那些喜欢从头到尾独立地拥有大块代码的开发人员,我们如何使他们感到敏捷?
使用Scrum从瀑布到敏捷的过渡大约在中间。我们已经从技术/学科孤岛中的大型团队变为较小的跨职能团队。 不出所料,敏捷的改变并不适合所有人。少数开发人员很难适应敏捷的需求。我真的想让他们保持参与和挑战,并最终享受每天上班的乐趣。这些人都是聪明,快乐,有进取心的人,我个人和专业都尊重他们。 基本问题是这样的:有些开发人员的主要动机是乐于进行一些艰巨的工作,仔细考虑设计,仔细考虑潜在问题,然后逐步解决问题,而在与扩展人员的最小交互下一段的时间。他们通常会及时高质量地完成工作;他们的工作是可维护的,并且与整体架构相适应。过渡到重视交互作用和共同责任的跨职能团队,并在较短的时间间隔内交付工作功能后,团队不断发展壮大,整个团队将这一难题解决了。许多人发现这是一个积极的变化。一个喜欢承担一个问题并从头到尾独立承担责任的人会失去这样的工作机会。 人们乐于接受变革,这不是问题。当然,我们已经见过一些不喜欢变革的人,但是在我所关心的情况下,个人表现出色,真正乐于接受变革,他们努力工作,他们看到团队其余成员的表现不断变化,他们想适应。这不是某人遇到困难或阻碍主义者,或想ho积最充实的工作。他们只是没有像以前那样在工作中找到快乐。 我敢肯定,我们不可能是唯一一个没有撞到这个地方的地方。其他人如何处理呢?如果您是一个开发人员,因为自己是端到端拥有大量工作的动力,并且已经适应了另一种工作方式,那么对您有什么帮助?
52 agile  scrum 

8
我是CS学生,说实话,我听不懂Knuth的书[关闭]
我偶然发现了比尔·盖茨的这句话:“如果您能读懂全部内容,则绝对应该给我一份简历。” 他在谈论编程艺术书籍。所以我很好奇,想读全部。但老实说,我不明白。 我真的不是那个知识分子。因此,这应该是我无法理解的原因,但我渴望学习。我目前正在阅读有关基本算法的第1卷。有没有适合像我这样的新手/新手入门的书籍,可以帮助我建立知识,以便将来我能轻松阅读Knuth的书?

12
什么是博士学位 对软件行业有好处吗?[关闭]
我是一名自学成才的程序员,并且刚开始获得计算机科学学位,以补充我的知识并填补空白。 但是,我已经在辩论我的教育方向。我想当然要获得4年的学士学位,但是在那之后,我不确定:获得理学硕士学位是否值得?那博士呢?这些学位有哪些机会? 目前,我的目标是成为一名软件开发人员,但是软件行业中有许多引人入胜的领域,我当然有兴趣调查其中的许多领域。在这方面,我认为更高的学位可能是值得的-即使这不一定对软件开发事业有所帮助。 那值得吗?研究生院会开门吗?

14
为什么DirectX使用左手坐标系?
我考虑过在Stack Overflow上发帖,但是这个问题使我感到主观,因为我认为微软在此问题上的选择没有合理的技术解释。但是这个问题困扰了我很久了,这个问题在我的一个项目中不断出现,而我却从未真正尝试过解释这个问题: OpenGL使用右手坐标系,其中世界坐标系的+ Z部分向观察者延伸。 DirectX使用左手系统,其中世界坐标的+ Z部分延伸到屏幕中,远离查看器。 我从未使用过Glide API,所以我不知道它是如何工作的,但是据我所知,它也使用了左手系统。 是否有技术原因?如果不是,那么坐标系的特定惯用性在概念上是否有优势?为什么一个选择另一个?
52 math  directx  opengl 

21
您如何向非技术人员解释重构?
您如何向非技术人员(通常是PHB或客户)解释重构(和技术债务)?(“什么,这要花我一个月的时间而没有明显的区别?!”) 更新感谢到目前为止的所有回答,我认为此列表将提供一些有用的类比,我们可以向相应的人员指出(尽管删除对PHB的引用可能是明智的!)


4
我应该怎么做才能与语言无关?
现在,我使用asp.net和C#。我在Java中也做得不错。我正在计划自己的职业,以至于有一天我会与语言无关。我需要学习什么? 首先,OOP范式是关于类设计的。还有其他吗?


10
我的项目经理不接受Scrum中的结转-正常吗?
我是一名开发人员,致力于开发具有大型后端组件的Android和iOS新移动应用程序。我们已经进入了该项目的三个冲刺阶段,并且我们将Scrum与它的所有仪式(完善,计划,每日,回顾等)一起使用。 在两次冲刺中,团队不得不加班和周末工作(无偿),因为管理层非常震惊,我们无法按时完成冲刺承诺。每个人都努力工作,但是一些外部依赖性和乐观估计使我们难以完成所有的冲刺故事。 以我的经验,在一些冲刺中完成一小部分故事是不正常的,可以在下一个中解决。但是我们的项目经理说,这是我们自己做的估算,这是我们的错,因此我们应该完成sprint中的所有项目。 我不知道这是Scrum的可接受/常见变化吗? 您如何建议我对此采取行动?

6
“无结果”是否应该是RESTful响应中的错误?
我将描述一个示例: 我开始为烘焙店制作API。该API将使人们可以在目录中搜索烘焙产品,例如使用制作的薄荷巧克力曲奇api.examplebakery.com/search?q=.....。 有人使用它来查找名为的产品pineapple-banana flavoured cookies,显然不会找到任何结果。 是否应该将其作为错误返回?搜索没有失败,API进行了搜索并成功得出结论,找不到cookie。该API不应返回404,因为确实找到了该API。

5
专门的维护工作会妨碍程序员的职业吗?[关闭]
在过去三年中,我的大部分工作主要围绕维护旧系统,这些旧系统需要修补或偶尔进行改造,然后再出售。 我了解专门的维护程序员在拥有大量项目且开发人员有限的公司中必须发挥的关键作用。 但是,当我判断自己目前的职业发展并与同龄人看时;承包商和企业开发商都一样;我确实感觉自己已经远远落后了,因为我在接触的领域上获得了很大的广度,但是深度并不多。我已经开始建立博客来解决这个问题,从事我自己的git-hub小项目,并重新安排我的生活,让他们有时间定期下班后进行个人编码。 我觉得如果我要去其他公司面试以逃避维护工作,我将不得不把自己表述为熟练的技能水平,因为我不会拥有具有三年工作经验的人需要的知识深度功能开发的路径。因此,从长远来看,我目前的工作经验的一半将变得毫无价值。 但这引出了我的主要问题,如果感觉太围绕我的个人困境,我深表歉意: 专门的维护编程角色最终会损害早期的职业生涯吗?其他程序员是否应该避免此类角色?除非您准备从高中开始,否则从事这方面的工作是否会使您锁定执行类似的任务?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.