当前位置: 首页 > news >正文

Fastcgi做网站网站的规划建设如何布局

Fastcgi做网站,网站的规划建设如何布局,成都品牌包装设计,公司备案的网站被别的公司盗用你好#xff0c;我是Z哥。这篇文章主题很简单#xff0c;就是一个很常见的话题“什么是高级程序员#xff1f;”。文章稍微长了些#xff0c;但是很容易阅读。我们的中国文化#xff0c;对“面子”看的特别重#xff0c;所以你会发现身边到处都是高级XXX#xff0c;听着… 你好我是Z哥。这篇文章主题很简单就是一个很常见的话题“什么是高级程序员”。文章稍微长了些但是很容易阅读。我们的中国文化对“面子”看的特别重所以你会发现身边到处都是高级XXX听着倍儿有面子程序员也不例外。但是你真要问每个人你认为的高级XXX是什么样子的。估计每个人都有不同的回答。我还记得在我刚开始从事编程工作的时候对坐在边上不远的那位我心目中的高级程序员的印象是工作至少有6、7年以上能写一个用起来很方便、看起来很牛逼、但是不太容易让初级人员看懂的框架。前两天我把这个问题丢到群里大家给出的答案中占比最高的是以下几个。有 N 年以上编程经验大部分都说5年以上有出版过技术图书对某领域内对常用框架原理有了解并且实际使用超过2年可以随时随地快速写出常见的一些算法至少封装过一个被全局使用的开发框架写出来的代码阅读起来很好理解能带领其他人员成功完成项目你看这件事对大家来说就是常说的“一千个人眼中有一千个哈姆雷特”。不过这也正常毕竟像初级、中级、高级这种高度抽象的词汇想要得到一个可描述的定义与人交流必然需要夹杂着个人的主观因素。但是很多行业都在这么进行分类自然有它的道理和好处。我觉得其中最大的一个好处恰好是「主观」的附属品——「弹性」。比如我现在想招一位高级程序员面试的时候不管是通过还是不通过我都有理由来解释我对“高级”的定义。如此一来我对陌生人的判断就有了更大的「弹性」。这其实是面试官的一种权利也是长期以来面试者总在面试中处于下峰的原因之一。事物总是有两面性的我们在对陌生人弹性的同时间接的也对内部的人弹性了会导致内部的一些人才培养出现问题。比如你觉得内部的高级程序员不够希望能在外部招聘的同时从内部也培养一些出来。但是此时你又面临了需要定义什么是“高级”的问题。如果没法定义一个能够达成共识的标准又如何指导培养的方向呢只能是一句空话。长期以往会导致更严重的问题真正的高级程序员不够只能让中级程序员顶上。顶替的时间长了会让一些中级程序员误以为自己已经达到了高级水平。在我平时的面试中这样的案例屡见不鲜。网上流传的工作10年 1年重复10次的段子是真实存在的。下面我来聊聊我对「什么是高级程序员」的个人看法欢迎你和我一起探讨。不管是什么行业什么岗位在这个高度分工协作的现代社会所需的能力主要分为三个维度。专业能力连接能力领导能力我对程序员在这三个维度的理解大致是以下这个样子。先卖个关子文章的最后我会将这三个维度组合起来你会发现一片新的天地。根据这三个维度的水平差异我们对初级程序员、中级程序员、高级程序员做一个简要的描述。01初级程序员 - 知道有事要做处在初级阶段的时候我们的精力大多只会专注在专业能力的提升上。这个时候「领导能力」和「连接能力」是很弱的。所以这个时候哪怕你有强烈的好奇心也无法很好的表达出来大多只能被动的接受工作安排。在这个时期做事情需要依赖一些教程、文档只能“依样画葫芦”几乎不能在不借助外部信息的情况下解决之前从未遇到过的新问题所以百度、Google就成了他们唯一的选择。你可以在你的身边观察一下如果经常有以下这些场景出现大多是初级程序员的表现。很难提出正确的问题大多会直接问别人这个功能应该怎么做。如果你清楚地向他解释他就会完全按你说的去做甚至你写的示例代码都会copy过去。因为在他们的世界里只有编译成功和编译失败任务完成和任务未完成。经常犯错误所以会预留过多“弹性时间”以便有时间在到期日之前重做。所以总会抱怨“没时间”。对与自己有工作交集的人员的职能没有认识。比如对测试人员总是充满敌意的因为他们发现了错误“阻碍”了自己完成工作。还没注意养成一些好习惯比如习惯性的提炼重复代码、编写风格一致的代码、自测等等。很遗憾看似很初级的阶段并不只是刚踏入工作的程序员所属在实际工作中也有不少工作多年的人还处在这个阶段。02中级程序员 - 知道如何做某事对人群按照单一维度进行划分大多数时候都是符合正态分布的这里也不例外。中级程序员是我们身边最多的包括那些不得不穿上高级程序员马甲的中级程序员。在这个阶段有些中级程序员开始具备了一定的「连接能力」但并不是所有人主要看是不是拥有了「共同体意识」。在专业能力上中级程序员已经明白了一定的「整体与局部」的概念但仍然看不到整个“森林”大多局限在某个模块、流程上。比如他们会想“这是做敏捷的正确方式吗”但不会考虑“这对整个团队、整个公司会产生什么实际的影响”。他们开始注重代码质量因为担心低质量的代码会影响他们视野中的“整体”。但是对于质量的理解还是比较单一。比如这个时候你会经常听到他们把「性能」挂在嘴边在他们心目中「性能」的地位是至高无上的总是想着你这个方案和我的方案哪个性能更好。同样可以观察一下周围中级的开发大多数会这样做事。针对一个问题可以提出多个方案但是无法做出准确的决策。一旦更权威的人给出了他的选择中级程序员就会不假思索的按照建议执行。可以看出代码中的一些设计模式但是自己写代码的时候除了单例和工厂其它的几乎想不到。在讨论一些时髦的框架和技术的时候总能聊上几句但是追问这个框架或者技术有什么缺点基本说不上来。甚至草率的在项目中运用上这些时髦的框架和技术最终导致线上问题频发不得不让高级程序员来收拾残局。能够对自己完成任务所需的时间有准确的评估但是评估他人的时间不会因人而异也会以自己作为标准来评估。对与自己有工作交集的人员的职能有了一定的认识。比如会主动寻求测试的配合帮助自己交付更高质量的项目。其实这个阶段是最危险的阶段因为最可怕的不是无知而是一知半解。心理学中的邓宁-克鲁格效应(The Dunning-Kruger Effect)讲述的就是这个问题。两位社会心理学家在1999年做的4项研究证实了下面的这个曲线的存在。在这种状态下人最容易高估自己这也是很多导致产生很多“假高级程序员”的原因所在。03高级程序员 - 知道必须做些什么高级程序员在「专业能力」、「连接能力」、「领导能力」这三个维度都有所建树。因为他们不但可以把从1到100的事情做得很好也有能力带领其它人完成0到1的事情。根据我身边所接触的程序员群体来看我所认为的高级程序员他们明白没有什么是完美的相反问题、缺点和风险总是存在的。他们的决策总是站在为了整体的「平衡」角度去考虑而不是技术的酷炫或者外界流传的所谓“正确的”技术。他们会更多的关心那些不显而易见的东西如可维护性可扩展性易阅读易调试等等。高级程序员就好比社会中的成年人他们踩过足够多的坑也填过足够多的坑已经认清了现实的残酷寻求适合而不是完美。周到、务实、简单是他们做事的时候强烈散发出的“味道”。可以根据下面的这些场景来看看你身边有多少“有味道”的高级程序员与初级和中级程序员不同他们抛出问题不是为了正确的做事而是做正确的事。他们会询问为什么要这样做以及你想要实现什么。当你告诉他们目标是什么后他们或许会通过暗示这种方式是错误的而另一种更好来做出一些修正当然更重要的是还会提供论据说服你。因为提前明确了做事的目标所以在动手做一件事的过程中他会在关键细节思考有没有更好的方法甚至是那些不在之前的讨论范围的新尝试。他可以轻松地承认他不知道什么并且向你请教。同时也可以轻松地向他人讲清楚他所知道的事情。他们理解合作的人员的职能的作用不但知道什么时候向谁寻求帮助还知道自己如何更好的帮助他们。困难的事交给他们很放心因为他们擅长的不是某种技术而是解决问题的能力。他们总能解决那些之前从未遇到过的新问题哪怕它们很困难。那么怎么做有助于我们成为高级程序员呢01关注技术之余还要关注业务为什么把它放第一点因为我觉得这点最重要是其它项的基础也最容易做到。但是很多程序员不愿意去做。一定要搞清楚业务目标不搞清楚不开工。相信我只要是一位合格的leader一定会不厌其烦的和你说清楚的。然后要习惯基于业务目标去分析可能会面临的技术挑战。比如多少流量涉及哪些用户角色和功能复杂度有多大等等。再带着下面的「不可能三角」去寻找合适的技术框架、解决方案。尽可能的寻求最优的平衡而不是走极端。如果拿捏不准可以将多个方案各自的优缺点罗列出来向Leader寻求建议。02“设计”代码而不是“写”代码一般人可能拿到需求就开始写代码了写着写着由于页面功能越来越多感觉代码越来越复杂自己都会觉得难以维护了。虽说要做好设计离不开大量的实战经验的积累。但是还是有些方法可以让塑造这个能力的过程更快一些。比如首先就是前面提到的第一点多关注业务。不了解业务你啥都设计不出来。或者把马设计成了驴……如果某个功能的开发/修改以“天”为工时单位一定要先画图。具体画什么图可以参考我之前写的文章。搞明白每个设计模式的特点和适用场景注意不需要把代码怎么写背下来。只要你每次写代码之前扫一眼设计模式的列表看看有没有适用的。如果有的话再去“依样画葫芦”按照设计模式去实现经过时间的积累慢慢地你真正掌握的设计模式就越来越多了。这有助于锻炼你的设计能力。03“接”需求之前会先“砍”需求要做这点还得依赖于第一点否则你提出的“砍”需求建议大多是不会被采纳的。很多人在听需求讲解的时候思考的是这个功能能不能实现、怎么实现、难不难。大多数的提问也是基于这个思路展开的。可能也会提出“砍”需求的问题但是理由大多是这个实现起来太麻烦了这个没法实现之类。其实只要你时刻保持着“做这个需求的目的是什么”这个问题去思考“砍”需求会变成一件更容易成功而且自然而然的事情。04解决一类问题而不是一个问题很多人觉得每天看到bug清完就万事大吉了。哪怕同一个问题在生产环境出现多次最多也就说一句“不会吧怎么又出问题了”。这种对待问题的方式只会让你越来越忙因为你的解决问题效率与投入的时间多少是成同比变化的。我们要习惯于解决掉一个bug之后想一下能否通过什么方式找到现有代码中的同类问题并把它们处理掉。甚至是考虑有没有什么办法能够一劳永逸的避免此类问题再次发生比如封装一个SDK或者写一个组件尽可能用一种低侵入的通用方式将问题扼杀在摇篮里。不但让自己轻松了也造福了大家。05遵循KISS原则写尽可能简单的代码KISS 原则保持简单愚蠢Keep it simple, stupid。不单单是程序员任何化繁为简的能力才是一个人功力深厚的体现没有之一。越简单越接近本质。就好比有的人要用长篇大论才能讲明白一件事而有的人只要做一个形象的比喻你就懂了。这个「简单」指的是整体的简单而不是通过局部的复杂让另一个局部简单。比如为了上层的使用更加傻瓜化底层封装的代码错综复杂、晦涩难懂这并不是真正的“简单”。如果你自认为已经是一个中级或者高级程序员了那么你回头去看看自己还是初级程序员那会写的代码就会很容易发现一些显得冗余的代码。第二点提到的——「“设计”代码而不是“写”代码」对做好这点有很大的帮助。06选择忍受某些问题在人工智能还不能代替我们coding之前我们永远要亲自面对无穷无尽的、这样那样的问题。然而任何事物都有两面性的一个方案在解决一个老问题的同时总会带来新的问题。所以我们一定要意识到忍受某些问题是必然的。那些你现在看起来很傻逼的设计可能就是当时的人做出的妥协。所以既然如此你更应该考虑的是当前的这个问题现在到底有没有必要解决值不值得为什么之前没去解决它是不是你当前所有待解决问题列表中优先级最高的07打造自己的“T型”专业技能可能很多人都听过“T型人才”的概念我们程序员在专业技能的打造上也适合用这种模型。但是对于“先竖再横”还是“先横再竖”可能不同的人有不同的看法。我的观点是大多数情况下先竖再横。特别是某个技术、领域发展的越成熟越应该如此。因为很多事物的本质是一样的所以对某一个领域达到非常深入洞察到一些本质的东西之后对其它相邻的领域有触类旁通的效果。可以加速自己在「广度」上的扩展。不过「广度」也不是说蜻蜓点水只知道最表象的“它是什么”。我认为比较合适的程度是可以不用清楚某个技术具体的使用方式但得知道它可以解决哪些问题以及使用成本和潜在的风险我将这些信息概括为“它怎么样”。08构建自驱动的“闭环”很多人都知道闭环的概念但是它的重要性和价值往往被低估。因为人总是短视的“聚沙成塔”之类的方式总是不受待见。常规的搭建一个闭环的过程大多是这样的。这里所说的自驱动的“闭环”是这样的。如何才能变成这样呢只要做一件事尽可能多的对外输出自己的知识。举个我自己的例子我在2015年那会在项目中开始引入领域驱动设计并且不断的在内部进行分享它的好处慢慢地越来越多的项目开始往这个方向走。因为前期的不断分享所以在组织内部别人对我的人设多了一个“DDD专家”的标签那么大家遇到有关DDD的问题就会来和我一起探讨。越到后面我已经不用自己主动去寻找这个领域的知识去学习了因为接收到的外部反馈已经足够多了它们能够倒逼我往前走。并且这些反馈都是实际的真实场景此时的信息获取和学习自然能达到「学以致用」的效果。说实话有不少人并不是这么想的他们想的恰恰相反“为什么每个人都在问我问题你自己去学习吧”。所以当你遇到其他人来请教你的时候如果恰巧这是你所关注的领域那么应该去拥抱这个问题而不是排斥它。因为你是团队里最权威的人这是你构建自驱动“闭环”的好机会。错过这一回下一回不知道得等多久。前面文章里说到我会将「专业技能」、「连接外部的能力」、「领导力」三个维度组合起来给你看。就是下面这个样子。你会发现这里面包含了程序员在进阶后的几个常见岗位。可以对号入座一下D好了我们总结一下。这篇我先和你聊了一下在大家眼中高级程序员是什么样子发现没有特别统一的标准都是模糊的。这也体现在了几个现实的场景中比如招聘高级程序员、培养高级程序员上。其次我对初级、中级、高级程序员的特点分别阐述了自己的观点。然后给出了一些帮助大家往高级程序员靠拢的实践思路。希望对你有所启发。最后用Martin Fowler的一句话作为结尾“任何傻瓜都能写计算机能理解的代码优秀的程序员编写人类能够理解的代码。”Any fool can write code that a computer can understand. Good programmers write code that humans can understandMartin Fowler希望看到这篇文章的每个程序员最终都能成为头发茂盛的码农D原创不易如果你觉得这篇文章还不错就「在看」或者「分享」一下吧。鼓励我的创作
http://www.zqtcl.cn/news/560620/

