高级软件开发工程师师,我指的是工程师,是不是一定要会两种或以上编程语言?

推荐这篇日记的豆列
&&&&&&&&&&&&拒绝访问 | www.iteer.net | 百度云加速
请打开cookies.
此网站 (www.iteer.net) 的管理员禁止了您的访问。原因是您的访问包含了非浏览器特征(384a3cbc164f773c-ua98).
重新安装浏览器,或使用别的浏览器欢迎加入我们,一同切磋技术。 &
用户名: &&&
密 码: &
共有 3616 人关注过本帖
标题:想成为软件工程师应该学习哪些学科?顺序是什么
等 级:新手上路
&&已结贴√
&&问题点数:20&&回复次数:10&&&
想成为软件工程师应该学习哪些学科?顺序是什么
理论基础 编译原理/计算机组成原理/计算机网络/离散数学/操作系统/数据结构 语言基础 汇编/C/C++/java 这些基本就是软件工程专业的课程 千万别相信一些培训机构所说,什么速成java软件工程师之类的.去了之后都是做外包,而且你以后也只能做外包.我们老师称这样的速成的学生为coder(编码员...),不是programmer.学这些东西是急不来的,基础一定要好.我现在就后悔当初基础不够扎实...
搜索更多相关主题的帖子:
等 级:论坛游民
帖 子:48
专家分:35
,我开始也打算去那种培训班来着 后来想想短短几个月 就能比正规学校四年学的都多 我就放弃了 决定一步一步来 呵呵
等 级:新手上路
理论基础 编译原理/计算机组成原理/计算机网络/离散数学/操作系统/数据结构 语言基础 汇编/C/C++/java
这些听着有点晕!!我是自学新手,不知道该怎么学呢?
哪位大侠能给指点一下,,,本人高中学历,酷爱computer!
等 级:黑侠
帖 子:388
专家分:627
咦 我爱computer game - -!真悲剧
粗心是大敌
等 级:火箭侠
帖 子:1112
专家分:3674
计算机组成原理/理论基础 /操作系统/计算机网络/语言基础/编译原理/C/离散数学/数据结构&&汇编C++/java
大至顺序就是这样吧。
经验积累中............
等 级:青峰侠
帖 子:1108
专家分:1939
当你问这个问题的时候
就意味着你已经不可能成为软件工程师
等 级:贵宾
威 望:27
帖 子:4422
专家分:4019
想不成为 coder, 在校期间得写一个 1w 行的游戏出来。
不然无论你学过什么,出来以后连 coder 都不如。
我就是真命天子,顺我者生,逆我者死!
等 级:青峰侠
帖 子:1108
专家分:1939
不写代码 光会几本课本
工程师???
尸体的尸就可能
等 级:新手上路
帖 子:53
可以从最基础的开始,甚至首先可以学习一些数电的知识,然后是计算机体系结构,然后是操作系统,然后任何一门编程语言(推荐C和汇编);当然在这个过程中同时进行数学的学习,最主要的是线性代数,接下来是高等数学。然后可以学习算法与数据结构。然后学习数据库技术。然后可以学习实用技术了,此时可以脱离语言了,再多学个一两门语言。了解一些其它的语言。做到从网上搜到的无论什么语言的资料都能理解并转化为自己擅长的语言。
至于实用技术包含很多的,数据库和网络通讯算是实用技术的基础。然后更加使用技术包括一些具体的数据软件的使用、各种函数库和类库和组件等。
这些东西可以参考
学习顺序可以略作调整将编程语言的学习和计算机体系结构(也叫计算机组成原理)的学习并列起来;将算法和数据结构与操作系统的学习并列起来或者前置。编程语言的学习能够带来满足感。即使一开始什么都不知道,但是编写一段代码通过编译后输出了一个句子或者将一个算术题的结果计算出来了,这都是很满足的事情;因为你找到一种方控制计算机的方式,获得了一种让计算机完成你交付的工作的能力,虽然目前这中能力微不足道。但是绝对不能沉溺于这种满足感中,意思直接进行具体数据库软件,编程组件的学习,能够编写出一堆能够运行且能够完成任务的东西,这确实很爽。没有进行基础学习的程序员制造出的这种东西是不能实际应用的,仔细分析其代码会发现很多漏洞与危险。
等 级:新手上路
帖 子:53
如果要对算法进行更高层次的学习数学知识是必不可少的,尤其是遇到数值计算的问题时。
版权所有,并保留所有权利。
Powered by , Processed in 0.085028 second(s), 8 queries.
Copyright&, BCCN.NET, All Rights Reserved一个优秀的软件工程师必然是全栈工程师
我的图书馆
一个优秀的软件工程师必然是全栈工程师
  张虎,云巴 (yunba.io) 创始人兼CEO,致力于为开发者提供优质云后端服务。他有十几年的软件研发经验,精通嵌入式系统、服务器端架构、虚拟化等。张虎曾就职于华为、Oracle,他是Oracle VM 的创始团队成员。离开Oracle后,他创立了极光推送,曾任CTO,他创意并主导开发的系统为过万开发者、过亿终端用户提供推送服务。张虎长期关注业界新技术、新实践,并持续引入到团队实践。
  问:你是从什么时候开始编程的?
  高中开始用机时就对学习机产生兴趣,当时玩过一点BASIC。正式学习编程是从大学阶段开始的。
  问:关于计算机和软件的知识是通过什么渠道获得的?对于大学的计算机教育你有什么看法?
  大学学的是数学和机械方面的专业,计算机的基础知识都是靠自学。大学期间,有段时间我的所有活动不是编程就是踢球,或者是在上课时看计算机相关书籍。每当看到好玩的、好用的软件,第一时间想到的都是我自己能否也写一个类似的出来。刚开始工作时,我对操作系统痴迷到了一种几乎狂热的地步,连续花了几年时间研究了很多系统的源代码。
  我个人不太赞同目前的大学计算机教育方式,这几年面试了来自各种学校的**,普遍的感觉就是基础知识不够牢固。很多大学的计算机教育的核心就是编程,以教授C++,Java这些高级语言为主。但是,高级语言掩盖了太多的细节。虽然它确实有利于你快速编写出可用的软件、提高生产力,但在学习阶段,却不利于基础知识的累积。
  问:你是如何加入Oracle的?又是如何成为Oracle VM创始团队成员的?
  我是2006年离开华为后加入Oracle的,那时候基于Xen的虚拟化刚开始有一些影响力。Oracle在深圳和北京的一个团队开始启动开发Oracle VM。我当时对虚拟化特别感兴趣,就申请加入了团队。
  问:在Oracle工作的经历对你来说最大的收获是什么?
  在Oracle的工作经历让我意识到一个软件产品的开发不仅仅需要在技术上到位,还需要有匹配的品牌包装和市场宣传。在产品开发的过程中根据产品需求,我们需要不断地对产品的方向和定位做一些调整。好的产品除了在技术上要有创新之外,还一定要很好地为市场需求服务。
  问:作为国内第三方推送的发起者,你在创立极光推送的时候国内还没有类似的服务,请问你当时是怎么想到从这个角度开始创业的?
  我当时比较关注Android在中国的发展,也有很多朋友聊过关于推送方面的问题。当时面临的问题是Google的 C2DM(现在的GCM)在国内因为种种原因不能使用,而国内的Android厂商各做各的推送系统,对开发者来说没有一个统一的解决方案,我感觉市场需要有一个面向开发者,独立于厂商的第三方推送产品。正好,当时有个前同事,创业即将失败,账户上还有一点钱,经过沟通,我们就启动了这个产品,也就是后来的极光推送(JPush)。
  问:请问你离开极光推送的原因是什么?
  因为当初我是以加入一家现有公司的形式启动极光推送这个产品的,当时在股权结构上就有不合理的隐患。后来,公司之前的产品完全放弃,全面投入做极光推送,其结果是团队里很多原来的创始人实际没参与过极光推送。
  我作为极光推送的发起人和创始人,却对公司运作的实际控制权有限,管理团队成员之间难免会产生问题,影响了产品和公司的发展,最终促使我做出了离开的决定。
  问:在第一次创业过程中遇到过什么困难?这些经历帮助你在现在的创业路上做出了哪些不同的选择?
  极光推送可以说是我的第一次创业。现在回头看,当时对创业可以说不是很了解。我只是对产品、服务、技术有自己的认识,知道怎么去做,知道方向是什么,但是对整个创业过程,比如怎么跟团队谈股份,怎么分配大家角色,怎么跟资本沟通,却经验有限。所以常常觉得如果当时能有一个导师指引就好了,这样整个团队的发展可能会到一个更高的层面。
  经过这件事之后,我对于在公司初创、发展,以及取得成绩之后的各个阶段中的人员协调、利益保障都有了比较清楚的认识,也因此将这些经验运用到了创建和管理云巴上面。
  问:如何想到要创立云巴这个平台?现在的发展方向和最初的想法是否有一些不同?
  计算机的网络,除了计算、存储的功能以外,还有个重要的功能就是信息的交换,换句话说就是通讯。随着网络和硬件的发展,通讯逐渐被划分为人与人之间的通讯、人与机器之间的通讯,以及机器和机器之间的通讯。
  人与人之间的通讯已经有很多企业在做了,比如QQ、微信还有企业内部通讯工具这些。往往被人们忽略的是人与机器以及机器和机器之间的通讯,这比人与人之间的通讯量大得多,而且通信的方式存在较大的区别。
  机器之间发消息,做不到“他没理我,我再给他打个电话”。目前我想做的就是找到两个传统领域的结合点,从人们认为没有太大联系的两者中找到结合的机会,而不是盲目地进入已经成熟的领域。目前国内市场并没有一个真正适合的产品。
  目前公司发展的方向和当初的设定基本一致,但在宣传和市场开发的侧重点上略有调整。以前的想法还是以移动互联网App为主,结合智能硬件、物联网。经过过去一年的验证,我们发现现在很多产品实际都是以智能硬件为中心,手机上的App管理智能硬件,所以我们现在对智能硬件、物联网开发者的支持度不断加强。
  另外,价格策略我们也在不断微调中。我们希望为开发者提供起步门槛足够低,按使用量付费,体验良好,并且可靠、可持续发展的产品。
  问:云巴的用户案例中展示了掌阅、Yo、以及云巴小车的案例,这些案例是否代表了云巴提供的主要产品类型?来自各种用户的不同需求是否也对云巴的产品产生了影响?
  几个不同的案例展示了我们产品在不同场景不同需求下的使用。包括手机App、智能硬件。另外还有一些智能家居的产品,也在使用云巴服务。
  我们在跟不同的用户沟通的过程中,发现用户对服务的极低延迟、可靠性、机房的本地化部署都非常关注,这也直接影响了我们对云巴系统设计的调整,甚至是开发语言的选择。目前,我们产品绝大部分模块的集群管理、业务逻辑代码都用Erlang改写。
  问:现在云巴面临的最大挑战是什么?(新产品开发、性能提升、或者技术转型?)
  每天,不同的手机App、智能硬件、服务器通过云巴系统进行数千万的实时消息通信。如何为所有的平台提供实时、可靠、高效的服务,是云巴面临的最大挑战。
  围绕这些挑战,具体来说我们目前在攻克几个技术点,包括:高可用、高并发、极低延迟,并且支持复杂数据类型的内存数据库系统;多机房多活的部署方案。
  问:在创业之初,你们在团队的分工问题上(开发、测试、运维各司其职)走过弯路,后来用Devops的方式解决了这个问题。请问Devops是值得推荐给所有初创团队的工作方式吗?
  DevOps是开发和运维这两者的有机结合,我认为初创团队都可以尝试一下这种联合开发模式。目前的互联网创业最重要的是要快速响应市场的需求,而在传统的开发模式下技术部门和运维部门是脱节的,他们有不同的目标需求。一款产品需要满足市场上的现有需求,开发部花了很大的心思和精力,完善功能,用了很厉害的新技术,之后一股脑的丢给运维部门。这时运维部门是很慌的,可能这款优秀的产品根本就无法运行,或者他们完全不了解这个产品的新功能,这样运维部门会不断地给开发部门提出改进需求。这样一去一来等产品真正完成了,早已经过了产品上线的黄金时间。有很牛的开发者,有很牛的运维人员,更需要协调统一这两者的步调和目标,而DevOps正好提供了这个方法。
  虽然DevOps对产品开发的过程很重要,但团队更需要在意的是整个项目方向的正确性。
  问:你对很多新的语言和技术都很关注,比如Rust和Elixir,请问你个人和你的团队都是通过什么方式学习和考察新技术的?
  我们团队过去一年(2014)从零基础开始学习 Erlang,并且把我们系统大部分模块用 Erlang 改写。
  最初期,从我自己开始,调研了现有使用Erlang的产品,特别是实时高并发的产品,我阅读他们的博客和发表的文章,了解他们的心得。后来我开始写一些产品的原型,团队部分成员开始尝试解决一些小bug,慢慢开始写一些小模块。这段时间我会review所有代码,引导团队学习正确的方法。经过一段时间的积累,部分成员就慢慢能独立编码,再发展就有人能参与review代码了。
  我们对于编程语言的选择首先从稳定性、分布式,以及能够长期运行等方面去考虑,不能只一味地跟风现有最“时尚”的语言或者使用人数最多的语言,因为我们的产品需要面向海量并发服务,合适的才是最好的。
  另外,我们团队也在持续关注新的语言和平台,比如 Rust、Golang 这些最近新出现的语言。Elixir 这种在现有平台上产生、对开发者更友好的语言,我们也在尝试准备引入。
  问:在云巴的招聘要求中,对于全栈软件工程师和前端工程师的要求是最高的,请问云巴的前端工程师和全栈工程师是如何合作的?
  云巴的全栈工程师主要负责对后端功能的实现,后端系统的成熟度直接影响整个产品的成熟度。
  前端工程师的工作目标是把我们的产品优雅地呈现给我们的用户。视觉、交互体验,直接影响用户对我们产品的喜好,所以我们也非常重视。
  在我们团队内部,我们经常说前端就是我们系统的一个 App,后端的工作就是提供友好的接口,帮助这个App达到良好的用户体验。
  问:有一种流行的说法是掌握了Node.js的前端工程师就是全栈工程师,而云巴的全栈工程师似乎更像是传统意义上的后端工程师。请问对你来说,全栈工程师意味着什么?
  我们定义的全栈工程师,更强调对一个完整系统的各个环节原理的理解,包括操作系统、网络、编译系统,还包括问题定位、性能测量、性能调优等方面的动手能力。而不像我们经常看到的传统后端工程师,往往强调对某种特定语言的掌握。我们的全栈工程师实际上都掌握多种语言,以满足不同方向上的工作需要。
  从某种意义上来说,一个优秀的软件工程师必然是一个全栈工程师。在一个以技术为导向的公司,顶级工程师的能力直接决定了整个公司的能力。
  问:你喜欢“玩”操作系统和各种编程语言,你在招人的时候也会以这样的标准来要求程序员吗?
  刚开始工作时,我连续花了几年的时间研究 Linux Kernal、uCOS、Nucleus、vxWorks 等系统的源代码,尝试几乎所有的编程语言,包括汇编在内。
  “玩”这些东西除了是我自己的兴趣外,也是工作需要。但是不一定每个人都有机会在工作中接触到这些东西,所以我们对工程师也没有这样的硬性要求。
  但是,就像任何代码都运行在 CPU 上一样,几乎任何软件也都是依赖操作系统的,软件开发工程师对操作系统的深入理解,几乎是成为一个高手必须具备的能力。另外,学习操作系统的编写,也是提升能力的一个很有效的方法。
  除了很底层的几个编程语言外,几乎所有的编程语言都是为特定领域发明的,学习一个领域的新语言,实际是学习了一个新的思维方式,可以帮助工程师从各个不同的角度思考问题。所以我个人觉得多花一点时间去多了解一门编程语言是很值得的。
