Many debates in software development are underpinned by whether the speaker has a DirectingAttitude or an EnablingAttitude. These different attitudes affect choices over languages, designs, tools, processes, and lots more.
Here's some examples of this dichotomy:
- A debate a while ago triggered by Joel's post on exceptions. He didn't like exceptions because they could be misused badly, leading to confusing code (directing). Bill Caputo pointed out that exceptions, when used well, make life much easier (enabling).
- Some of the static/dynamic typing debate brings up these points. Some arguments in favor of static typing talk about how they prevent people from making certain kinds of mistake (directing) while dynamic typers point out how static typing restricts some useful idioms (enabling).
- Agile processes are PeopleOriented (enabling), while plan-driven methods seek to ensure that even a poor team can do an acceptable job (directing).
These aren't hard-wired attitudes. Often people are directing in some cases and enabling in others. But I think there is a deep strain running through here, often a personality issue, that runs underneath much discussion on how we do software. (I'm very much in the enabling category, as if you can't tell.)
You might think that all restrictions on what a developer does imply a directing attitude, but it's not that simple. As an example, consider memory management. You can think of this as a directing feature: programmers can't be trusted to manage memory correctly so take away their ability to allocate memory. But I look at memory management as an enabling technology - it takes away something I don't want to worry about, so I can concentrate better on those things I do care about.
|
相关推荐
9. 软件开发平台:竞赛试题提到适用于Android平台和Win10平台,暗示参赛者需要对这两种操作系统下的软件开发有一定的了解和掌握。 10. 软件测试与部署:选手需要在规定时间内将代码整合并部署到提供的设备上,并...
- **持续学习态度**:软件开发领域变化迅速,强调个人对新技术的学习能力和适应性非常重要。 - **团队合作精神**:无论是前端还是后端开发,都需要良好的团队协作能力。在求职信中体现这一点会很有帮助。 综上所述...
敏捷软件开发不仅是一种开发方法,更是一种文化和态度。它要求团队成员之间保持高度的信任和开放的沟通环境,同时具备快速学习和适应变化的能力。通过灵活运用上述原则、模式和实践方法,组织可以在复杂多变的环境中...
1. 编程语言:软件开发工程师应精通至少一到两种主流编程语言,如Java、Python、C++或JavaScript。熟悉Web开发框架,如React、Angular或Vue.js,以及后端框架,如Spring Boot、Django或Node.js。 2. 数据库管理:...
- **两种心态**:保持与客户的真诚合作态度,以及冷静面对需求变更的心态。 - **五种提高**:提升业务知识,熟悉用户行业,避免使用专业术语,强化速记和文字表达能力,以及提高总结能力,以撰写完整的需求报告。 ...
3. **学习与成长**:在FPGA领域,作者有机会接触ASIC实现代码,并对比分析了与FPGA的差异,这有助于他深入理解这两种技术。同时,他还通过实际项目实践学习了高级的PCB制版软件,这表明他在硬件设计方面也有一定的...
这显示了一种积极的态度,有助于保持离职后与前雇主的良好关系。 综上所述,这份辞职报告不仅是个人职业生涯的一个转折点,也提供了关于软件开发人员心态、期望和工作环境的洞察,对于公司管理层来说,了解这些因素...
根据提供的个人简历信息,我们可以提炼出以下几个方面的知识点: ...通过以上分析,可以看出这位求职者在Java软件开发方面有着扎实的专业基础和丰富的实践经验,同时也具备良好的个人素质和职业态度。
敏捷软件开发是一种以人为核心、迭代、逐步交付的开发方法论,它强调灵活应对变化,重视团队协作和客户参与。这一概念在2001年的"敏捷宣言"中被正式提出,其核心价值观包括个体和互动高于流程和工具、可工作的软件...
Sql Server 2000用于大学教材管理系统,Oracle则是在海运进口系统开发中使用,这使作者对这两种数据库有了深入的理解,特别是Oracle的PL/SQL编程。 5. **组件开发**:作者掌握了C#组件开发技术,这是构建可重用和可...
他们需要精通至少两种数据库技术和Unix/Linux开发环境。高级程序员通常要求本科学历,且有3年以上相关经验,不常接收应届毕业生。 3. **高级软件工程师**:这个层次的工程师需要精通面向对象开发和Web开发,掌握...
### C/C++对于软件开发初学者的重要性 在探讨C/C++对软件开发初学者的意义之前,我们先来看看成为一名合格的程序员需要具备哪些条件。根据给定的信息,一名合格的程序员应当具备以下三个基本条件: 1. **强烈的...
1. **软件开发实习经验**:在2021年的实习期间,作者在朗嘉公司体验了实际的软件开发工作,这有助于他更好地理解和适应软件行业的节奏和工作模式。 2. **C#编程语言**:作者在实习期间学习了C#,这是一种面向对象的...
此外,他还掌握了C和Java编程语言的基础,这两种语言在游戏开发中都具有广泛的应用,C语言用于底层系统和性能敏感的部分,而Java则常用于游戏服务器端或跨平台开发。 【技术背景与实践经验】 求职者的专业是软件...
在IT行业中,软件开发部涵盖了多种不同的岗位,这些岗位共同构成了一个高效运作的团队,负责软件产品的设计、开发、测试和维护。以下是根据标题和描述中提到的一些关键职位及其主要职责和要求的详细说明: 1. **...
1. **职业发展与个人兴趣**:员工提到在公司工作近两年,虽然有成长,但对软件开发工作缺乏成熟感,引发了对自己职业选择的反思。这反映了在IT行业中,个人兴趣和适合度对于职业满意度和长期发展的重要性。对于IT...
- **WCDMA/TD-SCDMA**:这两种技术分别代表了第三代移动通信中的两种主要标准——WCDMA(Wideband Code Division Multiple Access)和TD-SCDMA(Time Division-Synchronous Code Division Multiple Access)。...