老男孩语录⑧⑧-初学者如何学习运维?
①先实践后看原理
很多初学者思维的误区是先了解原理在去实践
很多有经验的运维给初学者的建议是先把原理看懂,在去实践。
他们的思想是原理比操作更重要。
其实,这是很误导人的错误学习运维的思想。
运维实际上是应用性为主的一门学问。
没有基础的运维一定是实践更容易,看原理相对更难,造成学习困扰。
老男孩的建议:
以下内容转自学生的作业总结(略改动):
对于初级运维人员技术方面的学习是先看原理在实践还是先实践在看原理?
对于这个问题,老男孩老师做了一个非常漂亮的回答:对于初级运维人员应该先实践在看原理,而对于中高级运维人员一般是先看原理再去实践。
运维新手大脑里是白纸一张,枯燥的理论不如实践掌握的快,实践掌握了在返回来看原理,就没那么难了。
运维高手有了经验了,在研究新技术时,先看原理在去实践有助于更系统的学习运维,当然这样高手先实践在看原理也是适合的。
②先模仿在创新(来自学生的作业总结)
以下内容转自学生的作业总结:
在技术方面的学习,我们应该多学前人的总结,也就是多模仿,把别人的效果做出来,然后总结再看原理,融汇贯通,最后总结出自己的技术文档。
老男孩老师常说授之以渔而非授之以鱼,我们需要掌握钓鱼的方法,而不是等待老师给鱼吃。以免有一天老师不在身边,我们不会因没有鱼吃而饿死!
同学们努力吧!
③学好运维需要有一个过程
我们一定要戒除浮躁的学习心态,切记切记!
给自己一个相对充足的学习时间。
曾经有0基础的学生,和老男孩说1个月要学好运维!老男孩培训中心提供的第一阶段的
视频播放时间差不多至少300个小时不止(留的作业还不算),像看电视剧一样去看,一天看8小时也需要近40天的时间。
女人生孩子10个月时间,如果让他3-5个月出来,这个婴儿可能还没长成呢!
老男孩的工作及教学经验:
比较靠谱的学好运维的最低时间是6-12个月(无论自学还是培训)。
初学者在6-12个月学完运维,能达到5-12K的能力就算是比较优秀了。
这是老男孩培训中心第一个学习阶段的大多数学生的就业实际情况。
如果完全靠自学,正式大专学历以上在很努力的情况下,在6-12个月内达到4-6K就是很棒的情况了。
以上给大家列举了学习运维的时间参考。愿有志于学好运维的朋友戒除浮躁,踏实的学习吧!
上周我收到三位Halmstad大学学生的电子邮件,他们正在做一个为期三月的项目,内容是关于程序员在工作中追求的是什么,以及企业如何吸引有才华的程序员。下面是我对他们问题的答案,按重要程度排序。显然人们会有不同的偏好,所以我很有兴趣听到你们赞同哪些,反对哪些,重要性的评判,以及你们认为遗漏了的要点。
1. 做软件产品。我希望我参与编写的程序成为公司的主要业务。这就排除了IT维护工作,因为这种工作只是间接地支持了真正的业务(不管它是什么)。我也希望参与系统核心部分的工作,越重要的越好。如果我做的东西出错了,它应该马上成为一个紧急问题。最后,我不愿意参与仅仅是配置、应用或整合其他公司的软件 — 我希望自己来实现关键性的功能。
2. 优秀的同事。和对软件开发充满激情的聪明程序员一起工作是催人奋进的。我一次又一次地看到和同事一起谈论一些问题或设计是如何产生比我们任何一个人自己闷头想出来更好的思路的。这种合作方式不光是产生更好的代码,过程本身就是非常令人享受的。
你怎么知道某人是不是一个优秀的程序员呢?一个特别好的特征就是看他们是否持续学习和提高他们的技能,例如通过读书、看博客、参加培训课程、以及参加技术大会。这倒也不是一个必要条件,我就曾经和很多不干这些事的很棒的开发者共事。最后,优秀的开发者会吸引其他的优秀开发者,因为以上原因。如果一个企业有很多优秀的开发者,它就更容易招到更多的优秀开发者。
3. 挑战难题。程序员通过代码解决问题。开发的产品起码在某些角度需要聪明的思路,比如低延迟、大量并发请求、或有限的硬件资源。不过,很多软件产品都是由常规代码组成,没有什么难做的部分。所以你也不能只是盼着做“困难问题”而避开其他的所有需求。而且,组织好那些看起来很无聊的代码,让它们容易理解和维护,这本身也是一个巨大的挑战。
4. 很酷的技术。这主要是关于使用有趣的编程语言(例如Clojure、 Erlang 或者 Go),但也包括框架和应用(例如Hadoop 或 Cassandra)。这可能是某些公司有问题的地方。如果它们的应用是用某个语言(比如C++)写的,它就不会改了。所以如果你想改用一些新的语言,你可能需要换个工作。例如,如果你在斯德哥尔摩想用Erlang,你可以给Klarna 或 Campanja公司投个简历试试。
5. 用户。编码的乐趣之一是做出一些对别人有用的东西。做了东西却没人用就无聊了。要让用户(越多越好)关注你开发的努力并且给予有价值的反馈。唯一例外的可能是创业的时候,但是之后就要把吸引尽可能多的用户作为最优先的事情。
6. 不错的薪水。拥有大量优秀开发者的公司懂得优秀人才的价值。因为优秀和一般程序员之间的差别是巨大的,所以报酬向优秀开发者倾斜在经济上是有道理的 — 其实在生产效率上的差别远大于薪酬上的差别。反过来说,那些不舍得给程序员较好薪水的公司往往把程序员看作是可以随意更换的“资源”。那么这些公司在其他方面的表现恐怕也是你看不上的,不仅仅是低薪水。
7. 很好的工具。这个因素的重要性几乎是不言自明的。一台快速的计算机和几个显示器可以加快开发过程 — 谁会反对这一点呢?(好吧,那些光看成本不看效率的秃头老板可能会反对)
8. 一周工作40小时。如果你总是要加班完成任务,肯定是你工作的单位有一些问题。而且,长时间工作也不等于有效率。
9. 最少的官僚主义。对于开发过程来说,或多或少会有敏捷开发方法的影子,看起来大家都采用了这种思路。根据我的体会,在大公司里日常管理的那些琐事基本上都是躲不开的问题。
10. 在家工作。 有时候能在家工作是有效的,不过我不常这么做。我喜欢在办公室里,和同事交流。我曾经通过视频会议、聊天工具和电子邮件在一个远程办公室工作,但这样的工作效率还是不如现场合作的高。
11. 离家近。显然这不容易强求,但是能不用每天花几个小时在路上多好啊。
评论
如果你是咨询顾问(而不是程序员),这个列表上某些项可能会不一样。我总是愿意在产品公司工作,主要因为我喜欢深入了解系统,看着它随时间如何演变。所以我没有作为咨询顾问的第一手工作经验,不过我觉得是这样的:作为一个咨询顾问,你更容易接触到很酷的新技术,因为你有机会和很多不同的客户一起工作。但是,即使你有很棒的同事,你可能也不会每天和他们在一起工作,因为你们会被派到不同的客户那里去。
这就是我在单位里最看重的几个因素,按重要程度排序。在现实生活中总会打一些折扣,但越是列在前面的因素,我就越不愿意给它们打折扣。你看重的因素有哪些呢?
区别中文和英文字符的方法:
String str = "我爱你,xr"; char[] array = str.toCharArray(); int chineseCount = 0; int englishCount = 0; for (int i = 0; i < array.length; i++) { if((char)(byte)array[i]!=array[i]){ chineseCount++; }else{ englishCount++; } }
判断是否包含特殊字符的方法:
Pattern p = Pattern.compile("[&%$#@!(),*^]"); //可在此加上其他的特殊字符 Matcher m = p.matcher(str); if (m.find()) { Toast.makeText(getApplicationContext(),"you can not enter special Character", 1).show(); } else { Toast.makeText(getApplicationContext(),"input ok", 1).show(); }