精华内容
下载资源
问答
  • 今天我们怎样学软件技术,怎样教软件课程? 分类: 软件人生 2011-10-23 23:46 98人阅读 评论(0) 收藏 举报   今天我们怎样学软件技术,怎样教软件课程? 分类: 计算机教育 我著作的相关资源...
     
    

    今天我们怎样学软件技术,怎样教软件课程?

    分类: 软件人生 98人阅读 评论(0) 收藏 举报
     

    今天我们怎样学软件技术,怎样教软件课程?

    分类: 计算机教育 我著作的相关资源 3680人阅读 评论(18) 收藏 举报
     
     今天我们怎样学软件技术,怎样教软件课程?
     
    ==================
    注:
           本文是我这几年以来针对软件技术学习与教学方式所思索问题的一个阶段性总结,写出来与朋友们交流。
                                                         金旭亮
                                                  2008-5-9
    ===============================
             自从人类社会进入信息时代,知识总量急剧膨胀,软件技术更是进入了一个快速增长的新阶段,新的理论不断提出,新的技术不断出现,让软件从业者无不感到巨大的竞争压力。就拿微软技术而言,老的Win 32还没弄明白,2002年就蹦出了个.NET,桌面开发刚熟悉了Windows Form,2007年又变成了WPF,Web开发更是变化巨大,先是老的ASP退出江湖,ASP.NET取而代之,没多久又加上了AJAX,晃一晃眼Silverlight又在那儿向你招手……,从2002年发布.NET 1.0开始,5年左右的时间,.NET版本就从1.0一路蹦到3.5,原有的许多技术或被淘汰或被更新,短短几年时间,微软技术的各个领域几乎全都洗了一轮牌。许多人都感叹,老的东西还未掌握,新的东西又出来了!然而,“人在江湖,身不由已”,既要在IT业里混,就得认命。面对着这一切的挑战,该怎么办?
     
             也许经验丰富的你会坚持“以不变应万变”的原则,结果却可能发现自己成了一只迟钝的鸵鸟,知识老化,面临着后辈强劲的冲击。
     
             也许你不断地追踪最新技术的进展,但却疲于奔命,最终发现自己不过是一株“技术风暴”中的墙头草,永远跟在别人屁股后头跑,根本就看不到超越的希望。
     
             我是一名IT教育工作者,有过十多年的软件技术自学经历,也有五年多的从教生涯,承担着向青年学生讲授现代软件开发技术的职责,这么些年来,我在高校中先后讲授过“Java/C++程序设计”、“面向对象分析与设计”、“.NET技术基础”几门与软件开发技术密切相关的课程,接触到了许多学生。由于工作的缘故,我一直在琢磨着这样两个问题:软件技术应该怎样学,又应该怎样教?
     
    学习是我的骨头!
     
             著名作家王蒙[1]在其自述——《我的人生哲学》一书中说:“我是学生,学习是我的骨头,是人生的‘第一智慧’与‘第一本源’,思想美丽,学习着也是美丽的”。在王蒙先生看来,人生就是一个不断学习与成长的过程,在这个漫长的过程中,人应该通过不断的学习而完善自身,获得智慧。这应该是学习的本来面目与最终目的。
     
             如果能从这个角度来看待学习,学习就不是一个负担了。然而,现实中我们大都是为了“谋生”而学习,说穿了,软件技术不过是实现个人攫取“名”和“利”的一种手段罢了,我怀疑,有多少人真能达到王蒙先生的那种境界?
     
             当前浮燥之风弥漫社会,诺大的中国,很难有人能静下心来钻研技术和做点研究。我漫步于大学校园,曾见过“XXXXX让你10天成为.NET 程序员!”的大横幅在风中飘扬,我不禁苦笑,如果10天就能培养出一名.NET程序员,那象我这样愚笨之人,居然学了那么多年还无所成,岂不应该赶快找块豆腐一头撞死?
     
             因急功近利而想速成,是软件技术学习的大敌。
     
    务于精熟与观其大略
     
             南宋人郑樵所著之《诸葛亮传》说:“初,亮在荆州,与元直及汝南孟公威、颖川石广元游学,三人务于精熟,而亮独观其大略。”
     
             请注意诸葛亮与元直等三人的学习方法的重大差别。元直等“务于精熟”的学习方法,其实正是当前我国高校中所占据绝对主导地位的思想,在这种主导思想下,许多课程的教学安排是讲授得细之又细,比如计算机系所学之高等数学一般要讲两个学期,而象北大所编之本科生教材《离散数学教程》,更是按照3个学期共220学时设计的。我怀疑这种门门课都深挖细掘的教学方式,在现在这个知识爆炸的时代,是不是也应该有所调整?要知道,一个学生在学校里使用的学习方法,将会不自觉地跟随着他很多年,而这种学习习惯,恐怕难以应对软件技术的现实,问一下:你现在有多少的时间和精力对各种技术(哪怕是很重要的主流技术)进行“深挖细掘”?
     
             是否在软件技术的学习上和教学上都有所调整,走一走“观其大略”的路子?
     
    IT作者,请把厚书写薄!
     
             既要学习,就要选择好书。请到书店看看,有关软件开发的书往往占据科技书店的半壁江山。国内计算机图书市场前几年是泥沙俱下,读者在网上怨声载道。这几年好些了,各大出版社或影印或翻译或原创,都出版了许多有一定质量的书籍,但我感觉好书仍然不多。
     
             现在不少的技术书籍,一本比一本厚,装帧越来越精美,相应地价格也涨船高,但其中的“干货”却很少。如果给书籍减减肥,不仅节约读者金钱,更节约了读者宝贵的时间和精力。
     
             我看过不少的书籍,其实要讲的东西就那么多,浓缩一下,许多篇幅可以压缩三分之二还多。不要将书籍变成满是图片的“操作手册”,或整页都是代码的程序清单。
     
             我个人感觉,一本真正有价值的技术书籍,要不能引发读者深入的思索,要不就能帮助读者形成对某个软件技术领域的全局观,在此全局观下去学习具体的编程技术,就能事半而功倍。
     
             著名数学家华罗庚先生曾有言:学习数学要先把书读厚,再把书读薄。移到软件技术书籍这一领域,我觉得把书写厚很容易,而要把厚书写薄很难。
     
             期望能看到有质量的“薄书”来帮助我们高效地学习软件技术!
     
    互联网带来的“见木不见林”学习困境
     
             软件技术是个庞大的体系,任何一个软件学习者都很容易陷入“见木不见林”的困境,而互联网如果应用不当,会加剧陷入这种困境的可能性。
     
             许多人非常推崇搜索引擎对学习的重要性,有问题“谷歌”、“百度”一下,一切就有答案了。因此,现在有不少软件工程师(尤其是初学者)高度依赖于互联网来帮助解决软件开发中遇到的实际问题,这种方式的确非常有效,值得大力推崇,但要知道,“万应灵丹”也有不灵的时候,有不少困难的问题,在互联网上根本就找不到有效的解决方案。
     
             另外,通过互联网学习软件技术有其难以克服的弊端,可以简单分析一下:
     
             第一:通过互联网得到的知识往往正确与错误并存,这就要求具备较强的鉴别与判断能力的,不是每个人都天然地具备这种素质的。
     
             第二:通过互联网得到的知识往往是是零散的,而且信息量过于庞大,要由这些碎片“拼”出某个技术领域完整的知识框架,在许多情况下非常困难。
     
             我感觉,对软件技术的学习,应该是先有一个某个技术领域的全局观,然后再去深入钻研某个技术子领域,即“先见林后见木”。而要想形成全局观,阅读经典的技术书籍与综述文章,听相关领域专家的访谈或其讲授的各种课程,以及参加各种技术讲座,是一个有效的方法。在形成对技术的全局观上,通过互联网搜索来的鱼龙混杂的知识有可能是帮了倒忙。
     
             因此,软件技术学习者要对互联网有正确的认识,才能尽其利而避其弊。
     
    理性知识感性掌握
     
             前面说到学习软件技术要“先见林后见木”,要想“见林”,必须高度注重计算机科学理论的学习。因为理论往往是现实的概括,是认识的深化,是“见林”重要手段,在理论的指导下学习技术和进行实践,往往“事半而功倍”。
     
             然而,计算机科学有许多理论是比较抽象难懂的,怎么学习它是一个值得深入探讨的问题。有这么一种观点很流行:
     
           不要以为在大学里学习的许多抽象复杂的理论课没有用,要好好地认真学习,别去问它们有什么用,等你们工作以后,就会慢慢地体会到这些知识的作用了。
     
             几乎每个老师都这么说,学生对此也不敢有任何的怀疑,难道这有什么错吗?
     
             然而,我却渐渐地怀疑起这个观点来。因为如果不明了某个计算机科学理论的实际背景,有可能把握住它的精髓吗?我看不可能,而且这种观点有些情况下还成了教师在教学上不负责任的“挡箭牌”。据我所知,在当前教育方式下,计算机专业学生一个学期往往要学它七八门专业课,其中还有五六门是闭卷考试,根本就没有足够的时间去消化与吸收知识,煮成夹生饭是正常,煮熟了才是怪事。
     
             但我并不是反对认真学习软件科学理论,而只是强调软件科学理论的教学与学习方式应有所转变,要遵循“理性知识感性掌握”的基本原则。
     
             为什么会这么说?
     
             因为抽象的理性的知识要转化为具体的感性的形式后才能为人所掌握
     
             这个不是什么新观点。就拿公认为抽象难学的数学来说,多位杰出的数学家就说过:只有把抽象的数学定理形象化,才算是真懂。当代数学家徐利治[2]曾多次撰文强调中国数学教育要改革,要培养学生的数学直觉,要给学生讲授数学史,要锻炼右脑的形象思维,要教会学生运用科学归纳法而不是只讲授演绎法,能从特殊例子中发现一般性的东西……。
     
             这些观点对于我们学习也比较抽象的软件理论非常有帮助和启发。比如不动手做一个小的编译器出来,就很难对相关编译理论有深入的理解。又如在项目中需要为某个实际问题建立模型,设计算法并评估解决方案时,才可能会体会到算法理论的作用。
     
             在归纳的基础上演绎,在感性的基础上抽象,是行之有效的学习方法。
     
             脱离理论的历史渊源与现实背景去学习理论,以考试为目的对理论死记硬背和生搬硬套,不可能真正掌握理论。
     
    现有软件教学方式的改革
     
             基于对软件技术学习与教学相关问题的思索,我自己进行了一些实践。从2003年开始,在北京理工大学为本科生开设了“.NET软件技术基础”通识选修课(面向全校各专业的学生),我在教学中渗透了以下的原则:
     
             (1)兴趣是学习的第一动力。我自行设计和收集了可现场演示的大量软件实例(比如将数学与软件技术结合起来创建出绚美的计算机图形),向学生展示“现代软件技术能做这么多有趣的事情”,以此来激发他们对软件开发的兴趣。
     
             (2)理性知识感性掌握。通过现场设计并完成一个小的软件实例(比如设计一个小程序自动生成数学练习题,给小学生练习四则运算),向学生形象地展示出软件开发的典型过程,从而帮助他们直观地理解软件工程理论。我觉得课堂讲授的重点是帮助学生形成对某个技术领域的感性认识,并指出如何在感性认识的基础上形成技术全局观和上升为理性知识的途径,而将理性认识的形成留给学生自己去完成,不需要在课堂上详细讲授示例中的每个技术细节与编程技巧。
     
             (3)先见林后见木。比如在介绍ADO.NET时,先根据自己的理解将其整个技术的“骨架”抽取出来,点出其中的关键点,然后再分析具体的实例。我觉得一名软件技术教师应该是一名导游,带着学生在“软件王国”里“旅游”,告诉他们这儿有什么风景,那个又有什么景观,整个“技术森林”是什么样的,大致分为哪几大块区域,每一块森林子区域中又有哪几种具体的“技术之树”,要先用“望远镜”去了解“技术森林”的全貌,然后再用“放大镜”去研究具体的“技术之树”……。
     
             (4)技术学习与社会现实相结合。《.NET软件技术基础》共32学时,讲10次课,每次课我都带领学生到某个 “.NET技术景点”去“旅游”,展示其技术发展的趋势和脉络,而最后一次课更是抛开具体的技术专讲“故事”——介绍IT业的风云变幻,以开拓学生的视野。
     
             我这门课几乎每学期都能挖掘出几名好学生,而且成功激发了有些学生原先潜在着的对软件开发的兴趣,执续努力两到三年自学软件技术,在本科毕业时跨专业直接报考计算机专业研究生,或者在毕业时进入IT行业的知名企业。
     
             在每学期针对每门课程进行的学生评教中,我这门课得分从未低过85,而在最近一次2007~2008学年第二学期的学生评教中,这门课程更得到了96.9的平均分,为我从教5年以来的最高分。
     
             从教学实践上看,“观其大略”的“见木又见林”,而以“见林”为主的教学原则是有一定效果的。我相信这对于软件技术的自学者也有一定的借鉴意义。
     
    软件技术学习与教育进入个性化时代
     
             互联网的普及给传统的软件学习与教育方式以巨大的冲击,我个人感觉基于互联网的在线教育可能是整个变革的突破口。软件技术学习与教育将进入一个个性化的新时代。
     
             可以看看当前互联网软件技术学习与教育的一些现状:
     
             现在有多家IT培训机构在网上招生,诸如网易等各大网站也纷纷提供在线教育的功能。拿微软公司为例,在MSDN上介绍其最新技术的Web Cast拥有很高的下载量。互联网上还可以搜索到许多集声音、动画和视频为一体的教学课件(比如众多的Flash格式的电脑教程),其下载量惊人,甚至于许多传统的软件技术书籍,现在也要在配书光盘中附上相关的视频教学内容。这一切都说明人们通过互联网以多媒体的方式来学习新知识已成为一种现实。
     
             虽然现在基于互联网的在线教育有了很大的发展,但我个人认为整个还处于初期发展阶段,比如现有Flash形式提供的课件虽然很好,但仍是人与机器间的“单向沟通”,无法实现学习者间的相互交流。这可以类比于早期的单机版电脑游戏,虽然单机版电脑游戏精品很多,但最终还是由玩家可以互动与交流的网络游戏主导了电脑游戏产业。
     
             另一方面,网上在线教育与传统的教育模式相比有着自己的独特的优点和缺点,“老革命遇见了新问题”,传统的教育理论与方法必须要有新的突破和思路。
     
             计算机技术的飞速进步和IT行业竞争的空前激烈,使得不断学习与提高自己的能力和素质成为每一个IT人的迫切需求,这其中隐藏着巨大的机遇。
     
             我很关注着网络教育的发展,从去年下半年开始,我与CSDN合作共同在ITCAST教育平台(http://www.itcast.net)上进行网络在线教育实践,试图搭建一个基于互联网的虚拟学习社区,通过一系列的循序渐进的系列课程,帮助学员掌握.NET软件开发技术,降低其学习成本,提高其学习效率。第一个.NET入门教学系列于去年底上线以后,先后举办了几期试验班,出乎意料之外的是,学员90%以上是在职IT从业人员而非在校学生,这也从一个侧面说明了 “终身学习”时代的确已经开始。从实验班得到的数据上看,如果课程设计合理,在线学习的学员由于目的明确,主动性强,对知识与技能的掌握程度并不比传统的面对面授课低多少。而且线上教育成本低廉,方式灵活,学员在学习时间和学习内容上可以各取所需,拥有很大的自主权,则是传统教育方式所无法比拟的。另一方面,从教学组织方式上看,线上教育可以随时跟进知识和技术的最新进展,并且可以通过互联网为学习者搭建一个跨越地区界限的平等的学习交流平台,具有独特的优势。
     
             我认为在线教育是一个方兴未艾的新的教育领域,其发展前景广阔。基于互联网在线教育的发展,对于打破我国现有教育资源分配的垄断与不平衡状态,提升全民族的教育水平有着巨大的推动。一流强国必有一流的教育,而一流的教育将培养出大批高素质的国民,这对我国发展成为文明和民主的现代化国家起着决定性的作用,百年大计,教育为本!


    [1] 王蒙,现代著名作家,主要著作有《青春万岁》、《活动变人形》等,1958年的“右派”,1963年被“发配”新疆逾16年,人生境遇坎坷,1986至1989年任文化部长,著作等身。
    [2] 徐利治,当代数学家,西南联大毕业,师从华罗庚等数学大师,其重要成果有“徐氏逼近”、“徐氏渐近公式”,“Gould-Hsu反演公式”等。
    上一篇:金旭亮著作斟误表及未来写作计划 下一篇:App_Code中的类如何访问Cache?
    上一篇:浅谈实践在计算机专业本科教学中的作用 下一篇:乔布斯背后的苹果九虎将:才华横溢又极端忠诚
    展开全文
  • 软件技术基础学习心得

    千次阅读 2007-11-23 16:28:00
    我是一个软件工程师的初学者,刚刚软件技术基础,在此谈一下疑问和心得。 首先,我有一个疑问,软件工程师主要是干什么的。其中有一个老师曾说,把软件工程师下来就有两个字,“网站”做网站。我不懂,软件跟...

        我是一个软件工程师的初学者,刚刚学完软件技术基础,在此谈一下疑问和心得。  

        首先,我有一个疑问,软件工程师主要是干什么的。其中有一个老师曾说,把软件工程师学下来就有两个字,“网站”做网站。我不懂,软件跟网络没有多大关联吧?

        以下是我学习过程中的总结:

        1、客户端/服务器模型中,需要安装特定的软件,而浏览器/服务器模型不需要,只要客户端的计算机上有IE就可以了。

        2、学了几个DOS命令,我在试MOVE的过程中,发现不能将整个文件夹移动到别的盘上,那用什么命令才可以呢?

        3、局域网的传输速度最快,有线电视网络就是城域网。

        4、网络中有好多协议。TCP/IP 是个协议组,其中包括UDP(数据报文协议)等。我在Iternet 协议(TCP/IP)忏悔里看到这个DNS(域名服务)。但是不知道DSN服务器地址是干什么用的。

        5、组播地址,组播的地址是保留的D类地址从224.0.0.0—239.255.255.255,而且一些地址有特定的用处如,224.0.0.0—244.0.0.255只能用于局域网中路由器是不会转发的,并且224.0.0.1是所有主机的地址,224.0.0.2所有路由器的地址,224.0.0.5所有ospf路由器的地址,224.0.13事PIMv2路由器的地址;239.0.0.0—239.255.255.255是私有地址(如192.168.x..x);224.0.1.0—238.255.255.255可以用与Internet上的。

    展开全文
  • 我是大一学生,学软件技术专业,蓝桥杯大赛有没有作用的,对以后的应聘有没有用处,企业看着的是什么,对应届生来说
  •  学习软件技术的2、3点 热度 6已有 1063 次阅读 2012-2-25 20:09|个人分类:随笔|系统分类:IT技术|关键词:技术 软件技术 Linux 十多年前一块探索Linux技术的张波同学,如今虽不在技术一线,但

    http://home.lupaworld.com/home-space-uid-26540-do-blog-id-249050.html


     学习软件技术的2、3点

    热度 6已有 1063 次阅读 2012-2-25 20:09|个人分类:随笔|系统分类:IT技术|关键词:技术 软件技术 Linux

    十多年前一块探索Linux技术的张波同学,如今虽不在技术一线,但他曾经的技术经历以及表述这种经历的有趣方式,给后来者以启发:
    ————————————————————————————————————————————-

    学习软件技术的23

    张波

          很久很久没有接触开源社区了,也很久很久没有接触技术了,自从自废武功转作商务以后,就再也不好意思在开源论坛吱声了;木有办法,技术发展太快,现在随便哪个小师弟提出个技术问题就能秒杀我,所以在技术上与大家探讨,那必然是起于自我膨胀,而终于自取其辱了,显然非智者所为也!(郑重声明,这里没有任何对师妹技术的藐视,并非师妹技术赶不上师弟,而是大丈夫有所不为也!即便是使出顾左右而言他这种高端培训技巧,本人也不能让自己在师妹面前被秒杀,必须的!)

        只是长久以来,每每看到陈老师始终兢兢业业的教书育人、康华等师兄弟已然在开源云计算等技术领域挥斥方遒,自然为其坚持和激情所感,也总想接着做点什么!

        然而,世界上独独就怕“想”这个字;不对,应该是世界上就怕独独的一个“想”字,光想不练,时光荏苒,你们懂的,。。。说起来是笑谈,然而却是颠扑不破的真理:没有想法不见得是坏事,所谓脑残人安乐;光想不练、始终无丝毫实际进展才会让人悲叹蹉跎——我们的思想曾经那么深远,比乔布斯都早预感到智能移动终端的颠覆式发展,怎奈他生的早、动得快。。。

        可叹我早在大学阶段就明白了这个真理,然而却每每不能理论联系实际,在漫长的岁月里不停的用细腻的思考代替鲁莽的探索,反复犯错栽跟头,在摔进的同一条河里都已经学会游泳了。今天,我要郑重的告诫大家:光练不想傻把式,光想不练假把式!这篇文章就是行动的起点!

        这里我想和大家分享的是学习计算机软件技术、特别是偏重于操作系统这个领域的指导思想和学习路径。作为一个撂荒者技术没啥好说的了,我不如大家远矣;但是总结技术学习过程的经验教训,特别是教训,我还是有些心得的。况且,作为一个智力中等程度的人,我的经验可能比很多大牛的经验更有些参考价值。我姑且说之,您姑且听之,不要认为是说教的老生常谈即好。

    1、          没有实践,就没有发言权。

    我过去在面对操作系统方向的面试者时,常常问到一个问题:“你用的内核调试器是什么?”答案不一,总结起来往往有:

    “内核调试器是干什么用的?”

    ——恭喜您,您是一个没有想法的人,祝您安乐!

    Visual开发环境,gccg++

    ——你可以不诚实,但是你不能怀疑我也不诚实,既然问了内核调试器,我肯定跟度娘问过答案,胡说八道可不行。

    “我用得是KBD/Windbg

       ——你靠谱,我随意!是的,我会开始随意问些问题了,symbols,栈指针,prototype,断点设置的技巧,这些都是不错的方向,因为我相信你和我是同一类人,咱们有共同语言。

       很难想象一个学习操作系统或体系结构,开发驱动或模块的程序员不会使用内核调试器,就像写C语言的人不懂C编译器一样。不用调试器去挑战内核,难道你是在把3.2.7的代码当14行诗在读吗,韵律感怎么样?

       在学习软件技术的过程中,实践操作重过一切,代码量上不去,一切都是浮沙建塔。很难想象一个代码量低于10000行的程序员会对模块化编程的用处心有戚戚焉。如果连模块化编程都弄不明白是为什么,那又谈什么系统设计,面向对象设计,谈什么软件工程呢?

       无数的教科书里都讲了模块化编程的好处,然而,请相信我,纸上得来终觉浅,在没有达到一定的代码量之前,你只是知道它能带来这个好处而已。那么,什么时候你开始懂得模块化编程了呢?就是你在编程序的时候突然想把程序扔到一边,拼命的去找专门讲模块化编程原理和技巧的书籍时,你就将入门了。

       所有的理论都是用来指导实践的,模块化编程理论是个老技术,但是它却是面向对象技术、设计模式的基石。一样的道理,计算机软件技术大部分都得通过实践去驾驭,学过C++、读过四人帮不代表你掌握了这些技术,只有当你学以致用——想用、需要用、不得不用——的时候,你才能开始掌握一门技术。

       此外,你还要明白,编程的实践是会带来切切实实的好处的。参加工作之后码代码换钱天经地义,我说的是大学时候无偿写代码的事。那时曾经用汇编帮两个朋友完成过大作业,一个数学系的,一个学通信的。直到现在,我需要研究一些算法的时候总会有个教高数的教授帮我抗雷,需要一个好的手机号码的时候总会有个电信公司经理帮我打折。我也知道,以上案例看起来不像很有说服力的样子,看我的杀手锏——我曾经帮我的一个学通信的师妹完成了她毕业设计中代码的那一部分。现在,我们家宝宝的衣食住行都是她帮我打理的。

      牢记,黄金屋和颜如玉,对学软件的人来说,都是码出来的!码代码需要的就是时间,你还在浪费时间吗?

    题外:

      还遇到过如下回答:

      “我用Windbg调试Vmware下面的虚拟机,发现过Windows2003bug,并帮助微软写了patch

       ——拜托不要这么强悍好不好,连代码都没有就能搞定bug,让我们这些整天做codereading的人情何以堪啊?“请问您解决的bug相关的KB文章号码是什么?”必须和你死磕了。

        夹点儿私货,面试技巧:面试时要信奉万言万当莫如一缄。除非你技术强悍到能够征服他,否则不要和面试官在他擅长的方向上展开技术争论,而是要引导面试官在他的领域里契阔谈宴。对,就是想方设法让他滔滔不绝讲自己的成功经历,而你在旁边呈钦佩状,不时击掌称善,弄得他引你为知己、恨不得请你吃饭那种。据科学统计,武侠和玄幻小说里被高人抢着收徒弟的大部分主人公都具备这样的素质和能力,不可不借鉴啊。

        当然,面试的过程你还要证明你至少会说汉语,能够和团队成员沟通,所以不能一直装聋作哑。但是,一定要主意,自己说的时候殚精竭虑的引导话题到你专长的领域里去发挥。知己知彼,扬长避短。

       以上为高端面试技巧,适用于具有一定面试经验的面试者针对较为高端的研发职位时使用,应届本科和硕士毕业生慎用,为什么?你知道什么时候该击掌称善吗?你有擅长的方向吗?英文引导这个单词能拼写出来吗?而且针对新人的面试,企业一般重点考察的是IQEQpotential,高端技巧往往用不上。不过,只有了解这一点才可以明白正确的方向,推动深层次面试能力的全面发展。

    2、          在一点上突破,境界高才是真得高。

        有些同学懂十几种语言,能用二十多种不同的方式打印“HelloWorld!”,让人肃然起敬,赞叹不已“发烧友发烧到这个程度,非常人所能及也!”然而,这个是发烧友才做的事情,专业人士即便能做,也不会拿这个当什么光彩的事。毕竟,打印“Hello World”这种事情层次太低了。

       实际上,虽然我们很少承认自己在学习打印“HelloWorld”这件事,但实际上很可能并没有免俗。不是吗?请看你的简历,看着上面罗列的语言类技能,精通的至少2种,熟练的不下5,6个吧?问问自己吧,用“精通”的语言,不看参考手册,你能实现一个平衡二叉树吗?用“熟练”的语言,除了按下按钮弹出“Hello World”窗口,你还能做其它的事情吗?你看,被揭穿了吧?必须的啊同胞们,我们这些人当初简历就是这么写的啊,这么多年过去了,看你们还在重复我们当年的低水平技巧,不由得让人感慨,我们国家培养创造性人才的工作确实仍旧任重而道远啊。

        我过去的简历上面曾经有说自己精通VisualC++,于是进微软面试的时候,考官说你精通VC++啊,那我们就看看C++本身是用哪几类方式实现虚函数的重载的,VC下面的实现是对什么重要因素妥协的结果?虽然当时(2004年)我已经研究过侯捷老师翻译的《Inside TheC++ Object Model》,但是,实践还远远不够啊,代码量太小,离回答这个问题所需的技术水平仍有差距。我只能把其中自己懂得的、大面而不会错的东西都说出来了,接起来就虚心和考官探讨起他在这个领域的最新研究进展,并不时的击掌称善。。。。。。接下来,你懂的,我过了微软面试后第一件事情就是删了简历里面精通C++这个项目。

        我之所以反复的提到一些面试方面的内容,是因为面试是在我们这个行业里对一个人技术水平评价最直观的一种过程。技术面试官的最主要职责就是评价你的技术水平。你技术到底行不行,好的公司第一轮技术面试一般就会有个结论了。对于应届毕业的大学生和研究生,好的公司往往会考虑你的IQ,EQ和潜力,考虑你未来能做什么多于你现在马上能干什么。换句话说,我如果发现你C的水平能傲视同侪的话,那么我相信只要需要并给你时间,你学习C++未来能达到的水平也会非常不错。

        所以,不要想当然的认为多会门语言多条路,想要毕业的时候有个更好的起点,我觉得还是应该集中精力,让自己的技术水平提高到一定的境界。其实,学软件技术就像挖井一样,必须持续在一个方向上努力深入,直到打出水来。今天换个语言,明天变个方向,你就是在反复在不同的位置给自己挖坑。不出水不是坑是什么,难道能称之为井?

        其它技术领域如何深入学习我也并不明了,有关我在操作系统这个方向上学习的过程,包括历程、所需的前置技术能力、需要重点突破的领域等,我会找时间另外形成一个文档,希望到时候能跟师弟师妹们一起交流。

       题外话,上面的故事告诉我们一个道理, 夜路走长了总是会碰到鬼的,像PS照片一样PS简历,面试官就会像BS苍蝇一样BS你。面试技巧能让你发挥自己120%的水平,可是如果你本来的水平是0,那么,技巧就让它还归于技巧吧,您还是您!

    3、          埋头赶路,也要抬头看方向

        我一直在强调学习软件技术必须要加强实践,掌握软件领域的技术,干什么都没有编代码来的实在。然而,就像世界上其它任何需要付出默默努力的事情一样,总有些人会事半功倍,有些人会事倍功半。正练九阴真经郭靖这样IQ清零的小伙子也能成为有为青年,逆练九阴真经欧阳锋这样的有为青年也能IQ清零。

        我在大学时代曾经淘到过一件文物,是我这辈子目前为止捡漏最大的一笔收获,回报率逆天了。那时西邮定期会有一些书店来贩卖打折书籍,大部分是Xenix操作系统培训教材之类的——拜托,这是1999年的中国,神圣的大学校园,这种货色是卖来当做草纸的吗?——可是,很奇怪的,我居然在中间淘到了一本书,《编程精粹》,1999年。

       不知道怎么形容这本书,刚才我问了一下度娘,现在此类的书籍好像有叫《编程匠艺》之类的古怪名字,不知所云啊,让我们这样的标题党大失所望。只好焚香沐浴,翻箱倒柜的请出这件神物,一看封面的副标题我就有了新的感悟——《编写优质无错 C 程序秘诀》,深刻感觉到此书作者确实是大匠,言简意赅,是靠思想挣钱,不是靠字数糊弄人的。当然,你要是不理解为何我对“优质无错”四个字如痴如醉,说明你的代码量太小,请回宿舍独占机时开始码程序,码到理解为止。

        不过这样下去就没法沟通了,还是举例子吧,看这本书我的第一眼收获就是明白了assert这个宏是干什么用的和什么时候用。如果你还不懂C里面的assert有多重要,说明你的代码量太小,请回宿舍。。。。。。算了,我还是接着讲自己的故事吧。

        2000年是我大学毕业季,那时找工作不像现在,我们的同学可以中兴华为随便选。而我作为一个中等智力程度,成绩一般,身体素质一般的普通同学,连招聘会投简历的华为柜台都没看到,挤不到跟前啊。在那个季节里,我距离最近的专业软件公司是珠海金山,我得到了面试机会,因为我在笔试那一轮写的链表代码里用了assert这个宏。

        虽然我在最终的面试过程中因为一句非常愚蠢的回答葬送了这次机会,但我仍清楚的记得assert宏的威力,面试官显然没有看过《编程精粹》,于是,这成了我的领域,我跟他们一起讨论了下函数接口的防错设计和如何防止数组溢出错误的出现,然后就开始听他们讲金山公司目前都在做些什么工作。在我职业生涯的初期,申请程序员一类的工作时,这本书基本让我无往不利,无论是sybase还是阿尔卡特,当我写下几行防御良好的代码后,负责编码水平评测的考官基本上就开始和我聊天气了。如果你说的和他们是同类语言,他们自然视你为同类,“优质无错”这四个字的威力如斯。

        这本书就是让我编码水平提升了无数个档次的法宝,它就是捷径的灯塔。当你努力编码提升自我的时候,一定要抬头看方向,去寻找这些终南捷径。比如学C++的话,侯捷先生的一些文章就有类似效果。如前文所讲,我试图整理自己研究操作系统的过程并形成一个文档和大家交流,当然,我的层次和大牛们不能比,但是,希望将来出来的时候,也能稍有增益。

       学习软件技术是个漫长的过程,每一个方向都需要持续的学习,需要恒心毅力。实践,无论是编码还是调试,是这条崎岖之路的基石;始终坚持脚下的路是你能达到远处风景的唯一保障;而埋头赶路的同时,一定要看清楚方向,也要想方设法去分享前人的经验,走终南捷径。在前进的时候感受快乐,享受你美好的技术生涯吧!


    展开全文
  • 初级学软件之ASP.NET 第九季 LINQ技术

    千人学习 2017-02-18 12:04:06
    主讲内容: 第一讲 LINQ技术概述 第二讲 from子句 第三讲 where子句 第四讲 select子句 第五讲 orderby子句 第六讲 建立LINQ数据源 第七讲 查询数据库中的数据 第八讲 向数据库中添加数据 第九讲 修改数据库中的数据...
  • 其中“为什么大学教的都是一些过时的软件技术,比如JSP,工作之前还要从头学习新的技术”这个问题让我特别有感触。按理说作为计算机科学来说,优势就在于实时,快,效率高,如果使用过时的东西,就会导致工作能力...

    这几天小编一个刚毕业的学弟来向我取经,也抱怨了一些自己入职后工作上的事情。其中“为什么大学教的都是一些过时的软件技术,比如JSP,工作之前还要从头学习新的技术”这个问题让我特别有感触。按理说作为计算机科学来说,优势就在于实时,快,效率高,如果使用过时的东西,就会导致工作能力低下,必然是没有公司要的。那么为什么大学还在教过时的软件技术呢?于是在网上整理了几个我个人认为比较中肯的答案。

    以下图片内容源于知乎

    01.

    计算机行业发展快,线下教材无法做到实时更新。

    为什么大学还在教过时的软件技术,程序员:只能说你根本不懂软件

     

    02.

    慢慢通过实践,就会发现学习到的“旧”技术与工作中“新”技术都是有相同点的。

    为什么大学还在教过时的软件技术,程序员:只能说你根本不懂软件

     

    03.

    正是学校里的过时知识使我更快的掌握新技术,语言本身特性并没什么,其实后面真正花时间是熟悉各种框架。尤其是Java、JS有太多的框架,需要了解各种API的使用方法

    为什么大学还在教过时的软件技术,程序员:只能说你根本不懂软件

     

    04.

    这就好比是把高等教育等同于职业教育,语言就不是大学需要教的东西,需要学习的是编程的方法和如何编程的思维,语言可以自己任选一种作为工具,在大学中把编程语言学的精专,那是职高学生该干的事!

    为什么大学还在教过时的软件技术,程序员:只能说你根本不懂软件

     

    一个精彩说的话题,大学应该是一个学术的地方还是一个技能学校?计算机专业课程一般有编程语言、数据结构和算法、操作系统、汇编、编译原理、计算机网络、数据库、计算机组成原理、还有很多数学课程,计算机专业同学应该都接触并学习过。你会发现很难直接去应聘Android、ios、前端、python等,对吧,需要自己业余时间去学习这些技术,计算机技术这么多,学校教不完的,学校能教的是你对计算机有个全面完整的认识,教你学的方法,认知。

    我自己是一名大数据架构师,目前辞职在做线上教育大数据讲师,每天都会直播分享免费公开课,大家可以加群参加。以及我自己整理了一套最新的大数据学习系统教程,包括Hadoop,数据挖掘,数据分析。送给正在学习大数据的小伙伴!这里是大数据学习者聚集地,欢迎初学和进阶中的小伙伴!

    加QQ群:584900118(招募中)

    展开全文
  • C语言都能用来吗、我为什么C语言

    万次阅读 多人点赞 2016-12-02 23:06:54
    最近在学C语言,可是越学习就越觉得迷茫,不知道我能用它来干什么? 现在总结一下很多网友的回答,给大家一些参考!  一 、 c语言是计算机技术的基础,是信息技术的基础,是自动化技术的基础,是很多电子...
  • 软件实施实习生应该学什么

    万次阅读 多人点赞 2018-10-24 15:02:08
    做为一个刚刚入职的实施工程师...要明白软件实施工程师这个岗位是干什么的。【摘自软件实施工程师百度百科】:软件实施工程师的工作是软件产品服务主线的一个决定性环节,软件的成功离不开实施。主要负责工程实施: ...
  • 经济硕士都干什么去了[转]

    千次阅读 2013-06-18 11:12:41
    仿佛经济毕业的硕士都会被问个问题,你是转行呢还是读phd呢。理论上来说经济硕士也是可以做本行的,比如有个朋友以前硕士毕业后在北卡罗来某个健康研究机构做economist。可是,两年后,依然被逼读phd去了。没有...
  • 如何高效学习一门新技术

    万次阅读 多人点赞 2017-06-26 17:50:12
    如何高效学习一门新技术 最近着手学习WCF。...尽管我的建议主要涉及的是软件开发方面,但是这些原则在其他领域也同样适用。 1. 克服惯性 万事开头难,克服惯性是学习新技术的第一步。举个日常生活中惯
  •  首先声明一下:接私活不是什么光明磊落的事情,但是生活所迫,有些事情不得不去做,接近百万的房贷,总需要还一些,看别人都开着小轿车上班,自己还挤公交车,就是我不攀比,老婆大人也要比一下自己的老公与别人...
  • 学技术真累

    千次阅读 热门讨论 2013-07-06 15:19:56
     学技术什么会累呢? 1. 种类繁多  编程语言:主要学习了Java、C/C++、C#、Python、JS。只有Java用的比较多,算是掌握。  框架:Java中的框架一大把,Web前端框架也是好多。可以说,每一种语言实现的
  • 为何这么多技术,却做不好Coder!

    万次阅读 多人点赞 2017-06-29 01:03:36
    高考分数出来了,看着各地状元都在豪言壮志要一番大事情。想起了多年前自己参加高考的样子,那是我也坚信学好数理化,走遍天下都不怕。那时,我也相信,上了一个不错的大学就能够让自己过上不错的生活。然而,现在...
  • 引言 本文会详细的讲解什么是混合App开发、混合App开发概念、原理、区别、为什么要...安卓平台上的软件又是如何开发出来的:使用安卓相关的语言开发的,Java,安卓的控件进行开发 苹果和安卓平台上共有的软件是如何...
  • 计算机科学与技术专业学什么--大三总结

    千次阅读 多人点赞 2018-02-21 11:17:47
    15年高中毕业选专业时看中了CS专业,但是不知道这个专业学什么,所以到了大三我就打算把我的三年大学学习经历写出来供将来选专业的学弟学妹们借鉴: 1:专业辨析:CS、软件工程、信息科学 2:我的CS专业学习...
  • 大数据需要学习哪些技术

    万次阅读 多人点赞 2018-10-30 17:13:13
    大数据是对海量数据进行存储、计算、统计、分析处理的一系列处理手段,处理的数据量通常是TB级,甚至是PB或EB级的数据,这是传统数据处理手段所无法完成的,其涉及的技术有分布式计算、高并发处理、高可用处理、集群...
  • RPA是干什么的?

    万次阅读 2020-09-18 12:56:06
    一句话让你明白这个技术什么,一种模拟电脑鼠标键盘操作且可以代替人进行重复性、规则化电脑端操作的技术,展开想象会发现能够应用在公司各个部门各个业务线,简单整理如下: 感觉还是很迷糊? 钉钉跟客户发...
  • 再次接触易语言是因为自身从事互联网行业,同时也涉及了一些网赚项目,在这些网赚项目中运用了许多易语言开发的软件,也接触了许多使用易语言的技术人员,便不得不再次去重温了一下。 易语言用其官方的说明介绍就是...
  • 我最近在网上读到一篇有关软件工程师电话技术面试的文章,为了拿到 offer,一个工程师必须在电话里完成一个非常复杂的代码挑战。他表现得很好,也拿到了 offer,但在加入公司后,他发现他所做的工作与预期相去甚远。...
  • 大学四年软件工程专业的学习经验总结

    千次阅读 多人点赞 2019-07-19 08:44:15
    软工专业学习经验总结 说在前面 前天抽空回顾了大学软件工程专业学习的历程,从C到C++、到Java、面向对象、设计模式、到C#、Unity、WPF以及PHP、微信公众号、...虽然算不上技术大佬,但是对编程也算略有思考和感悟。...
  • 软件架构学习小结

    万次阅读 热门讨论 2010-03-04 22:27:00
    软件架构设计系统整体架构,从需求到设计的每个细节都要考虑到,... 一、软件架构师的职责架构师分为以下几大类:业务架构师、主题领域架构师、技术架构师、项目架构师(J2EE架构师、.NET架构师等)、系统架构师。1
  • 学习web前端,初学者应该用什么编程软件

    万次阅读 多人点赞 2018-09-16 14:18:56
    Web前端开发最常见的编程软件有以下几种: DreamWeaver是一款老牌前端开发工具,功能强大且组件丰富,作为前端开发的一款利器被广泛使用。DreamWeaver是一款可视化的前端开发工具,一边写代码一边就能看到效果,...
  • 不管你是学习技术为了找工作还是创业,你都要对技术本身有个清醒的认识,在中国不会出现BILL GATES,因为,中国目前还不是十分的尊重技术人才,还仅仅的停留在把软件技术人才当作人才机器来用的尴尬境地。...
  • 我的第一篇文章:【web前端到底是什么?有前途吗?】,在我没想到如此 ‘HOT’ 的情况下 得到很多好评和有效传播。 也为我近期新开的 个人前端公众号:前端你别闹(webunao) 直接增加了几百粉(果然,帅的人...
  • 我是如何学习一门新技术

    万次阅读 多人点赞 2015-11-01 14:46:08
    作为一个自己技术一般的人,写这个难免会被人拍砖。不过写下来,记录一下自己的学习方式也好,他人可以作为参考和借鉴。经常有很多新入学的学弟学妹们问我该如何学习一门知识,比如如何学习一门语言、如何学习数学...
  • 大学生应该如何学习软件

    千次阅读 2011-02-21 13:44:00
    在你开始读这篇文章之前,...然后再说说大家学习软件之后要干什么,应该至少有80%的人会选择去软件公司吧?而且是越大越好(钱多)。可是作为一个初级的程序员,人家凭什么要在茫茫人才中选择你?他看的可不是你
  • 大家好,非常感谢大家能...如果你是一个意志力非常坚定的人,每天可以保证学习四个小时以上,经过一段时间的学习,并且能加以复习和运用,相信你的技能别不必培训的同学技术差。如果你意志力并不坚定,需要别人的监...
  • 软件天才与技术民工

    万次阅读 热门讨论 2010-12-30 01:18:00
    软件天才与技术民工——薛涌《天才是训练出来的》读后感

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 132,775
精华内容 53,110
关键字:

学软件技术出来干什么