构建软件工程技能的资源

Bob*_*way 5 architecture

如果这个问题对于网站来说过于开放,请道歉,但它似乎是最好的问题.

我是一名自学成才的程序员,在他的教育背景下几乎没有数学,并且在十年的职业生涯中,他从前端的Web脚本和Web开发慢慢地转向中级和数据级软件工程.因此,我的知识和经验方面有些缺乏.

在我最近与我的经理进行了一次审核之后,有人告诉我,克服这些差距就是我和升级到高级工程师角色之间的所有差距.然而,为了达到这个目的,我将不得不为自己找到一种结构化的学习方法,并证明我已经接受了我需要知道的东西.

我个人认为我的弱点如下.请注意,很多情况下的问题并不是我从技术上理解这些事情是如何工作的,而是我不知道应用它们在哪里或不适合它们.例如,我知道接口是什么,从技术上讲,它知道它做了什么,但是我很难区分什么时候使用接口,比如说,从一个基类继承的一组相关的OO类.因此,对于良好的软件设计而言,它比对技术的无知更为无知 - 我很难理解,消化和处理松耦合系统等问题.

  • 接口
  • 代表
  • 设计模式
  • 网络架构和协议

此外,我从来没有做过一些像编译器这样的低级东西.我有时想知道,如果我对编写代码的能力有很大的不同,那么如果我对这种材料有了更好的了解,那么代码不仅有效而且优化得很好.

有时候担心我无法识别我的技能组合中的弱点,因为我不知道如何提出正确的问题.所以,希望我能正确地解决问题,我希望你的建议如下:

  • 从我目前缺乏的声音是否还有其他任何我应该考虑的主题?
  • 学习这些材料的一些好资源在哪里?
  • 是否有任何结构化,自学成才的课程,我可以通过相关的工作?遗憾的是,我没有时间进行正式的资格认证.

干杯,马特

LBa*_*ret 8

不久前我是一名自学成才的编码员,所以我可以与你的位置联系起来.从那时起,我已经发运了10百万个LOC应用程序,因此我不得不开发识别能力.3件事帮助我获得软件工程:书籍,代码和人.

首先,良好的工程学是关于美丽,优雅设计的美丽,高效的机械主义.你需要培养美感,做到这一点,你需要看到并讨论它.

SICP,Refactoring,Head First Design PatternsBeautiful Code等书籍都是关于美丽/更好的代码.大多数时候,他们不是关于语言本身(或关于外来语言).代码完成也很有趣但不知何故更低级别.

在线阅读代码也是教育您品味的好方法.我没有想到的例子,但这是一个常见的问题,你应该很容易找到一些想法.此外,构建一个雄心勃勃的应用程序(游戏,3D建模器,Web服务器,数据库)是一个很好的实践:你可能会重做2到3次以获得更好的架构.

人也很重要.如果您找到一些热心的软件架构师与您讨论,您将能够面对您对什么是美的看法.几年前,我还在消化我与经理的一些讨论.

这种"启蒙"是一个持续的过程,所以不要气馁,只要向前迈进.有一天,你会看到丑陋的代码,有一个明显的替代实现,你可以讨论并客观地比较原始代码.