一个屌丝程序员的青春(二五二)

版权声明:欢迎转载,但是看在我辛勤劳动的份上,请注明来源:坦GA的博客(未经允许严禁用于商业用途,违者将追究法律责任!)。文中如有错误,欢迎批评指正,谢谢。 https://blog.csdn.net/tanga842428/article/details/80980702

    像《喜剧之王》中出现的那本书《演员的自我修养》一样,程序员也要有“程序员的自我修养”。

    伟大的C语言在1973年初具雏形,大体上第一批程序员诞生于1970年代。50年以来,这个程序员群体的人数正以极快的速度增长,不仅形成了一个独立的职业,更有着向全民普及方向发展的趋势。

    贾建认为的“程序员的自我修养”中程序员应该具备的素养有哪些呢?

    一、攻无不克的信念

    编程是一个宽泛的概念,除了纯粹的编写代码以外,还需要解决与编程有关的其他一切问题,也包括学习各种技术。在这条道路上有着各种险阻、高山、坑洼会阻碍自己前进。不论遇到何种难关,都要秉持着攻无不克的信念,久攻之下,安有不破之城?解决编程问题往往需要灵感,而这种信念可以为不断地迸发灵感起到积极作用。

    二、完善的知识体系

    “工欲善其事,必先利其器”,程序员的“器”便是在编程或学习中汲取的经验和知识。你的知识体系越宽泛,涉猎面越广阔,解决问题的办法就越丰富,但知识的深度不可浅尝辄止,需深耕并逐步完善。

    三、耐心、细心、严谨

    从编码规范到撰写说明文档,在编程的各个环节都应保持严谨的态度。没有规矩不成方圆,严谨看似浪费时间,从长期来看,恰恰是在节约时间。

    到目前为止编程依然是一门精细活,这意味着缺少细心和耐心的程序员将无法写出优质的代码。

    四、数据结构、算法、数学、英语

    数据结构充斥于编程的各个角落。在编程领域,没有哪一门课程比大一即开设的《数据结构》更重要。不管现代编程如何的纷杂和演变,大到修理原子弹,小到使用字符串,都离不开数据结构。数据结构的优劣直接决定上层逻辑的成败。

    算法有很多定义,此处主要特指具备时间复杂度的算法或根据某种原理实现的算法,编程即为将算法思维落地为源码。程序员不应沦落为使用他人算法的搬运工,而应是实现者,甚至是创造者。

    数学是理工类科学之母,代数、概率统计、微积分等都是程序员必须掌握的。

    英语也是特别重要的,好多官方技术文档都是用英文撰写,英语不好就等于失去了同行之间的竞争力。

    五、“懒人”的专属能力:抽象

    抽象是一名程序员应该具备的基本能力,合理的抽象将使设计更加优异,代码更加精炼,维护更加轻便。需要程序员从纷繁复杂的表面现象中提炼出共性,从而降低复杂度。

    六、天时、地利、人和

    个人英雄主义式的编程已经过时是普遍的观点,团队协作已经成为现代编程必不可少的环节。想要开发出成功的软件系统,需要天时(机遇)、地利(技术条件)、人和(协作)方能水到渠成、事半功倍。

    七、编程是门艺术

    编程虽然属于工科,但它也是一门艺术,只是它的艺术之美不像音乐、油画易于被公众所知,它往往是幕后的、隐藏的。创造一副油画,艺术家会融入自己的创作激情。同样地,编程也需要融入程序员的激情。如果一批代码的编写者缺少创作激情,那么这批代码是缺少灵魂的,是没有美感的,甚至是不可复用的。

    八、沉着的诊断技巧

    程序员的天敌便是Bugs(导致代码不能按照预期设想运行的漏洞),诊断和修复Bugs是程序员的家常便饭,即便是最优秀的代码,也应假定存在未知的Bugs。当遇到棘手的Bugs时程序员应沉着冷静,坚信计算机问题始终是能被排查清楚的,善用诊断方式、实验室方法、网络信息检索、社区、官方文档等手段对Bugs进行排摸和推敲,从而最终锁定和解决Bugs。

    九、愿景是产生内驱力的源泉

    做成一件事的动力来源于内驱力和外驱力。以内驱力为主导的程序员会真心实意地追求工作的严谨、追求代码的艺术、追求产品的质量。内驱力不会凭空产生,愿景是产生内驱力的源泉。

    由此衍生出另一个话题:如何管理好程序员?有两种管理学观点,X型和Y型理论(由Douglas McGregor于1957年提出)概括来说,X型:人天生是懒惰的,需要通过利益或惩罚手段来迫使人们完成工作;Y型:人天生是勤奋的,只要条件允许,人可以能动地为完成工作投入智谋和创造力。Y型的内驱力管理模式更适用于程序员岗位。

  

    

阅读更多

没有更多推荐了,返回首页