0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

软件工程师如何做出合理的设计

工程师人生 来源:wv 作者:简书网 2019-09-05 15:39 次阅读

不断的复制粘贴和简单排列组合的人叫码农,明白自己编程设计的人叫软件工程师

了解 C语言 的过程式,HTML/css/js 的文档声明式,Java/Ruby 的面向对象式,Golang 的组合式和最近看的 Lisp(Scheme) 的函数式这些不同的思维模式让我渐渐明白了:一个优秀的软件工程师应该在基本的计算机知识上,有整体意识,有大局观,在工程中的各个阶段做出最合理的设计决策,注意这里说的是合理,而不是最好,因为工程是为了解放人类脑力和体力。

设计决策大到设计语言选型,数据库,软件架构,网络协议,小到模块设计,类,方法,变量命名。我记得高中有个足球教练说过:一个人会不会踢球,看他踢一脚就够了。

那么问题来了,如何做出合理的设计呢?

对需求的理解

对现实条件的评估

对工程的预期(人月)

平衡 1. 2. 3. 作出用于试错的决策计划

小步试错,在可接受的时间点之前作出合理项目计划

需求理解力

程序员和差程序员的区别在于理解能力 --《简约之美:软件的设计之道》

是的,我们写的每一行代码,每一行注释都是为了直接或者间接的实现某种实际价值,而不是研究某个学术或者练习英语。所以了解需求至关重要,其实说白了就是对数据作怎样的处理。不同的行业有不同的特点,不同需求有不同的价值实现诉求,深入了解要解决的领域问题,然后以在更高的视角抽象成计算机能理解模型,所谓“艺术源于生活,但高于生活”。

现实条件的贯通力

这里主要涉及的是计算机专业领域的基本功即:操作系统,计算机网络,数据库,算法与数据结构,语言相关设计模型等。我们没有必要将各个算法各个协议倒背如流,能查文档的没必要往自己脑子里硬塞。要明白的是:以上每个领域的设计都有很强的需求背景,我们所要了解的是,在历史的角度上,它们是为了解决哪类问题而逐渐演化发展而来的,各中解决方案之间有何联系和区别,考虑自己的应用场景,如何从前辈的设计方案中做抽取,组合,修改和扩展。

人月评估力

有了以上的基本客观条件,最难得就是对人的评估。

对自己/团队成员水平的评估

对新技术的调研和学习时间

对突发状况的应对措施

万剑归宗:应变调整力

唯有变化是不变的,在实践中不断磨练自己应对变化的调整能力。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 软件工程师
    +关注

    关注

    8

    文章

    217

    浏览量

    21121
收藏 人收藏

    评论

    相关推荐

    FPGA算法工程师、逻辑工程师、原型验证工程师有什么区别?

    ,还需要与软件工程师、硬件工程师紧密合作,对整个系统进行集成和测试。 总的来说,FPGA 算法工程师着重于算法优化,FPGA 逻辑工程师专注于逻辑设计,FPGA 原型验证
    发表于 09-23 18:26

    正是拼的年纪|65岁电子工程师上班VLOG #65岁退休 #电子工程师 #搞笑 #上班vlog

    电子工程师
    安泰小课堂
    发布于 :2024年07月25日 11:31:02

    硬件工程师如何做元器件变更的决策

    硬件工程师如何做元器件变更的决策某产品在从研发转规模生产阶段,采购部门给硬件工程师推荐了新的MOSFET(称为A),该物料比该产品研发阶段使用的MOSFET(称为B)价格更低,且供货渠道更友好。作为
    的头像 发表于 07-06 08:17 440次阅读
    硬件<b class='flag-5'>工程师</b><b class='flag-5'>如何做</b>元器件变更的决策

    嵌入式软件工程师如何提升自己?

    嵌入式软件工程师如何提升自己? 作为一名嵌入式软件工程师,在这个充满机遇和挑战的领域里,如何提升自己显得非常重要,它决定了你未来的发展方向和成就。接下来,我们一起探讨一下。 1.奠定扎实
    发表于 06-12 11:20

    索尼诚邀软件工程师参与PS免费手游平台设计

    据悉,近日,澳大利亚知名媒体TweakTown发现,索尼互动娱乐正在为其旗下的PlayStation Studios Mobile招募一名资深的软件工程师,负责设计PlayStation的免费手机游戏平台。
    的头像 发表于 05-23 17:08 693次阅读

    嵌入式软件工程师和硬件工程师的区别?

    嵌入式软件工程师和硬件工程师的区别? 嵌入式软件工程师 嵌入式软件工程师软件开发领域中的一种专业工程师
    发表于 05-16 11:00

    大厂电子工程师常见面试题#电子工程师 #硬件工程师 #电路知识 #面试题

    电子工程师电路
    安泰小课堂
    发布于 :2024年04月30日 17:33:15

    Cognition发布首款AI软件工程师Devin

    据报道,Cognition公司今日公布了其首款人工智能软件工程师——Devin,掀起了打造软件模式变革的序幕。该产品在SWE-bench代码测验中展现出卓越表现,甚至超过了部分顶级人类工程师的水准。
    的头像 发表于 03-13 10:57 589次阅读

    如何构建linux开发环境和编译软件工程、应用程序

    前文介绍了如何使用官方提供的镜像文件启动开发板,本文将说明如何构建linux开发环境和编译软件工程、应用程序。
    的头像 发表于 01-03 12:31 1937次阅读
    如何构建linux开发环境和编译<b class='flag-5'>软件工程</b>、应用程序

    嵌入式软件工程师常用的

    最近我换工作了,看见不同嵌入式软件工程师用的平台都不一样,所以我整理了一下。PlatformIO:多平台支持:PlatformIO支持多种嵌入式平台,包括Arduino、ESP8266、ESP32
    的头像 发表于 12-24 08:00 631次阅读
    嵌入式<b class='flag-5'>软件工程师</b>常用的