相关文章:

  • 文交所网站开发wordpress页面编辑插件
  • 丹徒网站建设价格做矿产公司的网站
  • 北京的制作网站的公司在哪里软件程序员
  • 企业网站怎么扣费的网站建设合同的性质
  • 聚美优品一个专注于做特价的网站如何制作个人网页兼职
  • 滨州做网站的公司最好wordpress主题
  • 福州网站设计软件公司dw网站开发流程
  • 合肥网站搭建公司哪家好深圳二维码网站建设
  • 东莞微信网站开发免费html模板素材网站
  • 海淀专业企业网站建设青岛平面设计公司
  • 北京正规网站建设比较wordpress cookies因预料之外的输出被阻止
  • 自助微信网站设计什么叫一级域名二级域名
  • 上海 顶尖 网站设计wordpress多站点不同主题
  • asp c 网站开发wordpress 动静分离
  • 服装网站建设规定wordpress禁止自动升级
  • 如何在网站上做社交的链接毕设给学校做网站
  • 网页设计与网站建设指标点您身边的网站建设顾问
  • 个人网站的制作广州网站优化招聘
  • 做网站产生的流量费怎么算软件开发前景和收入
  • 网站空间 .de单页型网站
  • 网站建设com品牌建设的作用
  • 优质作文网站柳州做网站去哪家公司好
  • 呼和浩特网站建设价格网站建设服务器
  • 做的比较好的电商网站西安有那些做网站的公司好
  • 哪个网站可以做英语语法题智慧云建筑信息平台
  • 网站怎么做百度才会收录金乡县网站开发
  • 深圳移动网站建站网站如何做播放线路
  • 深圳网站建设q.479185700惠哪个网站可以免费设计房子
  • 迁西网站开发网站建设技术网站建
  • 网站建设与管理课程报告能够做外贸的网站有哪些