软件工程

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

18
学习成为一名优秀的开发人员:您可以跳过哪些部分?[关闭]
我为自己设定了在明年这个时候成为一个体面的开发人员的目标。我的意思是,我对开发“生命周期”有充分的经验,有一些不错的应用程序/站点/网络应用程序,而且最重要的是能够以稳定的速度工作,而不会被一些应该已经知道的事情所困扰技术。 我不是从零开始。我写了很多html / css,SQL,javascript,python和VB.net,并研究了其他语言,例如C和Java。我知道有关的东西像面向对象,设计模式,TDD,复杂,计算语言学,指针/引用,函数式编程,以及其他学术/理论问题。只是我不能说我确实做了这些事情。 所以我想加快速度,我想知道以后可以离开的东西。例如,学习算法及其背后的数学非常有趣,但到目前为止,除了最基本的嵌套循环之外,我几乎不需要编写任何东西。调查大会以更清楚地了解低级别的操作将是很酷的事情……但是我想很少会侵犯日常工作。另一方面,查看功能性编程语言可能会帮助我编写更易理解且不太容易出现隐藏故障的程序(目前,我发现最大的困难是当应用程序的复杂性超出我的理解能力时) -例如,传递数据很好...直到我不得不开始使用AJAX进行操作,这是一个痛苦的进步)。 我是一名具有基本能力的程序员-我应该专注于开发哪些技能? (同样,我的Unix技能也很弱,并且对Windows配置也很了解。。。不确定我应该花多少时间)
31 learning  skills 

14
为什么对象通过引用传递?
一个正在研究面向对象的年轻同事问我为什么每个对象都通过引用传递,这与原始类型或结构相反。它是Java和C#等语言的共同特征。 我找不到适合他的答案。 此设计决定的动机是什么?这些语言的开发人员是否厌倦了每次都必须创建指针和typedef的麻烦?

