软件工程

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

16
如何说服以自己为高年级的队友学习SVN概念基础?[关闭]
首先,从一些背景开始,我在今年夏天担任了新的开发人员一职,最终成为团队中的最新成员,但经验丰富。 到目前为止,由于采用成本低(在时间和精力上),我已经设法轻松地推动了健康计划。但是,情况已经有所改善。 我的队友之一,尽管经验丰富,但并不真正了解SVN。自然,在他的心理图上描绘了SVN海洋的空白区域使他采取了相当奇怪的用法。 例如,他宣布了一项策略“每个开发人员每天1 SVN提交”,因为否则“服务器将很快用尽磁盘空间”。当我向他解释SVN提交是增量而不是完整副本时,他对此表示怀疑,即使是今天,我也不确定他是否理解这意味着什么。 关于是否.project在SVN中包含Eclipse 配置,我们也有激烈的争论。我的队友坚持认为我们应该这样做,尽管这造成了许多毫无意义的冲突。我反对在SVN中保留单个开发人员配置文件。最终,事实证明,我的队友在每次提交后都有重新检出整个源代码树的做法,以确保“提交到存储库中的代码有效”。这就是他如此坚持将项目配置保留在SVN中的原因-因此很容易重新导入项目。当我解释说commit会将工作副本同步到远程逐个字节地进行,从而不必进行重新检出时,我的队友再次表示怀疑,最终将整个问题视为微不足道。 我认为,我们的团队通过解决项目配置文件中的SVN冲突而浪费时间,该项目配置文件仅包含开发人员特定的设置,根本不需要与SCM共享。所有这些都是混乱的,因为有人围绕错误的假设量身定制了该过程。 我该如何说服一个以自己为资深的队友来更好地理解SVN基础?
40 learning 

20
教授编程会不会使您成为更好的程序员?
我认为自己是中级Python程序员,并且有机会成为初学者Python编程课程的培训师。 我想知道这是否真的会扩大我的编程范围。在成功地训练了一群人之后,有人有启发性的经历吗? 它是否还取决于这些人-他们是程序员还是菜鸟生?(就我而言,他们是中级的.NET和Java程序员) 我对他们有什么期望? 我的恐惧之一是-如果其中一个问一个纠结的问题时我cho住了怎么办?这正常吗?

13
为什么以及为什么开发人员可能不喜欢“每日混乱”?[关闭]
举行每日Scrum有很多优点,例如: 团队互相协调 每个人都知道完成了多少任务 燃尽图变得越来越完整 任务板已更新 它不会持续那么长时间,十五分钟不会杀死任何人 但是,最近(在实施和使用Scrum的6个月之后),我觉得我们的开发人员已经不再每天都喜欢Scrum。人们只是更新任务板,而没有解释足够,这似乎使他们感到无聊。我看到,无论出于什么原因,如果我们不坚持,他们就会变得特别高兴。 我只是不知道这可能是什么问题。有什么理由提到“每日混乱”可能给团队带来的不利吗?开发人员厌倦了日常混乱的原因可能是什么?

17
我的沟通技能会浪费在软件工程职业上吗?[关闭]
我进入金融工程领域(在BA Math和BA Computer Science之后)大约5年(20%的分析/编程,80%的交流),并且以与人交流和讨论技术问题(即互动)的能力而感到自豪与团队)。我喜欢我的工作。去白板画抽象的想法和头脑风暴。 但是,由于种种原因,我想将自己的职业生涯过渡到一家技术公司(软件工程),但我非常担心自己会落入陈规定型的编程工作中,而程序员会戴着大大的耳机进行编码。我当然知道这只是一个刻板印象,但我之前(在初创公司)曾目睹过类似的环境,而且让我感到害怕的是,我会迁移到孤立的职业。 我喜欢通过算法进行编码和思考,但是我不想放弃与人的互动。我了解拥有沟通技巧只是一种积极的态度,但是我是通过过渡到软件工程来为自己的职业生涯失败做准备的。我希望听到任何澄清和/或建议。

18
在面试中语法正确是多么重要?[关闭]
当要求面试候选人在白板上编写程序时,您是否希望该候选人编写语法上正确的代码? 我有两个候选人,其中一个编写了在语法上正确的程序,但是逻辑不符合要求,另一个候选人的逻辑编写得更好,但是语法很糟糕。 我赞成第一位候选人。
40 interview 

