首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
GeekHub
sonack
V2EX  ›  问与答

软件工程是不是扯淡

  •  
  •   sonack · 2016-12-23 22:06:31 +08:00 · 5819 次点击
    这是一个创建于 1203 天前的主题,其中的信息可能已经有所发展或是发生改变。

    怎么感觉越学越扯淡?全都是自找麻烦啊。。。

    84 条回复    2016-12-25 13:40:07 +08:00
    sonack
        1
    sonack   2016-12-23 22:07:16 +08:00
    画什么用例图、泳道图、状态图、时序图的。。感觉还不如不画清晰,本来这种逻辑结构还挺清楚的。
    kmyzzy
        2
    kmyzzy   2016-12-23 22:13:46 +08:00   ❤️ 1
    Edsger Dijkstra 说过,软件工程的宗旨就是:"How to program if you cannot?"
    zscself
        3
    zscself   2016-12-23 22:15:34 +08:00 via iPhone
    反正你现在不学,写毕业论文也要学「斜眼笑」
    sonack
        4
    sonack   2016-12-23 22:16:04 +08:00
    关键是还要考这些玩意。。。真是
    AbrahamGreyson
        5
    AbrahamGreyson   2016-12-23 22:19:09 +08:00
    初学者接触这玩意的确没啥用,软件工程应该作为编程几年后遇到真正的可维护性问题时的自我提升知识,而不是作为入门,软件工程是解决问题的方法,不是最终目的。
    nyanpath
        6
    nyanpath   2016-12-23 22:19:46 +08:00 via iPhone
    不管扯不扯淡……
    只求期末软件工程不挂科
    kindjeff
        7
    kindjeff   2016-12-23 22:23:05 +08:00
    除此之外,我还有“软件体系结构”、“软件需求工程”这两门。
    AutoRip
        8
    AutoRip   2016-12-23 22:26:22 +08:00
    @kmyzzy 这是高级黑?理解成“如果不会编程,应该怎么假装会”?😂
    hpeng
        9
    hpeng   2016-12-23 22:27:22 +08:00 via iPhone   ❤️ 1
    工作一年之后,非常希望他们按工程那套方法来,而不是,我要这样这样的东西,你给我做出来 这句话。
    yangyaofei
        10
    yangyaofei   2016-12-23 22:27:35 +08:00 via Android
    @AutoRip 应该是如何指鹿为马
    ihuotui
        11
    ihuotui   2016-12-23 22:28:38 +08:00
    高级程序员会画图
    21grams
        12
    21grams   2016-12-23 22:29:40 +08:00 via Android   ❤️ 1
    millson
        13
    millson   2016-12-23 22:30:32 +08:00   ❤️ 1
    工作几年后就知道有没有用了
    AutoRip
        14
    AutoRip   2016-12-23 22:34:06 +08:00
    @yangyaofei 贴切哈哈哈,刚想表达的就是这个哈哈哈哈哈
    sonack
        15
    sonack   2016-12-23 22:44:08 +08:00
    感觉一群刷论文的,,,
    A:没有银弹
    B:我觉得有
    A:真的有
    B:有银弹是错误的
    A:我承认你,但是有


    这不是神经病???

    明天就考试的我生无可恋
    kmyzzy
        16
    kmyzzy   2016-12-23 22:44:34 +08:00   ❤️ 1
    @AutoRip Dijkstra 专业黑软件工程啊,有兴趣可以看看他这篇文章 https://www.cs.utexas.edu/users/EWD/transcriptions/EWD10xx/EWD1036.html
    sonack
        17
    sonack   2016-12-23 22:48:40 +08:00
    @kmyzzy 收藏了,考完试我翻译到博客上
    AutoRip
        18
    AutoRip   2016-12-23 22:53:21 +08:00
    @kmyzzy 感谢
    libo26
        19
    libo26   2016-12-23 23:06:22 +08:00 via iPhone   ❤️ 2
    现在觉得没用是因为项目经验不够,或者涉及的业务逻辑不复杂。工作时写业务代码这玩意挺好用,常用的一般是用例图,时序图,状态图
    chengluyu
        20
    chengluyu   2016-12-23 23:18:35 +08:00   ❤️ 5
    因为人脑无法直接构建一个复杂而又庞大的系统,需要一种方法论来辅助。

    当然,不同人仅凭借自己脑容量能构建的项目大小也因人而异, Dijkstra 这种天才肯定和常人不同,所以才会喷。

    你现在讨厌它只是因为要背的东西太多了,等到以后要用的时候就知道有多么有用了。
    t6attack
        21
    t6attack   2016-12-23 23:23:56 +08:00
    用在互联网中小项目上是扯淡。但软件业比这大太多了。
    Rice
        22
    Rice   2016-12-23 23:26:08 +08:00 via iPhone   ❤️ 6
    结果就是大家都不当回事,写出的代码像坨屎
    msg7086
        23
    msg7086   2016-12-24 01:43:52 +08:00   ❤️ 8
    引用我考驾照时候考官的一句话:又有一群马路杀手要上路了。
    itqls
        24
    itqls   2016-12-24 02:03:04 +08:00
    计算机专业必修课,有道理的。
    hjc4869
        25
    hjc4869   2016-12-24 02:11:13 +08:00 via Android   ❤️ 6
    井底之蛙
    mringg
        26
    mringg   2016-12-24 06:46:50 +08:00 via iPhone
    用 uml 表述,其实挺好的,够直观
    oa414
        27
    oa414   2016-12-24 07:45:45 +08:00
    课本上的《软件工程》是维护上规模的、需求确定的软件项目的工程实践的理论抽象。

    现实世界的互联网产品研发的“软件工程”是进行合理的分工协作安排、自动化流程、面向快速变化需求还能从容交付高质量的版本的中小团队开发实践。

    《软件工程》上的部分理论和工具技术仍然可以用来参考,但是很多理论是没有经受过上规模项目的管理的初级开发者能吃透的;不如花点时间学学如何提升测试覆盖率,配置 CI ,合理管理个人开发时间。
    blacklee
        28
    blacklee   2016-12-24 08:10:04 +08:00
    毕业十年后简单总结一下(不一定对):
    关于系统设计的部分,有点扯淡。
    关于工程的部分,是真理。
    murmur
        29
    murmur   2016-12-24 08:21:05 +08:00
    企业应用都是按照软件工程来的 只不过因为人力和时间有限只按一部分来 但是模型基本都这么走的
    互联网小公司是软件工程的反例 不测试 不设计 没迭代 半年就倒闭了
    murmur
        30
    murmur   2016-12-24 08:24:13 +08:00   ❤️ 1
    最接近软件工程的,应该是军工项目吧,据说真的是严格看代码测试覆盖率的
    当然大的互联网公司就好么?比如新浪微博,我就不信他有设计、评审,估计都是拍脑袋+硬点
    zuoxiaomo
        31
    zuoxiaomo   2016-12-24 09:12:33 +08:00
    @sonack 时序图,状态图等你工作了你就知道用处有多大了,特别是大公司
    echo111222
        32
    echo111222   2016-12-24 09:26:29 +08:00 via Android
    看下构建之发
    realwol
        33
    realwol   2016-12-24 09:29:25 +08:00 via iPhone   ❤️ 1
    从知识无用论来让自己玩的时候心安理得一点吗
    nevin47
        34
    nevin47   2016-12-24 09:33:01 +08:00
    @zuoxiaomo +1
    以前一直觉得时序图还不如画个流程图好看
    直到到了公司,动不动一个模块几万行,没有前人给留个时序图根本没法接手
    kindjeff
        35
    kindjeff   2016-12-24 09:37:59 +08:00   ❤️ 2
    同为软件工程学生,我要帮楼主反驳一下楼上很多人。

    可能很多是计科或者其他专业毕业的,没有去上这几门课,就体会不到这几门课的无趣。不是说它们的知识无用,而是里面的知识,玄乎地说,都是要你自己去“用心体会”的,里面很多内容我都感同身受,才能感受到上课的无聊。

    另外就是课本的编排杂乱无章,让我没办法感受到这是一本工程学的书籍……

    以及我还有“软件需求工程”这门课,你们看着这个课程名体会一下。
    loading
        36
    loading   2016-12-24 09:48:42 +08:00 via Android
    软件工程,是上台阶的,想钱多活少就需要软件工程!
    cjyang1128
        37
    cjyang1128   2016-12-24 10:17:47 +08:00
    当时上学时觉得无用,然而现在工作了,每次想要梳理十分复杂的系统结构时,却后悔没有好好学。但不是所有的 UML 都有用的,用例图感觉大部分是面向外包会用到。总之会画图和不会画图的码农,确实是有差距的。
    zhouyg
        38
    zhouyg   2016-12-24 10:25:18 +08:00
    会画画的,写文档才能叫工程师,写代码的就叫写代码的。
    imcxy
        39
    imcxy   2016-12-24 10:31:20 +08:00
    任何行业都是从手工作坊到工业生产

    养 1 只鸡
    养 100 只鸡
    养 100W 只鸡

    是完全不同的
    Phariel
        40
    Phariel   2016-12-24 10:42:41 +08:00 via Android
    我大学统计系的 要学什么统计学基础 会计学基础 概率论 西方经济学 我就觉得又不当公务员进统计局(我那是国家统计体系的名校)学这玩意儿有卵用 过了这么多年 现在开始做金融相关开发 越来越觉得当初没好好学真特么的打脸。。。

    所以 天道好轮回 不要觉得你现在学的没用 如果将来突然用上了 你可以比其他人少奋斗很多年 相信我
    oisc
        41
    oisc   2016-12-24 11:01:51 +08:00
    然后你就可以提这些问题:
    这个工程一个人要干三个月,那去找 100 个程序猿吧,一天就能干完。
    这文档写的这么烂,我按照自己的想法写吧。提交,嘿,擦,怎么这么多冲突,一群沙比。
    XX ,你给机床写的那个模块搞死人了,现在公司要批量召回,我们收拾收拾东西散伙吧,公司倒闭了。
    前辈:嘿,脑子代码就是注释,代码就是文档。敏捷才是王道,两眼一抹黑,上去就是复制粘贴。接盘侠:我的九环大砍刀呢?
    。。。。。
    珍爱生命,远离软件作坊。
    q397064399
        42
    q397064399   2016-12-24 11:03:06 +08:00
    当然是有用的,你写个论坛 博客,反正就那么几张表,需求不会变化,画个 ER 图 不是没事找事么?

    稍微复杂点的项目,数十张表,各种复杂的关联关系,大哥,不画 ER 图 就上马,会出人命的,
    提前做好设计,可以降低错误率,还可以避免修改过多的代码,
    各种图的工具,无非是将软件的逻辑 提升到一个更高层次的抽象,避免代码过度耦合,
    毕竟,我们程序狗屎需要拥抱客户的变化,

    在 HeadFirst 中,一个章节 讲到了状态模式,糖果商要添加新的策略,改起来 可蛋疼了,用了 state 模式
    之后,只要添加一个状态 修改两行代码就可以搞定
    q397064399
        45
    q397064399   2016-12-24 11:05:46 +08:00
    每次有人说道 软工无用论的时候,我就会想到 这张图

    https://pic4.zhimg.com/17f531ef4aa4c99ceb7078d24600058b_b.jpg

    此处功能不要写死,将来必改
    f12998765
        46
    f12998765   2016-12-24 11:09:53 +08:00 via Android
    刚刚考完没几天,就是一通死记乱背😂
    nevin47
        47
    nevin47   2016-12-24 11:13:33 +08:00
    @q397064399 403 了
    nevin47
        48
    nevin47   2016-12-24 11:14:49 +08:00
    @kindjeff
    确实很无趣,想着之前上了四个月的 formal method 真是欲仙欲死

    但是接手了大型项目之后你会发现这些形而上学的东西实在太有用了
    kindjeff
        49
    kindjeff   2016-12-24 11:31:53 +08:00
    @nevin47 以后有用,我知道的。

    不过我解释一下我的“软件需求工程”学习的内容吧:揣摩客户的心理,有效地和用户沟通,在交流中分析出用户真正的需求。

    这以后当然可能是有用的,但是真的很无聊。因为这些都是自己以后可以慢慢学习到的东西。
    colordancer
        50
    colordancer   2016-12-24 11:41:04 +08:00
    你这就跟我当年觉得“数据结构”和“线性代数”没用一样,到最后这俩最能区别码农的层次
    当然,让你觉得没用,肯定存在学校教育方法的问题
    sammo
        51
    sammo   2016-12-24 11:55:48 +08:00
    软件工程师不是扯淡不知道, but 上网聊天的内容基本都是扯淡,因为是虚拟空间而不是正式场合。
    fulvaz
        52
    fulvaz   2016-12-24 12:50:14 +08:00
    嗯。。软件工程本质实在叫你谈客户

    但是关注点分离确实很好用呀
    lq007
        53
    lq007   2016-12-24 12:51:57 +08:00
    有用的, 实际工作的时候不只是你自己在写代码, 想快速让别的同事明白你的代码是怎么运行的、架构是怎么样的,有图就好办了, 很多时候也需要让上级知道你的实现、架构, 难道你都让同事和领导去看代码? 而且在跟领导汇报的时候也是很有用的。

    或者你想口头说, 口头表述的话,特别是比较复杂的逻辑,你确定过了很久之后你还能记得清吗?

    用例图、泳道图、状态图、时序图这些就是在特定的场景下前人对各种最能表述当前需求的图的总结。
    shuson
        54
    shuson   2016-12-24 13:04:48 +08:00
    别 bb , show me your uml 。
    nevin47
        55
    nevin47   2016-12-24 13:21:32 +08:00
    @kindjeff 看怎么去学和学校的教学安排是否合理吧

    我有幸认识一位非常优秀的 PM ,名校心理学背景的,虽然技术确实跨界了,但是她会很透彻看一个问题,同时聊天的时候非常顾及对方的反馈,让人有继续和他们不断交流的冲动

    我觉得这种人不管是做 PM 还是客户经理或者 team leader ,都可以玩转,这些能力不是慢慢学习的,而是通过系统训练、前人不断积累后人不断学习得到的。
    kalintw
        56
    kalintw   2016-12-24 13:27:19 +08:00   ❤️ 1
    软件工程 不扯淡
    国内编的软件工程书 扯淡

    让没有项目开发经验,甚至没写过、维护过多少代码的学生,直接听天书一样的学软件工程,在那里“臆想”, 这是扯淡。

    为啥国内很多 IT 公司项目管理混乱,效率低下,因为他们根本无法正确践行软件工程, 基本在扯淡。

    想小窥软件工程实践的门径,建议去外资(尤其美国)知名 IT 公司实习,完整参与一个项目。
    romennts
        57
    romennts   2016-12-24 13:37:08 +08:00
    前两天一组人通宵在赶着软件工程大作业,希望能过 Hhhh 有没有用我就不知道了,学分挺多的
    shijingshijing
        58
    shijingshijing   2016-12-24 13:44:33 +08:00
    楼主去 HP , IBM , GE , SIEMENS 实习一圈就知道了,软件工程师最高等级不写代码的,纯粹 Design , Design 就靠各种图,各种文档了。牛逼的 system design 就这样,设计好了代码自动生成,除了接口部分以及需要做 Performance Tunning 的部分。

    为什么把码农的终极形态叫 Architect , GoF 的设计模式里会把设计模式跟建筑行业类比,为什么盗梦空间、黑客帝国里面最终极的牛人是那个造梦境的小女孩,黑客帝国里面的 Oracle 和开锁匠?等你进化到了那个等级,你就知道一切本该如此了。
    shijingshijing
        59
    shijingshijing   2016-12-24 13:49:19 +08:00
    @murmur 你咋什么都知道呢~ 哈哈,你可以去看看美帝的火星工程,那个简直是 Software Enginneering 的 Best practice.
    laxapple
        60
    laxapple   2016-12-24 14:15:09 +08:00
    r#47 @nevin47 把 URL 结尾 _b 去掉
    SNOOPY963
        61
    SNOOPY963   2016-12-24 14:16:34 +08:00
    同意 56 楼观点。

    软件工程作为一种工程方法,一点不扯淡。但是作为教学任务呢?不敢恭维。

    不过需要了解,作用是陷入困境的时候能够想起它。
    SNOOPY963
        62
    SNOOPY963   2016-12-24 14:19:14 +08:00
    同样的还有 CMMI ,如果是个不靠谱的老师教学的话…… 简直了。
    Rubbly
        63
    Rubbly   2016-12-24 14:47:09 +08:00
    此处应该艾特邹老师
    Layne
        64
    Layne   2016-12-24 14:59:30 +08:00   ❤️ 3
    Layne
        65
    Layne   2016-12-24 15:01:01 +08:00
    把上图的底层原理、框架内核改为系统设计、工程管理。。 [doge]
    DearTanker
        66
    DearTanker   2016-12-24 15:05:38 +08:00
    我觉得学校教的那些真的还是有用的,工作好几年以后的看法。。
    shijingshijing
        67
    shijingshijing   2016-12-24 17:17:38 +08:00
    @Layne 神配图!!
    zhang1215
        68
    zhang1215   2016-12-24 17:31:20 +08:00
    做了大型的项目才能体会重要性
    louchenabc
        69
    louchenabc   2016-12-24 17:45:36 +08:00
    当你想不明白一件东西的时候,并不是那样东西的存在是不合理的,而是自己的思考出现了问题。
    楼主应该要自省一下。
    ghostheaven
        70
    ghostheaven   2016-12-24 18:31:58 +08:00 via Android
    @Rice 写代码屎不屎跟软件工程没啥关系
    eminemcola
        71
    eminemcola   2016-12-24 18:41:48 +08:00
    软件工程不是聪明人的工具,是蠢人的。
    luili
        72
    luili   2016-12-24 18:44:23 +08:00
    写个小模块就无所谓了 但是做个复杂点的项目 你列举的那些都非常有用
    Cu635
        73
    Cu635   2016-12-24 18:57:36 +08:00
    教材质量如何?教师水平如何?

    软件工程很重要,因为一个软件的开发是许多人的合作,或者是过去的自己和现在的自己之间的合作,不解决工程上的问题怎么办?

    毕竟,开发软件的是人而不是神仙。
    shijingshijing
        74
    shijingshijing   2016-12-24 19:20:45 +08:00
    @eminemcola 你这不是打 Linus Torvalds 的脸么?他搞出来的那个 git 不就是为了配置管理的么?
    ofblyt
        75
    ofblyt   2016-12-24 19:30:17 +08:00
    时序图,状态图是非常必要的,因为工程代码的量很大,想要熟悉每一行代码根本是不可能的,只有通过时序图状态图来了解工程。

    包括像 openstack 这种大型开源项目,研究时序图同样是了解整体运行机制的最佳方式
    KevinChan
        76
    KevinChan   2016-12-24 20:14:31 +08:00
    国内部分大学部分专业的课程设计非常搞笑
    iyangyuan
        77
    iyangyuan   2016-12-24 21:45:40 +08:00 via iPhone
    简单来说,如果连时序图都画不出,说明你根本没理解
    okmijn
        78
    okmijn   2016-12-24 23:09:38 +08:00
    不是扯淡啊,软件规模大了很有用。。。
    iAcn
        79
    iAcn   2016-12-24 23:12:05 +08:00 via Android
    表示学的是最扯淡的「计算机应用」
    sfree2005
        80
    sfree2005   2016-12-24 23:21:58 +08:00 via iPhone
    课上老师会让你们结合实际项目去学习各种图吗? 如果没有, 很难体会到其中的用处。 我工作了后 当客户提出复杂的需求时恨不得他直接给我这类设计图。 系统越复杂 ,这种需要就越加明显
    AutoRip
        81
    AutoRip   2016-12-24 23:43:33 +08:00 via Android
    @sfree2005 周五下午参加了学校一个项目交流会 然后感觉需求方是 shit 给出的东西没有一个是有完整的文档 /介绍 看样子就是想到什么有什么 有的就是有 没有的先挖坑站占着 一个表多的有三十列 总共十来张 虽然说要用于大规模的数据存储 但是根本没有合理的组织内容 也没有一个设计大纲 /结构图
    sherrybiubiubiu
        82
    sherrybiubiubiu   2016-12-24 23:57:54 +08:00 via Android
    @kindjeff 感觉你是 whut 的
    sfree2005
        83
    sfree2005   2016-12-24 23:58:52 +08:00 via iPhone
    @AutoRip 这个时候就要需要专门有个中间人做程序员和客户的桥梁了,理清各种需求,不然 hold 不住。
    wangdu2012
        84
    wangdu2012   2016-12-25 13:40:07 +08:00 via iPhone
    还在学生考试,就别谈什么有不有用了,有没有,工作过才知道。 too young too simple
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1486 人在线   最高记录 5168   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 40ms · UTC 23:38 · PVG 07:38 · LAX 16:38 · JFK 19:38
    ♥ Do have faith in what you're doing.