TA的最新馆藏[转]&[转]&[转]&[转]&[转]&[转]&
喜欢该文的人也喜欢评论:优秀软件开发工程师所具有的几点特质,西安建网站,西安软件公司
客服热线:,
首页>>文章评论
优秀软件开发工程师所具有的几点特质
[内容摘要]扎实的基本功是成为优秀软件开发工程师的前提条件,软件开发工程师的素质即是否具备扎实的基础。通常基本功在编程软件开发环节体现在两个方面:一是编程语言,二是数据结构和算法。只有注重质量的软件开发工程师,才能写出鲁棒稳定的大型软件。在软件开发过程....
评论:西安弈聪网站上发布的关于网站优化的知识很实用,为我学习网站优化提供了很多帮助,谢谢西安弈聪。---时间:
评论:网站上发布的关于网站建设,网站设计的知识很好,为我建网站提供了很多帮助,顶下。---时间:
发表评论: 您的名称: 您的IP:49.76.95.204
1、西安弈聪网站内容中凡注明“来源:XXX(非西安弈聪网站)”的作品,转载自其它媒体,转载目的在于传递更多信息,其中涉及的网站建设,网站优化,百度关键词优化,西安软件开发等技术细节并不代表本站赞同支持其观点,并不对其真实性负责。对于署名“西安弈聪”的作品系本站版权所有,任何人转载请署名来源,否则西安弈聪将追究其相关法律责任。
2、本站内容中未声明为“原创”的内容可能源自其它网站,但并不代表本站支持其观点,对此带来的法律纠纷及其它责任与我方无关。如果此内容侵犯了您的权益,请联系我方进行删除。
搜索引擎长尾关键词
弈聪软件各地分公司及合作伙伴>>
版权所有:西安弈聪信息技术有限公司 公司地址:陕西西安曲江会展国际F座15层 Email::710100
联系电话:, 信产部网站备案:陕ICP备号 法律顾问:信诚律师事务所(张宏彬律师) 当前在线1784人

我要回帖

更多关于 嵌入式软件开发工程师 的文章

 

随机推荐