9
为什么要将一个类声明为抽象类?
我知道应用于抽象类的语法,规则,并且想知道抽象类的用法 抽象类不能直接实例化,但可以被其他类扩展 这样做的好处是什么? 它与接口有何不同? 我知道一个类可以实现多个接口,但只能扩展一个抽象类。接口和抽象类之间的唯一区别是吗? 我知道接口的用法。我从Java中AWT的事件委托模型中学到了这一点。 在哪种情况下我应该将类声明为抽象类?那有什么好处?

1
工厂模式和抽象工厂之间有什么区别?
终于开始认真尝试学习一些基本模式(在职业生涯的后期,但这是一个不同的故事),我试图弄清Factory Pattern和Abstract Factory之间的区别。 这两种模式之间的主要区别是什么? 我知道Factory方法是通过继承创建对象的,而Abstract Factory是通过对象组合来创建的,但是从实际的角度来看,我仍然很难准确地看到它们各自的工作方式。

19
您会用自己的钱购买硬件以在工作中使用以更好地完成工作吗?[关闭]
在工作中,我得到了合理指定的机器(双四核2GHz,4GB RAM,160GB 7200RPM驱动器,Win7),但是在某些地方(HDD / RAM)缺少。IT人员可以用我自己的硬件代替硬件,所以现在可以使用SSD和额外的8GB RAM(以便可以运行多个Visual Studio和虚拟机)。我意识到选择公司的机器是公司的商业决定,但与此同时,更快的硬件使我更快乐,工作效率更高。 我想我的问题是,我是唯一愿意花个人钱在工作硬件上以改善生活质量的人(个体经营者:),我是否应该以其他方式来对待?是否可以追溯地说:“我认为您应该为这笔$ 500的硬件报销,因为[等等]”?

13
在工作中处理编码标准(我不是老板)
我在一个约10个开发人员的小团队中工作。我们根本没有编码标准。有些事情已经成为常态,但某些做事方式却完全不同。我最大的是缩进。有些使用制表符,有些使用空格,有些使用不同数量的空格,这会带来很大的问题。合并时,我经常遇到冲突,因为有人使用他们的IDE自动格式化,并且他们使用与我不同的字符来缩进。我不在乎我们使用哪个,我只希望我们所有人都使用相同的。 否则,我将打开一个文件,某些行与条件在同一行上有大括号,而其他行在下一行。再说一次,我不介意哪一个都一样。 我已经将标准的问题一对一地提交给我的直接经理,并在小组会议中提出来,而他对此并不过分担心(还有其他一些人与我有相同的看法)。我提出了关于缩进字符的具体问题,他认为更好的解决方案是“创建某种脚本,当我们从存储库中推入/拉出时可以转换所有内容。” 我怀疑他不想更改,而且此解决方案似乎过于复杂,容易出现维护问题(而且,这仅解决了较大问题的一种表现)。 你们中有人遇到过类似的情况吗?如果是这样,您如何处理?有什么好处可以帮助我按标准出售我的老板?在我们感兴趣的人当中,发起基层运动来创建编码标准是否是一个好主意?我是否太过挑剔,应该放手吗? 谢谢大家的时间。 注意:谢谢大家到目前为止的宝贵反馈!明确地说,我不想规定一种风格来统治所有人。我愿意放弃自己喜欢的做事方式,而选择最适合每个人的方式。我希望保持一致,我希望这是一个民主国家。我希望这是每个人都同意的集体决定。是的,并不是每个人都能如愿以偿,但我希望每个人都能够成熟到足以妥协以改善团队的能力。 注意2:有些人被我上面给出的两个示例所困扰。我更关心这件事。它以许多示例体现出来:命名约定,应该被分解的巨大功能,在util或service中使用某些东西,应该是常量还是注入的东西,我们都应该使用不同版本的依赖项还是相同的版本,接口用于这种情况,应如何设置单元测试,应如何进行单元测试(特定于Java),如果我们使用批注或外部配置。我可以继续。


6
为什么要避免Java继承“扩展”
詹姆斯·戈斯林说 “您应该尽可能避免实现继承。” 而是使用接口继承。 但为什么?如何避免使用关键字“ extends”继承对象的结构,同时使我们的代码面向对象? 有人可以在“在书店订购书”的情况下,提供一个面向对象的示例来说明此概念吗?

