热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

端正软件开发入门的态度

不要真的认为不少大师级的计算机技术研究者是不懂编程的,做软件开发编码是最最基础的东西,只有踏踏实实的掌握好这个基础你才有办法往上走,不管做分析做设计做项目管理你都需要能清楚东西是如何实现的?可不可以实现?否则肯定出现大量的:设计是设计,编码是编码,产品都是代码人员从头到尾实现的。

踏实

偶然在网上看到《由C#风潮想起的-给初学编程者的忠告》一文。 其中一个角度:避免“浮躁”,倡导“踏实”的学习方法,我是很认同的,但总觉该文作者标题“-给初学编程者的忠告”太大,所以在其文列出的一些具体的“操作方法”上我认为可以探讨,如同自己在某次公司总结会上就《软件开发,我们积累的是什么?》为题跟同事聊了半个多小时后,其中一个同事提到希望我能继续把这个题目细化,就刚入行的他们具体该如何发展有更“具操作性”的指引,当时我是跟他们说这只是我在这一行呆了5年多的体会,谈“指引”还太远,只是可以提出来大家思考、讨论。

不要过度贬低编码

不要真的认为"不少大师级的计算机技术研究者是不懂编程的",做软件开发编码是最最基础的东西,只有踏踏实实的掌握好这个基础你才有办法往上走,不管做分析做设计做项目管理你都需要能清楚东西是如何实现的?可不可以实现?否则肯定出现大量的:"设计是设计,编码是编码","产品都是代码人员从头到尾实现的","究竟需花多少时间,难度有多大,开发人员说了算","质量/成本/进度全是黑匣子"。。。现象,如果你是做编码那编码就更重要了:)。所以对于有志从事这个行业(软件开发)的个人来说,必须先从"重视编码"开始。过了这一关才能去考虑做系统分析,做项目管理。。。

软件开发的各个环节是相辅相承的,分析有分析的重要,设计有设计的重要,编码有编码的重要,测试实施也各有其地位,任何一个环节搞不好就如同我们熟悉的木桶理论,"最薄弱的一个环节制约着其总容量"。

既然编码重要,那该如何学编码?

专心学好一门语言

算算自己用过的语言也不少(括弧里为使用该语言写的比较有代表性的东东),C(dos版的图像/图标编辑工具,96年的《电脑报》有介绍),C++(可自定义方块形状的方块游戏,被收录于99年《软件》杂志的附送光盘上),汇编(DOS汉字系统,97年底完成),PB(学校自动排课/排考模块,98年),ASP(一套web版的企业信息系统,99年),VB(企业信息系统的核心组件,99年),delphi(工作流平台,组件式GIS系统等),Java(Delphi Client + J2EE Server协同实现),.Net(规则引擎),PHP。。。

看起来好象也不少,回过头来想想自己真正认真学过的语言只有一个,就是“C”, Dos年代的TC2。0,用它写了大量的小程序,比较系统的了解了编程是怎么一回事,记得那个时候看到什么软件都要琢磨它是如何实现的?如果让我来实现该如何做?也模仿了不少东西,虽然多是很表面的模仿但对自己编程思维的锻炼很有好处。后来用其它语言基本上都只是翻翻帮助,然后找找其Demo代码来看看,很快就可进入状态。

语言都是差不多的,重要的是“编码的思想”,具备了该思想语言就只是工具了,用什么工具实现都差不多,该思想的形成是需要“磨练”的,就是“专心使用一门语言”来磨练(甚至需要有“咬文嚼字的孔已己作风”),然后可“一理通百理通”,不然你只是浮于表面的去学再多的语言都没有。都不能拿来做真正的开发。都不能了解“编码”的内涵。

如在今年招聘面试的时候看到太多写着什么语言都精通(或熟练)的毕业生,我惯用的方法是给他(她)一张纸一支笔,让他(她)用自己最了解的语言写一个算阶乘的函数,这个问题你一看肯定说很简单,好,接着我会往下问,可以有多少种方法来实现:循环,递归…还有吗?你能写出多少种来?(代码基本结构模式的考察)。代码质量如何? 有没有考虑错误处理(太多人写的代码会进入死循环比如输入的是负数) ? int的上限是多少,用long? 如果输入值比较大,算得出结果吗,该如何去实现可以计算很大数的该函数?。。。看着他(她)写出来的代码一个个问题的问就得了,不管你用什么语言,不管你“精通”多少种语言,我只问这些用什么语言来解决问题都需要的基础的东西, 就是“编码的思想”。 在学专一门语言的基础上新东西当然要跟,不然在这个行业你是很难“混下去”的,但有这“学专一门”的前提后,你跟起来就轻松了,而不用总是得“追”~

在“专”一门语言的过程中为解决问题你会发现“算法”很重要,这就是接下来要说的“基础”了。

基础很重要

