• 12 个有效的提高编程技能的方法

    1. 永远不要停止学习和阅读

    阅读 书籍,而不只是网站

    阅读 只为自我提升,而不是为了下一个项目

    阅读 提升你的基础,而不只是最新技术

    2. 跟比你聪明的人一起工作

    跟比你更聪明的人或者是更有经验的人一起工作,可以让你快速提升

    3. 变成一个全才

    不要过于钻牛角尖,这可能会让你停滞不前和伤害你的就业前景。

    4. 阅读并记录别人的代码

    其实写代码比阅读并理解别人的代码要容易的多。

    5. 在实际的项目中获取编程经验

    只有在真实的项目中,各种压力下、真实善变的客户、不断变化的需求下,才能不断提升你的技能。

    6. 教授别人编程技巧

    这个可以强迫自己去理解不同水平的人的情况,而且你必须耐心的帮他们解释清楚,这对你本身而言也是一种提高。

    7. 每年学习一种新的编程语言

    用一年时间来学习一种新的编程语言,已经足够让你对它的基础了解透彻,同时你可以理解不同语言之间的风格。

    8. 每年完成一个有意思的项目

    每年做一个有意思的项目,不一定有什么用途,但一定是很有意思,让你非常有兴趣把它做得很棒。

    9. 学习汇编语言

    学习像汇编这样的低级语言可以让你了解计算机是如何工作的。

    10. 与你的应用的客户交流获取信息

    与最终用户交流可以知道他们的想法,他们是如何使用软件的,最终用户多数不是开发者,他们看到的是软件是一件神奇的工作,而你看到的软件是一套合乎逻辑的步骤。

    11. 锻炼身体

    身体是革命的本钱,只有好身体才能有好的工作、学习状态。

    12. 练习快速打字

    快速的键盘输入可以让编程工作更加高效。


    阅读全文
    作者:驽鸟 | 分类:电脑网络 | 阅读:1阅读次数98 | 标签:, ,
  • Windows 8 Consumer Preview的108个运行命令及简要说明

    Charm→n. 魅力,吸引力;魔力,Windows 8 中的Charm按钮就叫“超级按钮”得了!喜欢右键这里点点,那里点点,在屏幕左下角点击右键,弹出菜单:程序和功能、系统、设备管理器、磁盘管理、计算 机管理、命令提示符(管理员)、控制面板、运行等。这个就叫“超级菜单”好了!以下Windows 8 Consumer Preview的108个运行命令,部分命令需要以管理员身份运行命令提示符。


    1.appwiz.cpl:程序和功能

    2.calc:启动计算器

    3.certmgr.msc:证书管理实用程序

    4.charmap:启动字符映射表

    5.chkdsk.exe:Chkdsk磁盘检查(管理员身份运行命令提示符)

    6.cleanmgr: 打开磁盘清理工具

    7.cliconfg:SQL SERVER 客户端网络实用工具

    8.cmstp:连接管理器配置文件安装程序

    9.cmd.exe:CMD命令提示符

    10.自动关机命令

     Shutdown -s -t 600:表示600秒后自动关机

     shutdown -a :可取消定时关机

     Shutdown -r -t 600:表示600秒后自动重启

     rundll32 user32.dll,LockWorkStation:表示锁定计算机

    11.colorcpl:颜色管理,配置显示器和打印机等中的色彩

    12.CompMgmtLauncher:计算机管理

    13.compmgmt.msc:计算机管理

    14.credwiz:备份或还原储存的用户名和密码

    15.comexp.msc:打开系统组件服务

    16.control:控制面版

    17.dcomcnfg:打开系统组件服务

    18.Dccw:显示颜色校准

    19.devmgmt.msc:设备管理器

    20.desk.cpl:屏幕分辨率

    21.dfrgui:优化驱动器   Windows 7→dfrg.msc:磁盘碎片整理程序

    22.dialer:电话拨号程序

    23.diskmgmt.msc:磁盘管理

    24.dvdplay:DVD播放器

    25.dxdiag:检查DirectX信息

    26.eudcedit:造字程序

    27.eventvwr:事件查看器

    28.explorer:打开资源管理器

    29.Firewall.cpl:Windows防火墙

    30.FXSCOVER:传真封面编辑器

    31.fsmgmt.msc:共享文件夹管理器

    32.gpedit.msc:组策略

    33.hdwwiz.cpl:设备管理器

    34.inetcpl.cpl:Internet属性

    35.intl.cpl:区域

    36.iexpress:木马捆绑工具,系统自带

    37.joy.cpl:游戏控制器

    38.logoff:注销命令

    39.lusrmgr.msc:本地用户和组

    40.lpksetup:语言包安装/删除向导,安装向导会提示下载语言包

    41.lusrmgr.msc:本机用户和组

    42.main.cpl:鼠标属性

    43.mmsys.cpl:声音

    44.magnify:放大镜实用程序

    45.mem.exe:显示内存使用情况(如果直接运行无效,可以先管理员身份运行命令提示符,在命令提示符里输入mem.exe>d:a.txt 即可打开d盘查看a.txt,里面的就是内存使用情况了。当然什么盘什么文件名可自己决定。)

    46.MdSched:Windows内存诊断程序

    47.mmc:打开控制台

    48.mobsync:同步命令

    49.mplayer2:简易widnows media player

    50.Msconfig.exe:系统配置实用程序

    51.msdt:微软支持诊断工具

    52.msinfo32:系统信息

    53.mspaint:画图

    54.Msra:Windows远程协助

    55.mstsc:远程桌面连接

    56.NAPCLCFG.MSC:客户端配置

    57.ncpa.cpl:网络连接

    58.narrator:屏幕“讲述人”

    59.Netplwiz:高级用户帐户控制面板,设置登陆安全相关的选项

    60.netstat : an(TC)命令检查接口

    61.notepad:打开记事本

    62.Nslookup:IP地址侦测器

    63.odbcad32:ODBC数据源管理器

    64.OptionalFeatures:打开“打开或关闭Windows功能”对话框

    65.osk:打开屏幕键盘

    66.perfmon.msc:计算机性能监测器

    67.perfmon:计算机性能监测器

    68.PowerShell:提供强大远程处理能力

    69.printmanagement.msc:打印管理

    70.powercfg.cpl:电源选项

    71.psr:问题步骤记录器

    72.Rasphone:网络连接

    73.Recdisc:创建系统修复光盘

    74.Resmon:资源监视器

    75.Rstrui:系统还原

    76.regedit.exe:注册表

    77.regedt32:注册表编辑器

    78.rsop.msc:组策略结果集

    79.sdclt:备份状态与配置,就是查看系统是否已备份

    80.secpol.msc:本地安全策略

    81.services.msc:本地服务设置

    82.sfc /scannow:扫描错误并复原/windows文件保护

    83.sfc.exe:系统文件检查器

    84.shrpubw:创建共享文件夹

    85.sigverif:文件签名验证程序

    86.slui:Windows激活,查看系统激活信息

    87.slmgr.vbs -dlv :显示详细的许可证信息

     slmgr.vbs -dli :显示许可证信息

     slmgr.vbs -xpr :当前许可证截止日期

     slmgr.vbs -dti :显示安装ID 以进行脱机激活

     slmgr.vbs -ipk :(Product Key)安装产品密钥

     slmgr.vbs -ato :激活Windows

     slmgr.vbs -cpky :从注册表中清除产品密钥(防止泄露引起的攻击)

     slmgr.vbs -ilc :(License file)安装许可证

     slmgr.vbs -upk :卸载产品密钥

     slmgr.vbs -skms :(name[ort] )批量授权

    88.snippingtool:截图工具,支持无规则截图

    89.soundrecorder:录音机,没有录音时间的限制

    90.StikyNot:便笺

    91.sysdm.cpl:系统属性

    92.sysedit:系统配置编辑器

    93.syskey:系统加密,一旦加密就不能解开,保护系统的双重密码

    94.taskmgr:任务管理器(旧版)

    95.TM任务管理器(新版)

    96.taskschd.msc:任务计划程序

    97.timedate.cpl:日期和时间

    98.UserAccountControlSettings用户账户控制设置

    99.utilman:辅助工具管理器

    100.wf.msc:高级安全Windows防火墙

    101.WFS:Windows传真和扫描

    102.wiaacmgr:扫描仪和照相机向导

    103.winver:关于Windows

    104.wmimgmt.msc:打开windows管理体系结构(WMI)

    105.write:写字板

    106.wscui.cpl:操作中心

    107.wscript:windows脚本宿主设置

    108.wuapp:Windows更新

    (有些还保留着Windows7的影子,如:94.taskmgr:任务管理器(旧版),95.TM:任务管理器(新版)79.sdclt:备份与还原)

    阅读全文
    作者:驽鸟 | 分类:电脑网络 | 阅读:1阅读次数184 | 标签:, ,
  • 如何提高团队编程水平

    本文总结了一些Mendicant大学深受好评的方法。希望这些经验能帮助更多本地团队和在线团队,这样会有更多优秀的场所供程序员学习和成长。

    强调个人目标与团队兴趣

    在小团队里,只讨论眼下全球流行的IT技术,却忽略小组内部正在做的工作,这是对精力和潜力的极大浪费。而将关注的内容与团队成员正在参与的项目或日常工作中面临的问题联系起来,这样则会更加有效。

    与其对一般性的问题进行讨论和学习,不如找出团队需要解决的一些具体问题。可以自己克服这些障碍,通过整合手头的资源可以更加有效地找到相关学习资料,或者组织相关人员进行讨论。

    实践的方法有很多,其中有一种方法很有意思:在每次会议一开始,让大家谈一谈自己正在做什么、对什么比较感兴趣,这样大家可以依据兴趣进行组合。对于在线讨论组,可以使用wiki或者定期的邮件列表摘要来达到类似的效果。

    实行正式的代码审查

    不要空谈想法或策略,最好办法是坐下来、打开编辑器并准备好代码进行审查。通过向别人讲解自己的代码,你能从中学到很多东西。可以毫不夸张地讲,任何向他人教授知识的过程都能产生价值,哪怕仅仅是讲解编程习语或者命名规范这样的小知识也是如此。
    如果代码太过粗糙不能进行有效的审查,可以通过编写一个简单的例子来展示你正在学习的核心概念。讨论的内容越具体,在与别人的交流中获得有价值信息的可能性越大。

    倾向有理有据的争论

    在编程社区里,依据权威(“某某说过……,因此……”)和流行观点(“大家都是这么做……”)的争论非常普遍,但最终都会偏离想要表达的观点。幸运的是,讨论代码有一种更为有效的方法。

    对于给定问题讨论解决方法,明确问题背景是最重要的。不了解问题背景,就不清楚解决这个问题是使用锤子还是推土机更合适。明确问题背景后,对于给出的解决方案就有了可讨论的依据。

    至此,剩下的事情就是比较不同解决方案权衡利弊。打个比方,你可能会说:“Sqlite易于使用,因为它不需要数据库服 务器。但如果要处理GIS数据,你可能会选择PostgreSQL,因为PostGIS提供了很多有用功能”。这个说法虽然不是无懈可击,但比 “Sqlite很烂,一定要使用PostSQL”要好一些。

    有时候,你只是想表达一些纯粹的个人偏好,这没有问题。但在这个时候,如果能有一些理性讨论而不只是抒发个人感情,会更好地表达你的观点。在某些情况下,这能让你避开宗教般的争论。

    寻找有效的练习和学习方法

    每天都会涌现很多学习编程的新方法,它们被视作下一代革命性方法并受到推崇。同样你也会发现,通常人们现在学习和讨论的都是一些新技术。当然,这会 让你错误地认为很重要并且迫切想要学习。如果追随他们,你会事倍功半因而不能踏实地做出有用的东西,到头来你会发现这些技术不过是过往云烟。
     
    无论何时,尽可能地在学习新技术时为自己设定目标并动手实践。如果可能的话,可以用较低风险的项目试验新想法和新技术, 这样会对自己以后大有裨益。如果你确实要花一些时间进行刻意练习而不是边工作边练习,请确保练习的目标是为了实际需要或是为了解决实际问题。例如:采用代 码套路学习一门新语言或者文本编辑器新特性是一个好主意,但如果想要通过代码套路来获得意外收获就是一个糟糕的想法。虽然有时候方法不对也能碰巧解决问 题,但在你进步的过程中不应该只是碰运气。
    译注:代码套路(code kata):由Dave Thomas 发明该词,源自日本空手道中的套路(kata)概念。代码套路是用来帮助程序员通过练习和重复来提高自己的编程技巧。

    虽然上面提到的内容更多的是针对个人而不是在团队练习,但同样的目标也应当出现在你参与的任何团队活动中。无论何时,尽 可能根据需要分成专注不同技术的小组,这样可以避免出现强迫一些成员练习或学习与其不相关或不感兴趣的内容。我们可支配的时间和精力是宝贵的,应当小心分配。

    值得注意的是,这个建议并不意味着只关注狭窄的和现实的目标。对于理论研究或经典课题的深入学习同样适用,并且可以在团队活动中开展。不要为了模糊不清的兴趣去组织活动,将这些活动在某种程度上与个人内在目标联系起来是非常必要的。

    在技术与社交之间建立良好的平衡

    在任何组织里,没有交流很难建立起共同的文化,成员之间也不会分享自己的兴趣。然而,迄今为止我见到过太多的用户小组从像HackFest一样的盛会变得平淡无奇。如果团队的社交准则鼓励这种行为,就不会有深入的讨论和研究开始并延续下去。

    译注:HackFest:每年一度的Apple II编程比赛,对所有参加KansasFest课程的成员开放。

    以我个人的经验,可以在工作结束之后开展一些交流活动,或者将交流与工作安排在不同时间。在线社区也可以采取类似的方式,为工作和非正式交流分别设计一些活动。你不必像法西斯那样刻意强调之间的区别,但在未来前进的道路上一定要始终持有清晰的目标。

    建立参与和分享的团队文化

    了解你的团队,不仅要看团队成员在说什么,更要看他们在做什么。所以,尽可能地去突出团队成员的贡献,支持那些由积极协作完成的工作。不提倡由一个人完成主要工作,而其他人只是被动地接受信息。

    就个人而言,我更喜欢能够碰撞出火花的讨论以及类似Hackfest的活动。只要能够专注于团队成员正在做什么,而不仅仅是重复别人说过或做过的事情都可以。同样地,我认为只要结构合理并且举止得体,组内讨论也同样可以非常有效。

    在线团队也可以通过代码审查、文章讨论和问答的形式取得同样效果。

    无论是与网络团队一起或是独自一人,在提高编程水平的过程中都可以参与开源软件开发和讨论。尽可能地鼓励你团队的成员公开并分享他们的成果,这会产 生巨大的不同效果,会形成一个积极鼓励分享的氛围。当然,并非每个人都有时间经营他们自己的项目,或者为其他项目做出可观的贡献(比如提交一个很大的补丁 程序)。但是,只要你听说某人提出一个bug或者报告了一个从未被发现过的问题,你就可以适时地坐下来,并且告诉他们如何编写最小的示例重现问题并提交一 个bug。有的时候,几分钟的指导就可以让一些只会在推特上抱怨的人转变成为开源项目的积极贡献者。

    了解社交习惯,切记不要排斥边缘团体

    许多技术团队(在线团队和本地团队)都没有做到断绝一些相当令人尴尬的行为。虽然作为个体我们无法感受到这一点,作为团队我们一直觉得容忍这种排斥 行为是一种犯罪,而这种排斥在大多数其他社会场合都是不能被容忍的。请记住,尽管参加技术会议的程序员主体是异性恋的、中产以上、20到30岁之间的男性 白种人,但这个世界上还有很多同样热情、能够在技术上有建树的人并不属于这一类型。

    这并不意味着需要过度地保持正确的政治方向或者放弃你的幽默感。这只意味着,如果你不能在各种其他群体面前开一些玩笑或发表一些言论,你同样要避免 在程序员同伴面前说类似的话。还意味着,你同样需要在沟通之前检查一下自己对别人的文化假设。专注于别人能做什么,而不是他们与你有多大差别。

    我在这篇文章里的大多数建议会自然地建立一种环境,这种环境能够吸引比我们目前服务的社区更为广泛的人群。但是我想在这里呼吁重视这个问题,它的重要性实在不容忽视。社区的组织者需要特别记住这些问题,因为它们是针对团队成员期望设置目标的绝佳机会。

    在感到安全、受到欢迎和得到感激的氛围中,人们能工作和学习得最好。如果你团队中的每个成员都认同这种氛围,你最终会比那些令人感到被边缘化或没有感激的团队收获更多。

    阅读全文
    作者:驽鸟 | 分类:电脑网络 | 阅读:1阅读次数538 | 标签:, ,
  • 域名注册信息含义

    国际域名注册信息含义

    Domain Name …………………………域名
    Name Server ……………………………DNS服务器
    Registrant ID …………………………..注册人ID
    Registrant Name ……………………..注册人姓名
    Registrant Organization ……………注册人单位
    Registrant Address ………………….注册人地址
    Registrant City ………………………..注册人城市
    Registrant Province/State …………注册人省/州
    Registrant Postal Code …………….注册人邮编
    Registrant Country Code ………….注册人国家代码
    Registrant Phone Number ……… 注册人电话号码
    Registrant Fax ………………………..注册人传真
    Registrant Email ……………………..注册人电子邮箱
     
    Technical ID ……………………………技术联系人ID
    Technical Name ………………………技术联系人姓名
    Technical Organization …………….技术联系人单位
    Technical Address …………………..技术联系人地址
    Technical City …………………………技术联系人城市
    Technical Province/State ……….. 技术联系人省/州
    Technical Postal Code ……………..技术联系人邮编
    Technical Country Code …………..技术联系人国家代码
    Technical Phone Number …………技术联系人电话号码
    Technical Fax …………………………技术联系人传真
    Technical Email ………………………技术联系人电子邮件
     
    Administrative ID …………………….管理联系人ID
    Administrative Name ……………….管理联系人姓名
    Administrative Organization ……..管理联系人单位
    Administrative Address ……………管理联系人地址
    Administrative City ………………….管理联系人城市
    Administrative Province/State …..管理联系人省/州
    Administrative Postal Code ………管理联系人邮编
    Administrative Country Code ……管理联系人国家代码
    Administrative Phone Number ….管理联系人电话号码
    Administrative Fax ………………….管理联系人传真
    Administrative Email ……………….管理联系人电子邮箱
     
    Billing ID ………………………………..付费联系人ID
    Billing Name …………………………..付费联系人
    Billing Organization …………………付费联系人单位
    Billing Address ……………………….付费联系人地址
    Billing City ……………………………..付费联系人城市
    Billing Province/State ………………付费联系人省/州
    Billing Postal Code ………………….付费联系人邮编
    Billing Country Code ……………….付费联系人国家代码
    Billing Phone Number ……………..付费联系人电话号码
    Billing Fax ……………………………..付费联系人传真
    Billing Email …………………………..付费联系人电子邮箱
     
    Expiration Date ………………………域名到期日
     

    国内域名注册信息含义

    Domain Name……………………..域名
    ROID………………………………..注册识别码
    Domain Status……………………..域名状态
    Registrant ID……………………….注册人ID
    Registrant Organization…………..注册人单位
    Registrant Name…………………..注册人姓名
    Registrant Email…………………..注册人电子邮箱
    Sponsoring Registrar……………..所属注册商
    Name Server………………………DNS服务器
    Registration Date………………….域名注册日期
    Expiration Date……………………域名到期日
    Dnssec Deployment………………DNS安全扩展

    阅读全文
    作者:驽鸟 | 分类:电脑网络 | 阅读:1阅读次数400 | 标签:, , ,
  • 手机电容屏的保养

      目前主流的电容屏手机包括诺基亚的部分手机、Android系统绝大部分手机以及苹果手机等。保养参考如下:

      1、极度怕静电:很容易击穿电容屏。虽然电容屏手机表面的那层玻璃都经过一定的抗静电处理,但不代表能承受住人*体的静电

    ,而且有不少人喜欢在手机表面上贴一张容易产生静电的劣质屏贴,建议给手机选配皮套等。

      2、怕油污和汗水等导电介质:覆盖在屏幕上会形成导电层,从而引起屏幕飘移,手洗干净,擦干再用。

      3、怕“高”温:这里的“高”温并不是用火去烤,而是达到40度左右的温度,就有可能引起电容屏飘移,长期处在这个温度,

    电容屏就会翘辫子 不要日光浴,不要在高温太阳下长时间使用。

      建议:如果充电时屏幕温度高,请过段时间温度降低再进行充电操作。

      4、怕磁场:特别是电磁场,那块小磁铁在电容屏上放一会,电容屏就会暂时性失效(也有可能会造成永久性损伤)别靠近音箱

    或带磁性的螺丝批等物品,回到家不要把顺手手机放在音箱上。

      5、怕不稳定的电压:一般当手指接触到电容屏时,会“吸”走一点点电流,然后屏幕从四个角落均匀送电到拇指所在的位置,

    并以此来做定位,所以电容屏在输电电压不稳定的情况下,会“飘移”甚至失效。另外电量低于20%最好马上充电。

      电容屏更主要的缺点是漂移:当环境温度、湿度改变时,环境电场发生改变时,都会引起电容屏的漂移,造成不准确。例如:开

    机后显示器温度上升会造成漂移:用户触摸屏幕的同时另一只手或身体一侧靠近显示器会漂移;电容触摸屏附近较大的物体搬移后回

    漂移,你触摸时如果有人围过来观看也会引起漂移;电容屏的漂移原因属于技术上的先天不足,环境电势面(包括用户的身体)虽然

    与电容触摸屏离得较远,却比手指头面积大的多,他们直接影响了触摸位置的测定。

      此外,理论上许多应该线性的关系实际上却是非线性,如:体重不同或者手指湿润程度不同的人吸走的总电流量是不同的,而总

    电流量的变化和四个分电流量的变化是非线性的关系,电容触摸屏采用的这种四个角的自定义极坐标系还没有坐标上的原点,漂移后

    控制器不能察觉和恢复,而且,4个A/D完成后,由四个分流量的值到触摸点在直角坐标系上的X、Y坐标值的计算过程复杂。由于没有

    原点,电容屏的漂移是累积的,在工作现场也经常需要校准。 电容触摸屏最外面的矽土保护玻璃防刮擦性很好,但是怕指甲或硬物

    的敲击,敲出一个小洞就会伤及夹层ITO,不管是伤及夹层ITO还是安装运输过程中伤及内表面ITO层,电容屏就不能正常工作。

    阅读全文
    作者:驽鸟 | 分类:电脑网络 | 阅读:1阅读次数703 | 标签:, ,
  • 美到极致是疯狂

    一、什么是代码高手?你怎么证明自己是代码高手?

    知道许多代码技巧、JS炫彩技巧的人大有人在。你知道多少个.net函数,这一点都没有意义。你知道多少个新鲜IT名词,多少技术介绍,这也没有意义。做,真正做一个原型,做一个项目,解决你手头棘手的问题,这才有意义。

    1、快速准确的理解别人说的-〉

    2、快速的开发,还准确的反映了别人的需求-〉

    3、稳定,最少出BUG-〉

    4、高性能,10万条记录你能顶住,1000万条记录你能顶住吗?这就是技术功底的考验

    5、这还不够,你的代码是否能让别人快速的理解了

    6、你的代码是否能比较容易的接受不同客户的需求差异

    这都是处处要你的分析功底、架构功底、编码功底。

    二、怎么炼成高手?

    1、阅读优秀的开源源代码。先找代码量不大的。要彻底的阅读,剖析清楚有多少个类,这些类的关系。为什么要设计这样的类架构,为什么要这样设计接口。这些思考相当有深度。

    2、根据你的需求,把开源源代码进行修改。因为开源源代码是浑然一体,你加的功能是否很好和现有代码融合。这相当考验功底。

    3、读书,谁发明的这个东西就读谁的书。如想学 SQLSERVER,就一定要读SQLSERVER开发经理或技术小组写的书。别人写的书都会有歧义。要读透,反复阅读它的设计原理。不要只学会使用。比如说SQLSERVER,写SQL和SP就是懂SQLSERVER?我们一定要明白到SQLSERVER的数据页面是如何组织的,为什么要这样组织,它是怎样被载入内存中,它又是怎样回写到物理设备上。我们要到这个深度。否则,你只能是知道个皮毛,平时看是高手,一到真正难关立马歇菜。

    如果你学的技术还不能帮助你解决你目前手头的问题,说明你还学的不到位。

    4、找到你的师傅。一个人的成长,很难是自己一个人苦苦学习摸索修炼。这样提升很慢。你如果想快速发展,你必须找到你在这家公司中的引路人。他可能是你的入职指引人,也可能是别人。你一定要好好观察,看中了就一定要积极联系上他紧紧的跟随着他,平时多请教多观察他的思考方式做事方式。

    5、给自己树立一个信念:我要在X年中成为公司所有人公认的技术高手。我要在X年终成为中国软件业一流的程序员。必须设立目标,而且时时刻刻为这个目标奋斗,坚持每天阅读、思考、开发、修改代码达到13-16个小时以上。有一个故事讲的就是每件事要想做专业必须要经过1万个小时的反复练习才能成功。对,我说的就是这个意思。不疯魔不成活。

    一个成功的产品的诞生是多么的曲折与艰难,中间会经历多少商业竞争机缘巧合,也会浮现多少独当一面的代码英雄。
    一个人有没有可能成为软件高手,他是有一种说不清的气质的,你知道那就是程序员精神,他是与众不同的,你能明显感觉的到。

    作为我个人,在技术上我是一直关注数据架构层、Java架构层、前端架构、和大型Web应用与研发。在业务上,我一直关注电子商务、互联网生活服务/互联网营销/互联网客户关系社区、Web前端技术。 最后一句话:

    美到极致是疯狂。希望大家在平时工作中开发每一个产品时,都能暗下决心:It's My Baby!

    对,它就是你创造的孩子,你要用心去雕琢它呵护它。

    阅读全文
    作者:驽鸟 | 分类:电脑网络 | 阅读:1阅读次数692 | 标签:, ,
  • 有理想的程序员必须知道的15件事

    作为程序员,要取得非凡成就需要记住的15件事。
    1、走一条不一样的路
    在有利于自己的市场中竞争,如果你满足于“泯然众人矣”,那恐怕就得跟那些低工资国家的程序员们同场竞技了。
     

    2、了解自己的公司
    以我在医院、咨询公司、物流企业以及大技术公司工作的经验来看,这一点所言不虚。

    不同公司的运营模式差异极大。如果你理解企业的运营模式,那你就不一样了!在这家公司中(或者对客户而言),你是参与业务运营的资产,你的工作能直接产生效益!

    3、与最优秀的人为伍
    很早以前,我喜欢打篮球,被分配到一个水平比较高的队里。一开始适应的确很困难,但环境的压力越大(重大比赛),我的长进也就越明显。

    每个领域其实都一样:你周围人的水平(以及对你的期望)越高,你就会变得越优秀。

    4、制造差异
    每年学习一门新编程语言。为什么不呢?不断尝试新事物,你关注的技术种类越多,脚下的路就越宽广,你的职业生涯就会日新月异。不知道几年后Java的趋势如何?那就学习Clojure。学Ruby还是Python?这两种语言都可以试试啊。然后你才能知道哪种语言更适合某个特定的项目。看,掌握的语言多了,才能在需要的时候信手拈来吧。

    5、畏惧,是最大的敌人
    还是直接从书中摘一句吧:“在畏惧中做出的职业规划,很可能会让自己后半辈子就一直被‘圈禁’在小隔断里,永远不会有创造明天辉煌的时刻。没错,那样是安全,但有意思吗?”

    6、要成为多面手
    如果你掌握了所在领域的知识,那你只能是一名专业人士。用PHP编程?花点时间设置一台Apache服务器,让PHP和MySQL都跑起来。一直在用jQuery?试试Prototype。你懂了吧。

    7、一个字:做
    别指望别人过来教你该怎么做,出去,自己学着去做!

    8、找一位好老师
    找一位好老师可以让你在学习技术的时候有的放矢。作者给我们讲述了别人是怎么指导他学习的(顺便说一句,作者在这本书里讲了很多个人经历的小故事,他居然从一位演奏家转行来做软件开发!):“好好研究一下目录服务,熟悉一种UNIX变体,然后再掌握一门脚本语言。”

    请记住这句禅宗谚语:“循路觅宗师,形影不相离,师知吾亦知,吾乃成宗师。”

    9、主动教会别人
    教会别人是一种最好的学习方式。写一篇博客能帮你搞清楚一个问题。为此,你必须先掌握很多材料,同时还要有条有理地讲给别人听(写作技能)。如书中所言:“要想知道自己是不是真的明白,你就讲给别人听听。”

    10、实践,实践,再实践(训练)
    只有进行大量实践(花大量的时间)才能掌握某种技术。看的很多,写的很少,遇到问题,改一改,又去读代码,……(这样下去是不行的)。

    要特别警惕拖延症。其实,往往只要有了开头就好办了。

    自我加压,效果会更好。我曾在一篇博客中提到帕金森定律:紧张的时限可以让你提高工作效率。为什么不把这个定律用到学习上呢,比如说在y时间内学会x?

    11、从小处入手
    每天都取得一项小成果,每天都要坚持做(写在博客上?)。这样一来,你只能让自己比昨天更进步,而不能说自己比上星期进步了一点。

    12、享受过程
    关注当下,而不是目标,享受那些在追逐未来目标的途中可能无暇顾及的小胜利。人总要生活在当下。我享受编程的过程,就像享受编程的结果一样。

    13、不要丧失危机感
    越是成功,就越容易犯重大错误。永远不要忘了危机感,特别是要认识到你今天所知道的,到了明天可能就会一文不值。过去的荣耀不能保你永远无虞。

    据书中所说,你最好是要让自己能够“通用”,而不要对哪种技术或哪个公司产生依赖。你所掌握的某些技能,甚至你的工作,到了明天都可能会变得毫无价值。因此要不断提高/丰富/扩展自己的技能。

    14、推销自己
    为某个项目贡献自己的一份力量,写一篇博客,共享自己的源代码,成为对某个社区有用的人。
    当然,做这些事可能需要激情,要看你的爱好,但这些事也会间接地推广你的工作成果,证明你的实力,提高你的知名度。

    15、关注市场
    书中还提到了“预警极客”,也就是那些始终引领技术发展的人。这些人说过的话往往带有预见性,他们提到事物也许过几天就会成为头条新闻。关注这些人,常看他们的Twitter和博客。

    阅读全文
    作者:驽鸟 | 分类:电脑网络 | 阅读:1阅读次数597 | 标签:, ,
  • IT自由职业者的成功秘诀

    原文作者Greg Jorgensen是一位典型的程序员,他从1974年开始编程。曾在耐克和苹果等公司任职。他专攻修复和完善受损、被遗弃和"半生不熟"的Web应用程序,尤其是后台语言是PHP的网站。

    我从事自由职业已有十余年了,有时候在我有全职工作时我把它当做副业,有时候我只做自由职业。关于自由职业中如何成功地编程,我也学到了一些经验。

      1. 做你会做的事情

      客户付钱请你解决问题。他们对Haskell语言有多炫根本不感兴趣,而且他们也不想付钱让你去学习新的工具和编程语言。因为上一个程序员力不能及而退出或者被解雇,我接手这一类的项目,多的数不胜数。你应当拓展自己的技能以保持竞争力,而且不要因为其自身价值而过分喜爱时下流行的程序语言。(注:Haskell是一种纯函数式编程语言。)

      2. 不要独树一帜

      如果你掌握了一种新奇的、炙手可热的技术,那你当然可以使用它。但是,如果仅仅是因为看到会Lisp的自由职业者赚钱多就去学习Lisp,那你得仔细考虑一下自己如何跟他们竞争。当然,现今有很多PHP程序员,但大部分都是业余爱好者,你能轻易地跟他们竞争,并且有的是PHP工作去做。跟技术娴熟的、有经验的专家竞争少数工作更困难。别人能赚钱的工作你都想去做,但不打算做的更好,所以你在与一支六年级的队伍打篮球,而不是试图去加入NBA。

      3. 不要试图做所有事情

      注意不要忙于做技术支持、硬件安装、设计、艺术创作等工作。要坚持做自己擅长的。把那些你不擅长的工作发送给其它擅长的自由职业者,遇到同样的情况,他们也会发送给你。

      4. 不要接规模太大的工作

      如果很难用一张纸把项目描述清楚,或者整个开发进度要持续几个月甚至几年,那么你得注意了。通常,规模较大的项目对一个人来说工作量太大。如果你非常想接一个大规模的项目,那么,试着把它分成若干个小的子项目,每个子项目可以短期完成并有一个可交付的成果,这样你和客户就可以看到项目的进度和成果。

      5. 避开行为恶劣的客户

      如果客户看起来狂暴、专横、吝啬、贪婪、粗鲁、苛刻、霸道等,那么远离他们。去找其他客户。如果你很难想象与客户能够保持一种专业的、有报酬的工作关系,或者你感觉客户做的任何事情都很恶劣,那么拒绝他们。

      6. 大多数业务都是通过推荐得到的

      好好干,让你的客户满意,与其他自由职业者合作,构建能够推荐你并给你带来工作的人际关系网。

      7. 不要试图让它看起来像个“真正的”交易

      很多企业家过分注重积累公司的外在形象。你不需要花哨的网站、信头、办公室等。你可能甚至都不需要创建一个企业或者有限责任公司。除非你有员工或者一天能给客户开出72小时的账单,否则你不会赚到足够的钱来证明一切都制作精良或者能被认定为“专业”。你的客户不会在乎你在家工作,也不会在乎你没有排场。

      8. 采用源码控制和问题跟踪

      学会如何使用源码控制和基于网络的问题(bug)跟踪。在Wiki上记录每一个项目的需求、问题及决策。运用工具,让客户通过系统向你汇报bug。我使用ProjectLocker,现如今还有其他便宜的托管方案。不要浪费时间在你的服务器上搭建它。

      9. 追踪工作时间并定期开账单

      获取报酬最好的方式就是准确地记录工作时间,并定期向客户开账单。我喜欢按小时记录工作,每两周向客户寄发票。你不需要一个成熟的记账系统,现在有很多时间跟踪托管软件以及像BlinkSale这样的在线开发票方案,它们能帮你完成大部分工作。(编注:选用何种追踪工作时间的工具,请参阅伯乐在线编译的这篇文章《追踪时间的10个给力应用程序》。)

      10. 不要转包

      我提倡与其他自由职业者合作,但我不喜欢将工作转包出去。很可能给别人讲解项目并审核其工作完成情况所花费的时间,与你亲自完成这项工作所花费的时间一样长。不管怎样,任何跟你水平相当的程序员花费的时间都是差不多的。如果你认为在Craigslist找到了一个每小时收费12美元的程序员是捡到了大便宜,那祝你好运。如果你承担的工作多到你处理不了,那么试着将它转交给另一个懂得回报的自由职业者。

      11. 使用敏捷开发技术

      客户都想了解工作进度。对需求的错误理解,可能是你犯的错误中代价最高的。采用短期可交付成果和反复审核的敏捷开发技术,会让你的客户满意,也会让你远离繁杂的任务。你不需要向用户讲解敏捷开发,他们根本不在乎。只是告诉他们你如何做以及你需要从他们那里得到什么。

      12. 让客户及时了解项目情况

      在线发布工作进度,让客户了解你在做什么。对大部分人来说,编程很神秘,所以让你的工作进度清晰可见会使客户感觉跟你合作很舒服。我发现敏捷透明的开发过程可以防止账单纠纷,而且一旦客户习惯了你的高标准服务,他们便很少会把工作再交给其他自由职业者来做。

    阅读全文
    作者:驽鸟 | 分类:电脑网络 | 阅读:1阅读次数634 | 标签:, , ,
  • Windows XP 各个文件夹详细介绍

    适用系统版本

     Windows XP

    问题描述  

    windows
    文件介绍
     

    总结    
     
    ├WINDOWS  
    │ ├-system32
    (存放Windows的系统文件和硬件驱动程序)  
    │ │ ├-config
    (用户配置信息和密码信息)  
    │ │ │ └-systemprofile
    (系统配置信息,用于恢复系统)  
    │ │ ├-drivers
    (用来存放硬件驱动文件)  
    │ │ ├-spool
    (用来存放系统打印文件。包括打印的色彩、打印预存等)  
    │ │ ├-wbem
    (存放WMI测试程序,用于查看和更改公共信息模型类、实例和方法等)  
    │ │ ├-IME
    (用来存放系统输入法文件,类似WINDOWS下的IME文件夹)  
    │ │ ├-CatRoot
    (计算机启动测试信息目录,包括了计算机启动时检测的硬软件信息)  
    │ │ ├-Com
    (用来存放组件服务文件)  
    │ │ ├-ReinstallBackups
    (电脑中硬件的驱动程序备份)  
    │ │ ├-DllCache
    (用来存放系统缓存文件。当系统文件被替换时,文件保护机制会复制这个文件夹下的文件去覆盖非系统文件)  
    │ │ ├-GroupPolicy
    (组策略文件夹)  
    │ │  
    │ ├-system
    (系统文件夹,用来存放系统虚拟设备文件)  
    │ ├-$NtUninstall$
    (系统每打一个补丁,就会自动创建这样的一个目录)  
    │ ├-security
    (系统安全文件夹,用来存放系统重要的数据文件)  
    │ ├-srchasst
    (搜索助手文件夹,用来存放系统搜索助手文件,与msagent文件夹类似)  
    │ ├-repair
    (系统修复文件夹,用来存放修复系统时所需的配置文件)  
    │ ├-Downloaded Program Files
    (下载程序文件夹,用来存放扩展IE功能的ActiveX等插件)  
    │ ├-inf
    (用来存放INF文件,INF文件最常见的应用是为硬件设备提供驱动程序服务)  
    │ ├-Help
    Windows帮助文件)  
    │ ├-Config
    (系统配置文件夹,用来存放系统的一些临时配置的文件)  
    │ ├-msagent
    (微软助手文件夹,存放动态的卡通形象,协助更好地使用系统)  
    │ ├-Cursors
    (鼠标指针文件夹)  
    │ ├-Media
    (声音文件夹,开关机等wav文件存放于此)  
    │ ├-Mui
    (多语言包文件夹,用来存放多国语言文件。简体中文系统中这个文件夹默认是空的)  
    │ ├-java
    (存放Java运行的组件及其程序文件。)  
    │ ├-Web  
    │ │ ├-Wall*****
    (存放桌面壁纸的文件夹)  
    │ │  
    │ ├-addins
    (系统附加文件夹,用来存放系统附加功能的文件)  
    │ ├-Connection Wizard
    (连接向导文件夹,用来存放“Internet连接向导的相关文件)  
    │ ├-Driver Cache
    (驱动缓存文件夹,用来存放系统已知硬件的驱动文件)  
    │ │ └-i386
    Windows操作系统自带的已知硬件驱动文件
    │ ├-TEMP
    (系统临时文件夹)  
    │ ├-twain_32
    (扫描仪相关)  
    │ ├-AppPatch
    (应用程序修补备份文件夹,用来存放应用程序的修补文件)  
    │ ├-Debug
    (系统调试文件夹,用来存放系统运行过程中调试模块的日志文件)  
    │ ├-Resources
    (系统资源文件夹,存放系统SHELL资源文件,即桌面主题)  
    │ │ └-Themes
    (桌面主题都存放于此)  
    │ ├-WinSxS
    (存储各个版本的Windows XP组件,减少因为DLL文件而引起的配置问题)  
    │ ├-ime
    (输入法信息)  
    │ ├-PCHealth
    (用来存放协调、配置和管理计算机正常运行的文件)  
    │ │ └-HelpCtr
    (帮助和支持)  
    │ │ ├-Binaries
    (常用的msconfig就在这里)  
    │ ├-Offline Web Pages
    (脱机浏览文件存放于此)  
    │ ├-Prefetch
    (预读取文件夹,用来存放系统已访问过的文件的预读信息(此信息是系统在访问时自动生成的新信息),以加快文件的访问速度,其扩展名为“PF”。)  
    │ ├-ShellNew  
    │ ├-Fonts
    (字体文件夹。要安装某种字体只需将字体文件复制到该目录下即可)  
    │ ├-pss
    (用来备份系统启动配置文件的,一般对“Boot.ini”“System.ini”“Win.ini”三个文件进行备份,扩展名为“backup”。如果系统原有的这三个文件损坏的话,可以从这里进行恢复。)  
    │ ├-Registration
    (注册文件夹,用来存放用于系统COM+或者其他组件注册的相关文件。)  
    │ └-Downloaded Installations
    (存放一些使用Windows Installer技术的安装程序,主要用来对程序进行修复等操作)  
    ├-Documents and Settings  
    │ ├-Default User  
    │ │ ├-Application Data
    (通用应用程序数据文件夹。此处存放着已经安装的一些应用程序的专用数据)  
    │ │ ├-
    桌面  
    │ │ ├-Favorites
    (收藏夹)  
    │ │ ├-NetHood
    (网络共享目录)  
    │ │ ├-My Documents
    (我的文档)  
    │ │ ├-PrintHood
    (打印共享目录)  
    │ │ ├-Recent
    (最近打开的文档)  
    │ │ ├-SendTo
    (鼠标右键的发送到)  
    │ │ ├-
    「开始」菜单  
    │ │ ├-Templates
    (模板文件夹,可能有WordExcel等的模板文件)  
    │ │ └-Local Settings  
    │ │ ├-Application Data  
    │ │ └-Temp
    (临时文件目录。在系统和软件的运行过程中产生的临时文件就存放在于此。)  
    │ │ └-Temporary Internet Files
    Internet临时文件夹。)  
    │ ├-All Users
    (所有用户文件夹,这里的更改对所有用户有效)  
    │ └-Administrator
    (系统管理员帐户的文件夹)  
    ├-Program Files  
    │ ├-Common Files
    (共享的应用程序文件存放于此)  
    │ ├-Internet Explorer
    IE浏览器)  
    │ ├-ComPlus Applications
    COM+ 组件的配置和跟踪,一般为空)  
    │ ├-Windows Media Player
    WINDOWS媒体播放器)  
    │ ├-WindowsUpdate
    (用于Windows的升级)  
    │ ├-InstallShield Installation Information  
    │ ├-Uninstall Information
    (存放软件反安装信息)  
    ├-wmpub
    windows media service的目录)  
    ├-boot
    (一键还原等软件的文件夹)  
    ├-Inetpub
    IIS文件夹)  
    ├-Downloads(Flashget
    默认下载文件夹)  
    ├-System Volume Information(
    系统还原文件夹)  
    └-TDdownload
    (迅雷默认下载文件夹)
    Debug文件夹
    这是系统调试文件夹,用来存放系统运行过程中调试模块的日志文件,以便管理员根据这些日志文件来发现计算机所存在的问题。其中“UserMode”文件夹下存放的是当前用户的调试日志文件。
    ime文件夹

    是输入法文件夹,用来存放系统默认安装的输入法文件。Windows操作系统已经内嵌了东亚国家的输入法,如日语,韩文等  
    CHSIME
    :简体中文输入法;  
    CHTIME
    :繁体中文输入法;  
    IMEJP
    :日文输入法;  
    IMEJP98
    :日文98输入法;  
    IMJP8_1
    :微软IME标准20028.1版本输入法;  
    IMKR6_1
    :朝鲜语(IME20026.1版本输入法;  
    SHARE
    :东亚语系共享文件夹。
    Fonts文件夹
    这是字体文件夹,用来存放系统将会用到的字体文件。用户自己新安装的字体也会被存放在这个文件夹下的。其中英文的字体类型比较多,而简体中文字体文件只包括仿宋体、黑体、楷体、宋体和新宋体四个类型,即计算机编码中的GB2312
    Installer文件夹
    这里用来存放MSI文件或者程序安装所需要的临时文件。MSI文件是Windows 系统的安装包,右击文件在右键菜单中可以选择安装或者卸载程序。
    system32文件夹
    这是32位系统文件夹,用来存放系统重要文件的,同时一些应用程序在安装时也会将其相应的支持文件复制到这个文件夹里来。由于此文件夹下的文件和此文件夹众多,我们只列举一些具有代表性的文件夹
    CatRoot:用来存放计算机启动测试信息的目录,包括了计算机启动时检测的硬软件信息。
    Com:用来存放组件服务文件,运行其的“comexp.msc”就会打开组件服务控制台。
    DllCache:用来存放系统缓存文件,当系统本来的文件被替换时,文件保护机制会复制这个文件夹下的备份系统文件去覆盖非系统文件。
    Drivers:用来存放硬件驱动文件。如果删除其中的文件,会导致硬件失去驱动而无效。
    IME:用来存放系统输入法文件,类似去的IME文件夹。
    oobe:用来存放系统的激活信息。
    Restore:用来存放系统还原文件。双击运行“rstrui.exe”文件,就会调用系统还原功能。
    Setup:用来存放系统安装文件。
    spool:用来存放系统打印文件。包括了打印的色彩、打印预存等。
    wbem:用来存放WMI测试程序,用于查看和更改公共信息模型类、实例和方法等。

    阅读全文
    作者:驽鸟 | 分类:电脑网络 | 阅读:1阅读次数555 | 标签:, , ,
  • 程序员从初级到中级10个秘诀

    Justin James曾发表过一篇博文《10 tips for advancing from a beginner to an intermediate developer》,为我们分享如何才能完成程序员从初级到中级的蜕变,现将中文译文转载于此,供大家借鉴。 在一封与TechRepublic会员交流的邮件当中,他提到了面向程序员的博客、文章及杂志分成两类:面向初学者类(“hello world”这种类型的教程)以及面向专家类(MSDN杂志)。这个观点很好,有关程序员如何从初级跃升到中级的信息极少。以下是为了实现这种转变需要你去做的10件事。

    1.学习另一门语言 其实你学的是哪一门语言并没有关系,但是学习另一门语言(不管你已经了解多少种语言)将把你打造为更好的程序员。能学会一门与你日常使用的语言风格迥异的 语言则更佳。打个比方,如果你是C#程序员,学习VB.NET或者Java对你的帮助就没有学习Ruby或者Groovy大。 我说“学另一门语言”的意思是要真正学会它。学习一门语言包括三个领域的知识:语法、内置操作符和库,以及“如何使用”。前面两个简单;我认为一名有经验 的程序员,根据语言的不同,能在半小时到几小时内掌握足以维护代码的语法知识。操作符和库只不过是知识逐步积累的过程,你什么时候想清楚要了解什么了,再 去查阅参考材料也不迟。只有第三项,“如何使用它”-要花上你几个月的时间去跟这门语言打交道,真正的奇迹就在此发生。我建议用这门语言的风格去做一个适 合该语言的项目。 真正学会了另一门语言之后,我敢保证你的程序员水平一定会突飞猛进。

    2.学习先进的搜索技术、手段和及策略 作为一名好的程序员,不仅仅是技能的问题了,而是你寻找信息的技巧,这个趋势越来越明显。对大部分人而言,仅仅输入“现代语言及开发框架”,这都是泛泛之 谈,记不住多少的。因此,你完成工作的能力通常取决于你的检索能力。不幸的是,了解到如何找到准确而高质量的信息可不仅仅是跑到TechRepublic 来找答案,或者在你选好的搜索引擎上敲几个字那么简单。 “技术(Techniques)”、“手段(tactics)”和“策略(strategies)”看起来是一回事,实际上并非如此。你需要学会的技术是 掌握你喜爱的搜索引擎的高级搜索系统;你需要了解诸如布尔操作符,如何过滤结果(像“非”关键字,域限制等等),关键字的词序扮演什么角色,等等。一句 话,RTFM(Read The Fucking Manual,读那些他妈的手册)吧。 你应该学会这些手段,诸如如何接近特定的搜索,以及了解自己实际上想查些什么。查错误很容易—只需查出错代码即可—但是许多搜索的关键字选择要困难得多。 至于策略,你需要学会的东西,包括像应该使用哪种搜索引擎(提示:普通的搜索引擎不一定就是最佳选择),使用普通搜索引擎前应该访问哪个网站,甚至是应该 到哪个论坛去寻求帮助,等等。

    3.帮助别人 教别人始终是学习一切东西的最好方法之一。相对而言,由于你在开发领域还是个新手,认为自己没什么可教给人家的,这可以理解。但这毫无意义。记住,你所学 到的一切都是你从别人或别处学到的;因此请尝试一下,成为另外一个人要请教的“别人”。每天尽量花一点时间试着回答TechRepublic上的问题,其 他网站的亦可。读读其他会员的回答,你也可以学到很多东西。

    4.有耐心,常练习 研究表明,要成为一名“专家”,需要花费10年,或者10000到20000小时的刻意练习时间。真的很久。还有,成为专家不尽然就是执行10年同样的任 务;通常这意味着要在特定领域内执行广泛的任务。需要花费大量的时间和精力才能成为“专家”;做几年程序员是不够的。想在30岁左右成为一名高级软件开发 工程师?要么尽早接受教育/培训,要么你得愿意在闲暇时间进行大量的工作、阅读和练习。我从高中开始编程,还牺牲了许多休息时间去跟踪行业发展、学习新技 能等等。结果,我获得中级和高级程序员的时间就比我的大部分同事都要早得多,随着时间的推移,这些就转化成为很多的金钱。

    5.对教条拒之门外 是时候开诚布公了:也许初级程序员了解的东西还不足以说出做某件事情有一种最好的方式。尊重朋友或者权威的观点是好的,但直到你更有经验之前,不要把他们 的观点说成是你自己的。很简单,如果你所了解的不足以让你独立地找出这些东西来,你又怎么会认为你知道哪一位“专家”是对的呢?话是难听了点,不过请相信 我;由于受某些愚蠢建议的蛊惑,或者追随某些根本不知道自己在说些什么的所谓专家,白白把自己的职业生涯耽搁了几年,这样毛头小伙程序员,我见过多了。这 一点有一个很好的例子,就是面向对象结构的滥用。比如说,许多初级者读了一些有关面向对象的信息后,突然间,他们那简单的应用程序的类图看起来就像埃菲尔 铁塔一样了。

    6.深入学习一点先进理念 成为一名中级程序员,很大一部分是要在代码里面体现出一些所擅长的概念。就我而言,是多线程/并行性,是正则表达式,以及如何对动态语言进行变化(后两个 在我离Perl渐行渐远后开始退化)。这是如何发生的?多线程和并行处理是因为我读了相关文章,觉得它看起来很有趣,然后再自己把它弄清楚了;然后我就一 直使用这些技术来写应用。我做过一件工作,是用Perl写的,里面运用了大量的正则表达式。我也用一个过程引擎模板和内置数据库系统写过我自己的电子商务 引擎;那时我几乎花了2年时间在这上面。 找到真正令你着迷的东西。也许是图像处理,也许是数据库设计,等等。即便你是一个入门级的程序员,也要尝试一下成为某一自己所关注领域的专家。这会让你相 当快速地进入到中级水平,一旦你到了那个水平,你的专家之路也走到一半了。

    7.学习你的领域里面的基本理论 写出“Hello World”,跟理解那些字是如何显示到屏幕上的是两码事。通过学习支撑你所从事的工作的“基础/底层工作(groundwork)”,你会变得更加在 行。为什么?因为你会理解事物为何会以这种方式运作,当东西坏了就能知道是哪里的问题,等等。通过掌握工作的底层机制,你变会得更出色。 如果你是Web程序员,读读HTTP RFC和HTML规范。如果你使用代码生成器,好好看看它生成的代码;如果你使用数据库工具,看看它生成的底层SQL语句,不一而足。

    8.看看高级程序员的代码 在工作中看看高级程序员写的代码,然后问一问事情是如何以某种特别的方式完成的,为什么?可能的话看看开源的项目。甚至即使其他程序员没有最好的编程习 惯,你也会学到许多编程经验。当然,要小心别学到坏习惯。我的意思是说不要生搬硬套人家的东西;你要能领会到哪些是能行的通的,哪些是有道理的,然后再模 仿人家。

    9.学习好的习惯 愚蠢的变量名,糟糕的缩进习惯以及其他一些凌乱的迹象就是一个没有经验的程序员的最好标记。一个程序员在学会如何编程时,却经常没有被传授到那些不那么有 趣的细节,像代码格式编排。甚至尽管学习这些东西并不会令你的代码更好,也不会令你成为更好的程序员,它也会确保你不被同事视为入门级的程序员。甚至即使 某人是高级程序员,如果他的变量是以他那97只猫的名字来命名,或者其函数叫做“doSomething()”的,他们看起来也不像是知道自己在干什么的 人。而且会令其代码在过程中更难以维护。

    10.要玩的开心 想要痴迷于单调乏味的工作?痛恨工作吧。要想升级为中级程序员可不仅仅是为了拿到不断增长的工资不达目的誓不罢休,而是要真正享受工作。如果你不喜欢自己 的工作,且还是初级程序员,你怎么会认为成为中级或高级程序员情况就会有所好转呢?换工作或改职业吧。反过来说,如果你喜爱所从事的工作,那就好!只要你 坚持下去,我保证你能成为一名更好的程序员。(Justin James)

    阅读全文
    作者:驽鸟 | 分类:电脑网络 | 阅读:1阅读次数605 | 标签:, , ,