工程师最重要的能力是什么

        手机响了,是一个实施工程师打过来的,说现场的数据采集不上来,问怎么解决。我问软件的版本,仪器的型号,操作系统的信息,具体的问题描述。我告诉他可能是什么原因,给了一个解决办法,让他尝试一下。他试了一下后,说还是不行,又问怎么办,于是我又给他一个办法,他又去尝试了,反馈回来说还是不行,又问我怎么办。我然后我又给他提供方案,继续解决……终于解决了。

        这种场景不是一次两次了,也不是一个人两个人用这样的方式解决问题了。实际上,问题并不复杂,有些甚至很简单,简单到只需要把重启一下软件就可解决的地步。但是,很多人依然不知道怎样解决问题。类似的情况还包括开发人员在编程遇到bug的时候,无法独立搞定,也一直问同事该怎么解决。

        我们部门有个架构师,他一直从事的是c++语言的开发工作,几乎c++任何方面的疑难问题他都能很快解决。项目上需要使用移动应用、大数据技术、java、js、python等不同开发语言开发时,他也能从头很快学起,为大家指明方向,搭建框架,遇到新问题,总能找到解决办法将问题解决,保证了项目的进度和质量。

        我时常想为什么出现这种现象?工程师最重要的能力是什么?我认为是解决问题的能力。能够独立、快速、有效的解决问题,是起码是一个优秀工程师必须具备的能力之一。具备解决问题的能力的人自然拥有了一项自己的核心竞争力。他人解决不了的问题,你能解决;他人摆不平的事情,你能摆平;他人搞不定的麻烦,你能搞定。遇到加薪升职的事情,哪个老板不得想着你?想起一句话,越想越有道理:“搞定就是稳定,摆平就是水平”。

        如何培养解决问题的能力呢?这个话题可能有些大,我想到以下几点:

        1、首先要有责任心,把心态摆正,把这个问题当成自己要独立处理的问题,不要总觉得有靠山、有退路。我清楚得记得有个实施工程师,在现场给同事打电话,说设备的数据采集不上来。后来同事问了一下,原因是采集数据的软件没有安装。这真是让人哭笑不得。就像一个人买了辆汽车,给销售打电话说汽车怎么踩油门也不动,原因是汽车没有插入钥匙发动起来一样。稍微有一点知识,用脑筋想一想,就不用出现这种低级的笑话。如果总觉得这个事情即使你不做,也会有人做,来帮你做,那么,就容易出现懒惰现象,往床上一躺,打个电话,让他人解决,自己在那里睡觉。这种状态是不可能有任何解决问题的能力培养出来的。只有把事情当成自己的事情,自己要面对和解决的问题,才能踏下心来想怎么解决这个问题,才有可能自己独立解决这个问题,才有可能通过解决这个问题,积累类似的解决问题的经验和教训。否则,永远处于0的状态,不会有任何进步。

        2、需要储备一定的知识和技能。这是前提。老板也不会安排一个厨师去给客人理发。所有安排给你的任务,大概率是在你从事的相关技能领域内,至少能沾点边。一个工程师总得有一点是自己擅长的,熟悉的。这个技能或者特长,需要一定时间的积累,例如上大学所学的专业或者参加某个知识培训班而掌握的。学到了知识,掌握了技能,就具备了解决这个领域内的问题的基本前提。有了这个前提,一个工程师才有能力解决某个具体问题。如果你还不具备这个前提,可以现在就开始学习了。

        3、深耕你的技能。具备了一定的技能,是能够解决一些常见的问题了,但是想要解决更多更复杂的问题,则需要更高深的专业技能。这就是高手和牛人的要求了,想成为高手,必不可少的要花费更多的时间和精力去提升技能。”一万小时理论”阐述了一个人要想成为某方面的专家,就需要一万个小时的积累。这或许没有什么捷径可以走,但要掌握好解决问题的技能,总会有一些好的方法,能够加速掌握技能的时间。就像学生时代有的同学掌握了适合自己的学习方法,就达到了事半功倍的效果。好的方法是需要自己多思考多揣摩多实践,慢慢总结出来的一个套路,这就需要平时多学多练。总之,你得先付出,并且在付出努力的过程中,不断总结提炼,才能把你的技能练得炉火纯青。

        4、形成解决问题的思维和方法。具备了深厚的技术技能,由于一个人的精力有限,也往往是某一方面的。当问题的发生超出了一个人所熟知的技术领域时,就需要具备一定的解决问题的思维和方法,才能进一步解决问题。例如一个实施工程师如果只是对所实施的软件了如指掌,而对现场的计算机网络、数据库等一无所知的话,他还是解决不了最终的问题。所以,他需要一个全局性的视野,与问题相关的方方面面,他都要有所了解,才能综合分析出问题的根源所在,进而找到解决问题的方法。解决问题的思维包括解决问题的步骤,第一步做什么,第二步做什么,问题之间的关联,如果第一步怎么样了,那么第二步应该做什么。具备了解决问题的思维和方法,即使缺少相应的某一方面的技能,也能通过学习使其具备一定的临时性的技能,从而推进解决问题的进度。在解决问题时,注意最好多想一步,敢于突破自己的极限,要相信自己的潜力。

      5、善于总结,形成知识库。解决完一个问题后,要注意进行总结,最好记录下来。拿编程来说,经常遇到这样的情况,遇到一个bug,花了一定的时间和精力解决了,很高兴。过了十天半个月,可能又遇到了同样的bug,这时只是记得解决过这个bug,但具体怎么解决的,忘记了,还需要重新查找资料,又花费了不少时间来解决它。虽然最终还是解决了,但还是浪费了不少时间。如果在解决问题过后,及时记录下解决的方法和步骤,再次遇到同样的问题时,就能很快将其解决掉,这么一来,省下的时间都是自己的。这有点像学生时代的“错题本”,有时一道题做错了,下次遇到的时候,还可能犯错。因为这正是一个学生掌握不好的地方,知识薄弱的地方。有了“错题本”,针对错误的题目加深印象,学习时多关注一些,再遇到类似的题目时,就变成了熟悉的知识了,也就不容易错了。随着解决的问题越来越多,自己形成的知识库越来越庞大,工程师的能力自然越来越强。