面试的时候我一般都会问,基础知识学得如何? 一般重点问的是:《数据结构》, 《编译原理》, 《数据库原理》的内容。至于《由》文提到的:《汇编语言》,《 Windows 程序设计》我是不会问的。这些是可以进一步学习的东西,但对现在的开发来说不是必须的。《软件工程》我向来不问,教材理论跟实际差得太远了~

《数据结构》很重要,不懂数据结构很多编码就是“蛮干”,而且往往把“简单问题复杂化”,甚至复杂到不可能解决。认真学习《数据结构》并多做尝试用你熟悉的语言去实现里面的算法,你会发觉“世界真奇妙”~不要认为你不会去开发“编程语言”不需要学习《编译原理》, 《编译原理》里面包含了太多开发软件的“奇妙”的思想案例,认真体会你肯定会被其解决问题的方法折服,从中你能体会到很多东西,对以后做软件(不管是设计还是编码等)大有帮助,里面有很多现存的方法可用在你的项目中,而这些跟《数据结构》是互为补充的。在这些基础上接下来《设计模式》一书你也一定得看看。

很多应用都离不开数据库,最终总得找个地方来“操纵,存储,分析数据”,关于范式,关于锁,关于SQL,关于笛卡儿那一套你总得了解了解,不然无法入手,这就需要好好学习《数据库原理》了。单纯知道几条SQL语句是远远不够的,如何保证数据的完整性,安全性?如何提高效率等等都需要这些基础的支持~

当然英文也是基础,看英文资料确实重要,不单是书,还有网络上的大量资料,论坛…看的时候别害怕就是了,毕竟都是受过高等教育的,英语也学了那么多年起码都有点底吧,配合这两个工具:《金山词霸》及Google.com,不懂的单词“即指即译”,但很多名词或基础知识不是靠单词解释能清楚的,配合搜索引擎查查相关资料看看,记住一点,看到不懂的东西多看几遍,默记一小会,日积月累你能看懂的东西就多了。

本文地址:http://www.nowamagic.net/librarys/veda/detail/1208,欢迎访问原出处。


推荐阅读
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 深入理解OAuth认证机制
    本文介绍了OAuth认证协议的核心概念及其工作原理。OAuth是一种开放标准,旨在为第三方应用提供安全的用户资源访问授权,同时确保用户的账户信息(如用户名和密码)不会暴露给第三方。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 本文介绍了如何在C#应用程序中有效隐藏SQLCMD命令行窗口,确保程序运行时不会弹出黑色命令提示符窗口。 ... [详细]
  • 本文探讨了使用C#在SQL Server和Access数据库中批量插入多条数据的性能差异。通过具体代码示例,详细分析了两种数据库的执行效率,并提供了优化建议。 ... [详细]
  • 本文介绍了解决在Windows操作系统或SQL Server Management Studio (SSMS) 中遇到的“microsoft.ACE.oledb.12.0”提供程序未注册问题的方法,特别针对Access Database Engine组件的安装。 ... [详细]
  • 在计算机技术的学习道路上,51CTO学院以其专业性和专注度给我留下了深刻印象。从2012年接触计算机到2014年开始系统学习网络技术和安全领域,51CTO学院始终是我信赖的学习平台。 ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 机器学习中的相似度度量与模型优化
    本文探讨了机器学习中常见的相似度度量方法,包括余弦相似度、欧氏距离和马氏距离,并详细介绍了如何通过选择合适的模型复杂度和正则化来提高模型的泛化能力。此外,文章还涵盖了模型评估的各种方法和指标,以及不同分类器的工作原理和应用场景。 ... [详细]
  • MATLAB实现n条线段交点计算
    本文介绍了一种通过逐对比较线段来求解交点的简单算法。此外,还提到了一种基于排序的方法,但该方法较为复杂,尚未完全理解。文中详细描述了如何根据线段端点求交点,并判断交点是否在线段上。 ... [详细]
  • 本文将深入探讨PHP编程语言的基本概念,并解释PHP概念股的含义。通过详细解析,帮助读者理解PHP在Web开发和股票市场中的重要性。 ... [详细]
  • C#设计模式学习笔记:观察者模式解析
    本文将探讨观察者模式的基本概念、应用场景及其在C#中的实现方法。通过借鉴《Head First Design Patterns》和维基百科等资源,详细介绍该模式的工作原理,并提供具体代码示例。 ... [详细]
  • JavaScript 中创建对象的多种方法
    本文详细介绍了 JavaScript 中创建对象的几种常见方式,包括对象字面量、构造函数和 Object.create 方法,并提供了示例代码和属性描述符的解释。 ... [详细]
  • 在尝试使用C# Windows Forms客户端通过SignalR连接到ASP.NET服务器时,遇到了内部服务器错误(500)。本文将详细探讨问题的原因及解决方案。 ... [详细]
author-avatar
沉醉不知归路1222
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有