8
ASP.Net还是WPF(C#)?[关闭]
我们的团队对此有分歧,我想征询一些第三方的意见。 我们正在构建一个应用程序,无法确定是否要将WNet服务器使用.Net WPF桌面应用程序,还是使用jQuery使用ASP.Net Web应用程序。我以为我会在这里提出一些规范的问题,然后看看使用任何一方的利弊。我有自己的最爱,觉得自己有偏见。 理想情况下,我们希望尽快构建软件的初始版本,然后放慢速度,并花一些时间来构建以后想要的其他功能/组件。最重要的是,我们希望该软件能够快速运行。用户整天浏览记录,延迟加载记录或刷新屏幕会降低他们的工作效率。 申请详情: 我估计初始版本大约有100种不同的屏幕,并计划在初始发行后的以后添加很多其他屏幕。 我们希望将双向通讯用于提醒和事件系统 尽管已经被告知允许最多增加500个用户,但目前必须支持大约100个用户 我们有多个位置 要考虑的项目(在某些情况下可能并非最初,但在将来的版本中): 在初始发行后可以添加其他组件的空间(其中有很多……也许在这里比初始应用程序有用) 键盘导航 性能是必须的 生产速度到初始版本 维护费用低 未来的支持 网络电话/扫描仪集成 我们的开发商: 我们有1位程序员在过去几个月中一直在学习WPF,并且是一位建议我们为此使用WPF的程序员。 我们有一位熟悉ASP.Net的第二位程序员,他将来可能会为该项目提供帮助,尽管他不会花很多时间在最初的版本上进行开发,因为他花了时间来维护我们的当前软件。 有我和他们一起工作过,并且对其中任何一个都很满意 我们有一家外部公司从事项目管理,而他们是ASP.Net公司。 我们计划招聘1-2个其他人,但是我们首先需要知道我们的发展方向 环境: 普通用户在带有终端服务的Windows 2003服务器上。它们通过RDP连接使用WYSE瘦客户端进行连接。管理员拥有自己的XP或更高版本的PC。尽管限于使用IE作为Web浏览器,但允许用户指定自己的分辨率。 其他位置通过MPLS连接连接到我们的网络 基于此,您会选择什么,为什么呢?
31 asp.net  wpf 

12
专注于我喜欢的单个领域,或者扩展到其他领域以扩大视野会更好吗?[关闭]
我已经思考了很长时间,这是一个难题。 我是一名研究生,我感兴趣的主题是编程语言设计,代码分析,编译等。到目前为止,该领域非常有趣,对我来说很有意义,因此我一直在考虑在该领域找到工作并继续专攻它。我觉得这是一个相对牢固的领域,不会很快“过时”。我一直认为,在如此复杂的领域中,成为真正的专家比仅是一个表面上了解专家所谈论内容的家伙更好。 另一方面,我觉得通过这种方式的专业化确实限制了我将来的选择。我一直坚信采用多学科方法解决问题。也许我应该去寻找一份一般的编程工作,从中我可以在其他领域获得经验,并偶尔将自己喜欢的领域应用于解决问题。只专注于一两个领域可能会阻止我跳出思维框框并造成停滞。 我真的很想听到更多关于此选择的意见。事实是,我已经倾向于其中一种选择,因此基本心理学认为什么都不会改变我的想法,但是我仍然很想听听一些反馈。

13
跳到GIT之前应该了解SVN吗?[关闭]
我在一个部门中工作,以前没有人使用过源代码管理,包括我自己。 我正在努力推动这一概念。我花了一些时间研究SVN。我学了一些基础知识。我可以使用命令行或Tortoise创建/更新/签出/提交。我开始学习如何标记和分支,但是仍然对分支和主干之间的冲突感到困惑。我仍在学习,但是我没有一个能向我展示任何东西的自然人。它全部来自书籍/教程以及反复试验。 根据我在网上阅读的内容,似乎git最好了解一些东西,但是它也更加复杂。我不想让自己不知所措。我应该在转入git之前继续掌握svn还是现在明智地跳到git? 两种方法都有优点和缺点吗?
31 svn  git 

4
什么算作IDE?
最近阅读的问题是在没有IDE的情况下使用什么语言?在几个答案中提出的一个问题是“是Notepad ++和IDE吗?” 原始问题的一个答案是“没有,我使用vim ...”,这意味着vim是一个IDE。但是,另一个答案表明vim不是IDE。 那行在哪里? 那记事本,ed或nano呢? 唯一的非IDE编码技术是蝶形技术吗?
31 ide 

16
我使用IDE(Eclipse)开发软件。为什么要切换到vim或emacs?[关闭]
我的日常工作是Java / Web开发人员。我已经使用Eclipse大约5年了。我认为它很棒,而且我也将Webstorm用于javascript和html / jsp。 我有时需要将ssh放入服务器并弄乱配置文件;为此,我使用vi,这让我很痛苦。我必须建立一个列出语法/命令的网页:按Escape键,然后按asterix键,转三圈,然后将文本输入到光标上方两行。这对我来说太不直观了,我想像任何在八十年代后期长大的人。 这是我认为eclipse非常出色的主要原因(并且我假设使用其他IDE),并且不切换到emacs和/或vim。 突出显示错误,无需重新编译项目。 代码协助。 重构。 开幕电话hiearchy /开幕宣言。 与源代码控制完全集成。 包含调试器。 第三方插件的可用性-例如findbugs / checkstyle。 我听到的论点之一是,使用emacs / vim可以创建自己的插件-很好,但是您也可以在Eclipse中实现。但是您不需要,因为一切都已经存在!就像说买这辆半成品车一样,您可以自己制造其余的。 人们为什么使用emacs / vim?使用它的人是否实际上在大型组织中从事复杂的面向对象的项目? 切换到vim / emacs的原因是什么?如果我换班,生产率将如何提高?
31 ide  eclipse  vim  emacs 

7
您如何确定软件成本?[关闭]
如果您是单独开发人员,或者在软件公司中扮演领导角色,则可能必须决定您的软件一天或另一天要花费多少……您为客户计算软件成本的经验是什么?为什么这种方法对您有用?

11
为生活而编程会破坏您享受技术的能力吗?[关闭]
引用亚瑟·克拉克的话: 任何足够先进的技术都无法与魔术区分开。 过去,我惊奇地看着技术。我想把它拆开,了解它是如何工作的,将其全部弄清楚。技术是神奇的。我年纪大了,我知道更多,而且我花了很多时间来创作一些东西,希望能让其他人充满这种奇迹。但最近我发现自己对技术的敬畏已被严重削弱。很多时候,我只是生气,因为它不像我年轻时那样优雅,无缝,抛光或完美交付。一切看起来都破烂不堪,或者拼凑在一起并且测试不佳。 编程破坏了您享受技术的能力吗?您是否已经停止惊叹于疑问,而只是在每次学习一点技术时都说“他们可以做得更好”?

5
我编程太慢了吗?[关闭]
我从事该行业只有一年,在评估特定任务时遇到一些问题。是的,在您关闭此内容之前,我已经读过此内容:当要求您提供估算值时如何应对?那就是我遇到的同样的问题。但是我正在寻找更具体的经验指标,这些东西应该是可量化的,或者可能是其他程序员的平均表现,我应该以此为基础并进行估算。答案从几周开始不等,我一直在寻找有关一天左右分配的任务级别的答案。(请注意,这不包括提交质量检查或文档,仅包括从编写测试(如果使用TDD到编写页面)到提交测试之前的实际开发时间) 我现在的当前速度如下(在ASP.NET网络表单上): 现在,在一天的时间(8小时)内,我已经能够在一个已经构建的架构上开发一个简单的数据输入页面,其中包含一个网格列表(没有复杂的逻辑,只有创建和读取)。 添加复杂的功能以及“更新”和“删除”页面会使任务再增加一整天。 如果我必须从头开始页面(没有解决方案,没有现有网站),那又要花整整一天的时间。 (并非总是如此),但是如果我遇到新的东西或尚未完成的事情,则需要我整整一整天。 每当我做出比预期更长的估计时,我都会感到其他人认为我与其他所有人相比落后很多。我只是担心,因为人们一直期望只有一页,而这一天只需要我一整天。是的,肯定还有更多的改进空间。总有。我有很多要学习的。但是我想知道我目前的速度是太慢了,还是平均水平,还是行业内不超过一年的人的平均水平。


10
贵公司有编码标准吗?[关闭]
最近,我看到Microsoft发布了编码标准文档(“多合一编码框架编码标准”),这让我开始思考...我工作的公司根本没有正式的编码标准。仅有几个开发人员,我们在一起的时间已经足够长,已经演变成类似的样式,这从来都不是问题。 您工作的公司是否有书面的编码标准?如果没有,为什么不呢?有标准会有所作为吗?是否值得从头开始编写标准,还是应该采用其他标准作为自己的标准(即使Microsoft的标准成为您的标准)?

29
如何在代码中使用空行?
关于花括号放置的讨论中已经有关于空白的一些评论。 我本人倾向于在我的代码上加上空白行,以试图将“逻辑”组中的所有内容隔离开来,并希望使下一个人更容易阅读我刚刚生成的代码。 实际上,我会说我像编写代码那样构造代码:我创建一段不超过几行(绝对短于10行)的段落,并尝试使每个段落都是独立的。 例如: 在一个类中,我将组合在一起的方法,同时将它们与下一组分隔为空白。 如果我需要写评论,通常会在评论前放一个空白行 在一种方法中,我在过程的每一步都写一个段落 总而言之,我很少有超过4/5的行聚集在一起,这意味着代码非常稀疏。 我不认为所有这些空白都是浪费的,因为我实际上使用它来构造代码(实际上是使用缩进),因此,我觉得值得这样做。 例如: for (int i = 0; i < 10; ++i) { if (i % 3 == 0) continue; array[i] += 2; } 我认为这两个陈述具有明确的不同目的,因此应该分开以使其显而易见。 那么,如何在代码中实际使用(或不使用)空行呢?


17
程序员如何保持健康?[关闭]
成为程序员并不是一个非常健康的职业-长时间坐在计算机前,迫在眉睫的最后期限。这会给身体和心灵造成伤害。 那么,您对程序员有什么秘诀才能保持健康?

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.