IT行业学历重要吗?

本文来自我的一个知乎回答,问题如下:(原问题链接:https://www.zhihu.com/question/64344519

这类问题,其实已经是烂大街的问题,抛开前面特指的IT行业,相信在其他行业里也有人提出这类问题。

幸存者偏差

首先,我不否认有技术牛逼到可以忽略学历的人存在。但这里涉及到一个比例的问题,在整体中,牛逼到忽略学历的比例究竟有多少?这才是重点。学历和能力成正比这条规律不适用所有人,但是起码它适用于绝大部分人。我身边的一些同事和朋友,但凡能力出众的基本自于知名学府,偶尔与他们交流问题时,甚至还会对他们思维方式感到钦佩不已。

IT神话

IT领域为什么会有学历不重要的言论存在,估计跟很多人听惯IT大佬们的神话有关系,如:马云,马化腾,比尔·盖茨,马克·扎克伯格,乔布斯等人的传奇事迹至今还是不绝于耳。神话跟时代也存在关系,不少例举马云、马化腾这样的业界大佬学历普通仍然创建了阿里巴巴和腾讯,但是,在他们读书的年代,即使是专科学历和现在专科学历是不能同日而语,就像30年前的100块钱和现在的100块钱不能等价一样。如果,把马云和马化腾放到今天的大环境下重新开始,恐怕他们也很难取得像现在的成就。

拿比尔·盖茨、马克·扎克伯格、乔布斯这些大佬们在学校退学创业来鼓励自己,很抱歉,人家是从考上常青藤名校的基础退学的,水平完全不一样。其中,除了马克·扎克伯格、乔布斯的家庭背景一般外,比尔·盖茨完全可以说是个富二代,不过他却是被举例子做多的人。知乎网友:削肾客的爱疯列出国内知名互联网大佬的毕业院校:

继续阅读全文 »

Android Google ARCore尝鲜记录

昨晚体验了一把Google前几天对外发布的ARCore,它不像原先推出的Tango需要特定的硬件设备支持(关键是Tango的价格好贵),只需要一台手机即可完成所有操作,以下是一些尝鲜体验的记录。

官网资料

根据目前的Google AR( https://developers.google.com/ar/ )文档描述,当前支持的开发环境只有Android Studio、Unity、Unreal、Web四种。

每个开发环境都有一份新手入门指引,没有太多深入内容,都是手把手教你跑个Hello World那种,只要按着步骤操作即可。

环境准备

体验Android ARCore时,需要先做下面这些准备:

  • 拉取Google在Github上开源的arcore-android-sdk项目代码,地址: https://github.com/google-ar/arcore-android-sdk
  • Android Studio 2.3 + Android 7.0(或以上)的手机一台,由于目前这个Android ARCore SDK刚刚推出,Google没有做太多设备的兼容,目前仅支持这些型号:Google Pixel 、 Google Pixel XL 、 Samsung Galaxy S8 (SM-G950U, SM-G950N, SM-G950FD, SM-G950FD, SM-G950W, SM-G950U1)。

做完以上准备后只需要插上手机,编译工程到手机上,即可开始你的AR体验之旅。

对于没有上面列出的支持设备的用户,别气馁,下面还有转机。

继续阅读全文 »

Kotlin学习笔记(四):抽象类、接口、可见性修饰、重写

本文是Kotlin学习笔记系列的第四篇,还没看过前三篇文章的同学请看下方:

下面直接进入正文。

抽象类

关键字:abstract、override

abstract可以用于类的修饰、或者类成员方法的修饰,能将对应的class或fun声明成为抽象类或者抽象方法。

1
2
3
4
5
6
7
8
9
abstract class A {
abstract fun testAbsFun()
}
class B : A() {
override fun testAbsFun() {
//do sth...
}
}

继续阅读全文 »

开源整理:三个优秀的Android图表开源控件

本文是关于Android开源图表控件的整理,塞选条件基于以下三个:

  • Github上的start、watch、fork数其中有两项超过100;
  • 同时还需要作者最近半年仍在维护更新;
  • 使用文档基本齐全;

MPAndroidChart

https://github.com/PhilJay/MPAndroidChart

使用简单,但功能强大,而且支持Realm,兼容Android 2.2及以上版本,一直保持Android图表开源控件里面的一哥地位。有意思的是,MPAndroidChart还有一个iOS平台的版本( https://github.com/danielgindi/Charts )。

继续阅读全文 »

Kotlin学习笔记(三):类和对象

本文是Kotlin学习笔记第三篇,还没看过前两篇文章的朋友可以考虑看看。

在学习的过程中,我会不断的比对Kotlin和Java间的差异点,相信你可以从中看到Kotlin相比Java的一些亮点,看完本篇文章,你可以知晓以下这些问题。

类声明

和Java一样,Kotlin中使用关键字class来声明一个类。如下即是声明一个最简单的没有任何属性和方法的类

1
2
// 没有任何属性、方法的Coder类
class Coder {}

一个完整的类声明包含类名类头(指定构造参数、构造方法等),类体(用大括号包裹的部分)。类头和类体这两个部分并非必要的,像上面没有任何属性、方法的Coder类,我们可以省略掉类头和类体写成下面这样。

1
2
// 没有类头、类体的Coder类
class Coder

继续阅读全文 »

Kotlin学习笔记(二):变量与函数

之前文章起名为Kotlin教程,后来想想可能不大合适,决定改为Kotlin学习笔记。上一篇文章发布后,有几个读者留言问在没有学Java的情况下,直接学Kotlin行不行?我认为是没有问题的。好了,上一篇文章已经简单了解Kotlin的一些特色,后面也用Kotlin写了一个最简单的HelloWorld,如果还不大清楚的朋友,可以先阅读上一篇文章:Kotlin学习笔记(一):走进Kotlin的世界

包名

Kotlin在包名声明和类型导入上和Java基本一样,风格如下:

1
2
3
4
package xxx.xxx.xxx //包名声明
import xxx.xxx.xxx //类型导入
...

和每个Java文件都会默认导入import java.lang.* 一样,Kotlin也会默认导入如下的包,并且根据运行在不同平台上,默认导入的包会有些许差异。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// 每个Kotlin文件会默认导入下面的包
kotlin.*
kotlin.annotation.*
kotlin.collections.*
kotlin.comparisons.*
kotlin.io.*
kotlin.ranges.*
kotlin.sequences.*
kotlin.text.*
// JVM下的Kotlin还会导入
java.lang.*
kotlin.jvm.*
// JS下的Kotlin还会导入
kotlin.js.*

数值类型

Kotlin的数值类型包括Byte(1个字节)、Short(2个字节)、Int(4个字节)、Long(8个字节)、Float(4个字节)、Double(8个字节)。

继续阅读全文 »

Kotlin学习笔记(一):走进Kotlin的世界

今年Google I/O大会上,官方扶正Kotlin的举动火遍整个Android开发圈。不过,有些开发者似乎过度解读Google的意图,认为Kotlin要取代Java成为Android开发的标配,大会上说的是official support kotlin,并非replace java with kotlin。以至于后来回公司上班,后台童鞋打招呼的时候还问,听说你们Android以后不用Java要用Kotlin写(那位后台童鞋之前用Kotlin写过服务器代码)。好吧,我本人是不支持官方一支持Kotlin后,就说Java辣鸡,Kotlin才是王道这类说法。毕竟,语言终究有自己的优缺点,既然官方开始支持了,我们不妨利用一些空余时间学习一下Kotlin好了。

Kotlin简介

Kotlin是JetBrains推出项目,是一种在Java虚拟机上运行的静态类型编程语言,也可以被编译成为JavaScript源代码。在2011年7月推出之前,它已被开发一年之久。直到2016年2月15日,官方发布了第一个稳定的release版本 —— Kotlin v1.0。从Kotlin官网介绍来看,这近乎是一门野心勃勃的语言,

  • 基于JVM编程,这意味着Kotlin可以写服务器代码;
  • 基于Android和Browser编程,这意味着不仅可以写客户端编程,连前端开发都可以;
  • 基于Native编程,直接绕过JVM与底层代码打交道,好彪悍;

不过Kotlin-Native项目还在开发阶段,不知道最终推出的项目如何,还是蛮期待的,感兴趣的朋友可以关注它的Github更新

https://github.com/JetBrains/kotlin-native

继续阅读全文 »

Android卡顿检测方案

应用的流畅度最直接的影响了App的用户体验,轻微的卡顿有时导致用户的界面操作需要等待一两秒钟才能生效,严重的卡顿则导致系统直接弹出ANR的提示窗口,让用户选择要继续等待还是关闭应用。

所以,如果想要提升用户体验,就需要尽量避免卡顿的产生,否则用户经历几次类似场景之后,只会动动手指卸载应用,再顺手到应用商店给个差评。关于卡顿的分析方案,已经有以下两种:

  • 分析trace文件。通过分析系统的/data/anr/traces.txt,来找到导致UI线程阻塞的源头,这种方案比较适合开发过程中使用,而不适合线上环境;
  • 使用BlockCanary开源方案。其原理是利用Looper中的loop输出的>>>>> Dispatching to和<<<<< Finished to这样的log,这种方案适合开发过程和上线的时候使用,但也有个弊端,就是如果系统移除了前面两个log,检测可能会面临失效;

下面就开始说本文要提及的卡顿检测实现方案,原理简单,代码量也不多,只有BlockLooper和BlockError两个类。

继续阅读全文 »

开源整理:Android App新手指引开源控件

一个App第一次与用户接触或者发生大版本更新时,常常会用户进行新手引导,而一个好的新手指引,往往能够方便新用户快速了解操作你的应用功能。新手指引的重要性,不言而喻。本文搜集整理了Github上一些效果不错的新手指引开源控件,帮助你的应用在用户面前有更好的效果展示。当然,如果你有精力,也可以自己开发维护一套新手指引效果。

GuideView

https://github.com/binIoter/GuideView

国人开发者出品的一个轻量级新手指引库,能够快速为任何一个View创建一个遮罩层,支持单个页面,多个引导提示,支持为高亮区域设置不同的图形,支持引导动画,方便扩展,良好支持fragment。

使用方式、更多效果、详细实现原理等,可以查看项目的README。

Spotlight

https://github.com/wooplr/Spotlight

看看下面的效果后相比静态的指引效果,这种动态指引更容易让用户耳目一新,可以在新功能的入口处添加提示。

MaterialIntroView

继续阅读全文 »