如何增强解决问题的能力,还有很多途径和方法,条条大路通罗马,只要认真对待问题,相信那句话:世上无难事,只怕有心人。

原文链接:https://blog.csdn.net/BeyondHaven/article/details/78494936

win10出现“你不能访问此共享文件夹,因为你组织的安全策略阻止未经身份验证的来宾访问。”

公司无法访问无需输入账号密码的匿名共享 \\192.168.1.2
1.win+R 输入gpedit.msc
2.计算机配置—管理模板–网络—lanman 工作站—找到“启用不安全的来宾登录” 选择 已启用。
3.点击确定可以正常访问。

win10默认设置提升了局域网安全性,有一定程度上能阻止局域网病毒文件传播

MySQL 自定义不规则排序

mysql按status的指定顺序进行排序

尤其是在订单表中,订单的status修改一下之前的默认排序

SELECT * FROM `orders` WHERE id>6 order by field(status,3,5,1,2,4)

MySQL8.0.16修改默认文字编码方法

按照网络上的旧方法,尝试修改了一个晚上,brew重装了好多次mysql了,还没搞定。

找到简书上一个大哥的方法,测试成功,特地写个备忘。

[mysqld]
# Only allow connections from localhost
bind-address = 0.0.0.0
socket = /tmp/mysql.sock
default-storage-engine=INNODB

loose_mysqlx_port=33060

character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'


[client]
default-character-set = utf8mb4
socket = /tmp/mysql.sock

[mysql]
default-character-set = utf8mb4

泪流满面啊

如何在阿里云ECS上部署原生ipv4/ipv6双栈网站

阿里云老早就在“呼和浩特”地域开放了ECS部署原生ipv6的能力,现在处于公测中。不排除会在其他地域开放此能力

此篇文章引导读者一步一步,使用 CentOS7 部署阿里云ipv6网站,ipv4不赘述。

网络上绝大多数使用he.net的免费转换服务,把he.net提供的ipv6地址和自己的服务器建立一个基于ipv4的网络隧道。这个虽然是切实可行的,架不住延迟大,不稳定。毕竟国内ipv6用户要使用ipv6协议访问到国内的服务器上,要绕道香港、新加坡或者日本。

另外阿里云和其他云厂商提供了收费的ipv6转换服务,当用户的ipv6请求过来后,ipv6转换服务会把网络包转换成ipv4的协议,再发送给ECS、SLB等等服务。

这些转换服务都不是原生的ipv6能力,需要依赖ipv4协议栈工作,而且不方便拿到客户端的ipv6地址,不推荐。

继续阅读“如何在阿里云ECS上部署原生ipv4/ipv6双栈网站”

如何在你的网站上加上IPV6检测功能

现在中国政府正在大力推进ipv6行业发展,个人的小网站可以追一追潮流,具体效果看右侧(手机端在最下面)。

话不多说,直接贴代码,此代码依赖jQuery

<span id="ipv6-span" style="color:red;">你的网络不支持IPV6</span>
<br>
<span id="ipv4-span" style="color:red;">你的网络不支持IPV4</span>
<script>
    jQuery.ajax({
        url: 'https://v4.yinghualuo.cn/bejson',
        type: 'get',
        dataType: 'json',
        success: function(json) {
            jQuery('#ipv4-span').css('color', 'green');
            jQuery('#ipv4-span').html('你的网络完美支持IPV4<br>' + json.ip);
        }
    });
    jQuery.ajax({
        url: 'https://v6.yinghualuo.cn/bejson',
        type: 'get',
        dataType: 'json',
        success: function(json) {
            jQuery('#ipv6-span').css('color', 'green');
            jQuery('#ipv6-span').html('你的网络完美支持IPV6<br>' + json.ip);
        }
    });
</script>

如果您需要在您的网站上调取此跨域请求接口,请联系博主批准后再正式运营。博主不能保证未批准的服务稳定性

解决screen状态为Attached连上不的问题

当你挂起screen,下次想连上screen的时候,有时候会出现screen session的状态为Attached而怎么连也连不上的情况。下面给出解决方法。

列出状态为Attached的session id。

screen -ls
# 剔除某个session的占用
screen -D -r <session-id>