2
如何成为内核/系统/设备驱动程序程序员?[关闭]
我目前以软件工程师的身份从事Android操作系统的工作。我们致力于将平台作为本地守护程序集成到项目的其他方面。我主要从事Java开发SDK和Android应用程序的工作,但获得有关C / C ++平台的帮助。 任何人,我都非常有兴趣从事Linux的低级专业开发工作。我对目前的职位并不感到不满意,只要公司允许我徘徊(事实上,我很喜欢在那里工作!),但是我想朝这个方向努力。我一直在研究Linux内核开发(Robert Love)和Linux编程接口(Michael Kerrisk)(除了在每次获得机会时都增强我的C技能),并随意浏览Monster和类似的网站。 我看到的问题是,没有入门级职位。一个人如何进入这一领域?每当我看到“ Linux系统程序员”或“ Linux设备驱动程序程序员”时,他们都需要至少 5-7年的相关经验。他们想要的是一个懂行的人,而不是初级程序员(我已经工作了7个月了……)。 所以,我假设,一些从事stackoverflow的人以我想做的专业工作。你是怎么到达那里的?您使用什么平台在那工作?我是否会因为CSC的学士学位而不是计算机工程师(他们会遇到更多的嵌入式,ASM等问题)而变得更加困难? 编辑澄清! 我知道linux内核/驱动程序等的开源性质。无论我的工作在哪里,我都计划做出贡献。我更好奇什么样的入门级职位可以让我从事相关工作并获得报酬!感谢到目前为止的所有答复!
40 c  linux  linux-kernel 

16
如果公司不认可我对大型项目的贡献,您有何建议?[关闭]
我是具有1年经验的入门级开发人员。我参与了一个大型项目,我从事了大约80%的项目工作,那5个月对我来说很糟糕-深夜工作,甚至是周日。 我已经完成了整个流程模型的工作,做了一些同事的工作,数据库设计,客户反馈,但是重点是我的一些工作归我的团队负责人所有,希望现在意识到为什么我提到80%的工作是由我! 现在该项目已完成,客户似乎对该工作完全满意。 但是,我还没有找到该公司给予任何形式的鼓励/赞赏。未参加该项目的前辈得到了表扬,请假,奖金等奖励。我也被拒绝参加重要的家庭活动-这让我问“我现在有什么荣誉”? 我一直在想,对工作诚实/执着是什么导致了这种情况? 目前,我已经获得3个优惠套餐的报价-我一直在考虑现在转到任何一家公司。您目前的建议是什么?
40 management 

7
具有定义常量的接口是不好的做法吗?
我正在用Java编写一组junit测试类。有几个常量,例如在不同的测试类中需要的字符串。我正在考虑一个定义它们的接口,每个测试类都将实现它。 我看到的好处有: 轻松访问常量:MY_CONSTANT而不是ThatClass.MY_CONSTANT 每个常量仅定义一次 这种方法是好的还是坏的做法?我觉得有点滥用接口的概念。 您通常可以回答有关接口/常量的问题,也可以回答有关单元测试的问题(如果有什么特别之处)。

16
为什么职位发布总是寻找“摇滚明星”?
我注意到最近有一种要求摇滚明星的程序员的趋势。我明白了,他们正在寻找真正擅长自己工作的人。但是为什么(祈祷)提到摇滚明星呢? 这些公司是否真的希望这些特征成为真正的摇滚明星? 整夜聚会,早上起床忙于做生意? 物质滥用, 自恋与名人, 补偿远远超出了他们的管理, 擅长短时间演出 娱乐而非价值, 1个热门(项目)奇观或单类型表演者, 等等 什么是错的资深或首席软件工程师,谁拥有建立和证明为企业的热情?相反,我们的意思恰恰相反,有人: 卷起袖子开始工作, 采取适当的指导并帮助影响团队, 课程中吸取的教训和适当的做法, 与整个团队及时沟通, 可以编码和理解多种语言, 了解计算背后的科学和理论, 是否有使软件工程队伍多样化的趋势? 在乐队开始分手之前,您可以聘请多少软件明星? 当然,有很多人自己做这些事情,甚至很少有人为表演编写代码,但是我敢打赌,大多数人都是为了商业。我没有看到针对Rockstar会计师,Rockstar机械师或Rockstart首席财务官的广告。是什么使软件程序员及其雇用部门倾向于这种职位?

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.