精华内容
下载资源
问答
  • 无论是身处什么行业什么领域,数据分析越来越成为一向必不可少技能, 而运用数据思维进行决策更能产生形成高质量决策结果。随着互联网不断发展和物联网设备不断普及,我们日...
        


    无论是身处什么行业什么领域,数据分析越来越成为一向必不可少的技能, 而运用数据思维进行决策更能产生形成高质量的决策结果。

    随着互联网的不断发展和物联网设备的不断普及,我们日常生活中的各种数据被存储下来,让我们可以通过定量分析数据,利用数据实现更好的决策制定。

    现在越来越多的公司开始注重这一块,一方面自建数据体系,一方面去买一些数据。而对于我们个人似乎还没有意识到或者开始挖掘数据对我们的价值。

    笔者最近的工作大都是做一些基础设施搭建和流程优化相关的工作。这部分工作对很多人来说都是“隐形”的,对上层使用者来说很难有很大的感知。对于领导来说,如果你只是闷头去做事情,他们也是很难知道你干的怎么样,如果这之间再加上 你没有什么反馈,就会给同事和领导一种“不靠谱”的感觉。

    因此给予反馈和直观展示自己劳动成果的能力就显得非常重要。然而如果你能很好展示自己的劳动成果,那么只需要将这个给老板看就是一种很好很直观的反馈。

    这篇文章,我们来谈一下,如何量化我们的工作,如何将我们的工作成果展示出来。如何让同事,让领导体会到我们工作的成果。我会通过几个例子来帮助大家快速理解,以及掌握这门“技术” 。

    《让数据开口说话》是我给这篇文章的标题,让数据开口说话,你就可以少说一点,并且摆数据就是摆事实,数据带来的说服力要比你说的话强很多。

    关于我

    我是一个对技术充满兴趣的程序员, 擅长前端工程化,前端性能优化,前端标准化等。

    做过.net, 搞过Java,现在是一名前端工程师。

    除了我的本职工作外,我会在开源社区进行一些输出和分享,GitHub 共计获得1.5W star。比较受欢迎的项目有leetcode题解 , 宇宙最强的前端面试指南 和我的第一本小书

    收集数据

    如果让数据开头说话,那么首先第一步你要有数据。

    因此我们的第一步就是收集数据,那么在这之前你需要知道你需要什么数据。这部分的内容随着每个人任务不同肯定是不一样的。因此有着很大的灵活性,

    有一个指导思想就是对关键指标分解。比如我现在要做打包时间进行优化,那么打包时间由哪些时间决定。

    打包时间 =  阶段1 时间 + 阶段2 时间 + 阶段3 时间

    我们减少打包时间肯定要减少其中一个或多个。

    有时候我们无法找到这种简单的分解,那就教大家另外一个技巧:运用对比。

    一方面可以基于时间进行对比,比如环比增长,同比增长等数据都是这么来的。

    另一方面我们可以基于用户属性进行对比,比如用户年龄,性别,偏好,操作系统类型, 地域属性等。

    下面我举几个例子。

    打包优化

    假如你被分配了一个任务。让你对项目的打包过程进行优化。

    • 你需要对打包时间进行优化,减少打包的时间

    • 你需要对打包的最终产物进行优化,减少打出的包的包体大小。

    • 将打包变得尽可能的简单,也就说尽量减少人为的操作过程。

    你接到了这样一个任务,你会如何去做?

    这里我们不考虑具体的具体思路和细节。假设你的架构思路,方案规划,各种fallback已经想好了。我们如何通过上面提到的让数据说话的角度来收集数据呢?换句话说,我们需要收集哪些数据?

    打包时间

    对于打包时间的数据,最简单的我们计算一下总体的打包时间。

    最后我们只需要对比优化前后的总体打包时间差异即可。

    640?wx_fmt=png

    这对于老板来说可能已经够了,但是这缺乏一些精确性,我们无法知道通过优化了哪个环节进行 减少了打包时间。因此一种简单的改进是将打包划分为多个阶段,每个阶段分别进行统计计时⌛️ 。

    640?wx_fmt=png

    包的大小

    包的大小的数据其实和上面讲的打包时间思路类似。

    我们当然可以只统计总体包大小。

    640?wx_fmt=png

    但是为了获得更加灵活的定制和更加精确的范围我们可以对包进行一定的划分。这个划分可以是业务纬度,也可以是纯技术纬度。

    640?wx_fmt=png

    打包命令

    这部分比较简单,我们只需要简单地统计手动操作的次数即可。

    640?wx_fmt=png

    通过收集以上的数据,我们就可以用数据来表示我们的成果,让数据说话,关于如何 使用这些数据,我们稍后讨论。

    页面加载性能优化

    假如你被分配了一个任务。让你对项目的页面加载速度进行优化。你会怎么做?

    这个任务有点太宽泛了,更多的时候会有一些更精确的指标, 比如将网络状态为 fast3G中端机型的白屏时间降低到 3s以内

    timing

    性能优化的第一步就是测量,没有测量就没有优化。我们不能为了优化而优化, 而是看到了某些点需要优化才去优化的。而发现这个点一个重要的方式就是要靠测量。

    说到测量,普遍接受的方式是,在浏览器中进行打点,将浏览器打开网页的过程看作是一个旅行。那么我们每到一个地方就拍张带有时间的照片(事件),最后我们对这些照片按照时间进行排列, 然后分析哪部分是我们的瓶颈点等。

    640?wx_fmt=png

    有了这些timing 我们可以很方便的计算各项性能指标。我们还可以自定义一些我们关心的指标,比如请求时间(成功和失败分开统计),较长js操作时间,或者比较重要的功能等。

    总之收集到这些数据之后,我们只需要根据我们的需求去定制一些指标即可。

    这样我们就很容易展示出这样的画面:

    640?wx_fmt=png

    人效提升

    假如你是一个项目的管理者,上级分配给你一个任务,要在未来几个季度去做“研发效率提升”, 也就是提高“交付速度”。你会怎么做这件事?

    任务

    这个事情是比较主观的了,因此我们切实需要一些可以量化的东西来辅助我们。

    我们考虑将需求进行拆分,变成一个个任务。一个需求可能有多个任务。

    640?wx_fmt=png

    我们考虑对每一个任务进行计时,而不是需求,因为需求有太大的差异。我们可以针对任务进行分类,然后我们的目标就可以变成“减少同类任务的交付时长”。

    但是这种粒度似乎还是有点大。我们可以采取标签的形式,对任务进行交叉分类。

    640?wx_fmt=png

    任务纬度可能还是有点太大,我们可以采取更小的粒度划分,比如模块和组件。

    640?wx_fmt=png

    这样我们的统计纬度就丰富起来了,我们不仅可以总体进行统计分析,我们还可以根据tag和tag的组合进行汇总。

    比如一个典型的统计结果大概是:

     - task1 (tagA)	
      - module1 (tagA)	
        - component1 (tagB)	
        - component2 (tagA)	
      - module2 (tagB)	
      - module3 (tagB)	
     - task2 (tagA)	
     - task3 (tagC)

    比如这里有一种tag叫“是否复用了以前的代码”, 那么我们就很容易统计出组件复用率,也就很容易很直观地知道前后的差距了。

    用户拉新和留存

    再比如我们需要做“用户拉新和留存”,我们应该怎么做?

    这个留做思考题,大家可以思考一下。

    我这里抛砖引玉一下,比如我们的统计纬度可以是:

    - 用户访问时长 (tagA)	
    - 跳出率 (tagB)	
    - 新用户 (tagA)	
    - 流失的老用户 (tagB)	
    - 地址位置 (tagA)

    假如我的tag有两个分别是 用户id和时间, 我们就可以方便地统计每个用户的活动数据趋势。

    让数据说话

    有了数据,我们如何通过数据来增强表现力呢?

    一种非常有效的措施是可视化。现在的可视化引擎和工具有很多,功能也非常复杂。

    但是我发现我个人需要的就那么几个,可能大家每个人需要的种类不大一样, 但是我相信作为个人,你需要的种类不会很多。因此自己根据自身的实际情况, 挑选适合自己的几种类型,做到迎刃有余就足够了。

    对于我而言,我常用的是饼图,用来表示分布关系。曲线图用来表示趋势。用柱状图表示对比+趋势。用热度图表示离散的数据分布等等。

    我们可以使用一些现有的成熟的产品来帮助我们将刚才我们收集到的数据转化为各种图表, 比如 画布

    这个网站能做的图表种类比较少。

    640?wx_fmt=png

    当然作为一名前端我们也可以自己写代码去更灵活地展示我们的数据,比如D3或者百度的echarts

    任何类型的图表都可以做,只有你想不到,没有它做不到。

    640?wx_fmt=png

    相对折中一点,我们可以选择支持代码定制的一些产品,在特殊情况我们可以自定义。

    累死累活干不过做 PPT 的

    有了这些数据图表,是时候写一份PPT来秀一下了。

    一种方式是使用你电脑的办公软件或者一些在线的幻灯片制作工具做, 比如slides 。

    640?wx_fmt=png

    另一种方式通过写代码的方式实现,作为程序员我推荐使用第二种。这里推荐一款 nodejs cli工具 nodeppt,还有另外一个 JS框架 reveal.js 。上面提到的slides背后的原理就是它。

    640?wx_fmt=png

    总结

    这篇文章我主要讲述了如何量化我们的工作,并将我们的工作成果展示出来。从而摆脱“干了很多事情,却说不出来,甚至功劳被人无情拿走的尴尬局面”。

    首先我们将了如何收集数据,收集数据的一些技巧,这里通过几个实际工作的例子,分别是“打包优化”,“性能优化”,“人效提升”,“用户留存” ,来帮助大家理解这个过程,掌握这个技巧。有了数据之后,我们需要通过一些手段将其数据展示出来,给人直观的感受,最好有视觉冲击感。这里我推荐了几个工具和平台,大家可以根据自己的情况选择。最后结合我们实际情况,PPT是一个很好的展示自己的东西,不管是晋升还是宣传都是很好的方式, 这里我也推荐了几个产品,帮助大家更快更好地将图表展示出来。

    让数据开口说话,你就可以少说一点,并且摆数据就是摆事实,数据带来的说服力要比你说的话强很多。

    关注我

    最近我重新整理了下自己的公众号,并且我还给他换了一个名字《脑洞前端》,它是一个帮助你打开大前端新世界大门的钥匙 ?,在这里你可以听到新奇的观点,看到一些技术尝新,还会收到系统性总结和思考。

    我会尽量通过图的形式来阐述一些概念和逻辑,帮助大家快速理解,图解前端是我的目标。

    之后我的文章同步到微信公众号 脑洞前端 ,您可以关注获取最新的文章,或者和我进行交流。

    640?wx_fmt=jpeg

    交流群

    现在还是初级阶段,需要大家的意见和反馈,为了减少沟通成本,我组建了交流群。大家可以扫码进入

    QQ 群

    640?wx_fmt=png

    微信群

    640?wx_fmt=jpeg

    (由于微信的限制,100 个人以上只能邀请加入, 你可以添加我的机器人回复“大前端”拉你进群)

    展开全文
  • 干活的累死累活,到头来干不过写PPT的! 也有网友表示:写好PPT和做好PPT在职场上就是一种能力,一份好的PPT是内容好加视觉美观。 在平时的科研过程中,我们经常会输出一些二维的平面图,二维平面图反映某个变量在...

    前言

    2019年年初,新东方年会的一个视频火爆全网,里面说出了无数职场人士的心声:

    干活的累死累活,到头来干不过写PPT的!

    也有网友表示:写好PPT和做好PPT在职场上就是一种能力,一份好的PPT是内容好加视觉美观。

    在平时的科研过程中,我们经常会输出一些二维的平面图,二维平面图反映某个变量在二维场景下的分布情况。

    在我们常规的PPT展示中,二维平面图经常会出现在内容中,但是单单一张二维图,往往会显得比较单调。要写好PPT,首先还是要有好的内容,如何有效并酷炫的展示我们的平面二维结果?先尝试让它动起来吧。

    准备工作

    人生苦短,我用Python。

    之前的推送中有提到过Matlab除了不会生孩子,什么都会!把Matlab替换成Python这句话同样成立。(Matlab与Google Earth一起自定义M_Map岸线)

    1.1 用到的数据

    水下滑翔机(Underwater Glider)通过浮力调节实现在海水中的升降,并借助固定翼的水动力实现水下滑翔运动。预设轨迹后,其可自动通过携带CTD等传感器测量航线上数据,使用卫星通讯返回观测数据、并接受遥控指令,是当前海洋水体自主观测的新型装备,也是实现深海大范围、长时序海洋观测与探测的有效技术手段。

    我们先下载Glider观测到的一个剖面的温度数据,同时下载观测位置处的水深情况为后续数据处理做准备。分别打开以下链接后会下载两个文件,其中csv文件是温度数据,nc文件是水深数据。

    下载链接如下:

    http://glider.ceotr.ca/data/live/otn200_sci_water_temp_live.csv

    https://coastwatch.pfeg.noaa.gov/erddap/griddap/usgsCeSrtm30v1.nc?topo[(45):1:(42)][(-67):1:(-61.5)]

    1.2 用到的Python库

    from matplotlib.transforms import Bbox, TransformedBbox,  blended_transform_factory
    from mpl_toolkits.axes_grid1.inset_locator import BboxPatch, BboxConnector, BboxConnectorPatch
    import matplotlib.pyplot as plt
    from math import radians, cos, sin, asin, sqrt
    import pandas as pd
    import numpy as np
    import netCDF4 as nc
    import imageio

    动起手来

    2.1 数据读取

    nc文件使用netCDF4库来读取文件中的变量信息,csv文件中的信息使用pandas来读取。

    topo为所在区域的水深情况,lon, lat, date, depth, temp分别为Glider观测到的站点经度、纬度、观测时间、深度和温度。

    file2read = r'otn200_sci_water_temp_live.csv'
    ncfile = r'usgsCeSrtm30v1_6ebb_eec1_d277.nc'
    data = pd.read_csv(file2read)
    date = data.iloc[:, 0]
    lat = data.iloc[:, 1]
    lon = data.iloc[:, 2]
    depth = data.iloc[:, 3]
    temp = data.iloc[:, 4]
    etopo2 = nc.Dataset(ncfile)
    latDepth = etopo2.variables['latitude'][:]
    lonDepth = etopo2.variables['longitude'][:]
    topo = etopo2.variables['topo'][:]

    2.2计算各观测点之间的距离

    因为我们要画Glider观测到的断面的数据情况,对于这个平面图来说,x方向为断面上的点距离起点的距离,y方向是水深,平面上展示的为变量的值。先得到断面上各点之间的距离。

    # Compute distance along transectdist = np.zeros((np.size(lon)))for i in range(1, np.size(lon)):    dist[i] = dist[i - 1] + haversine(lon[i - 1], lat[i - 1], lon[i], lat[i])
    # Compute distance along transect
    dist = np.zeros((np.size(lon)))
    for i in range(1, np.size(lon)):
        dist[i] = dist[i - 1] + haversine(lon[i - 1], lat[i - 1], lon[i], lat[i])

    2.3得到断面上各个点的水深情况

    bathy = np.zeros((np.size(lon)))
    for i in range(np.size(lon)):
        cost_func = np.abs(lonDepth - lon[i])
        xmin = np.where(cost_func == np.min(cost_func))[0]
        cost_func = np.abs(latDepth - lat[i])
        ymin = np.where(cost_func == np.min(cost_func))[0]
        bathy[i] = -topo[ymin, xmin]

    2.4 局部放大图像

    局部放大图像并将两个图像连接起来。主要使用到以下两个函数:

    def zoom_effect(ax1, ax2, xmin, xmax, **kwargs):
        """
        ax1 : the main axes
        ax1 : the zoomed axes
        (xmin,xmax) : the limits of the colored area in both plot axes.
        connect ax1 & ax2. The x-range of (xmin, xmax) in both axes will
        be marked.  The keywords parameters will be used ti create
        patches.
        Source: http://matplotlib.org/dev/users/annotations_guide.html#zoom-effect-between-axes
        """
        trans1 = blended_transform_factory(ax1.transData, ax1.transAxes)
        trans2 = blended_transform_factory(ax2.transData, ax2.transAxes)
        bbox = Bbox.from_extents(xmin, 0, xmax, 1)
        mybbox1 = TransformedBbox(bbox, trans1)
        mybbox2 = TransformedBbox(bbox, trans2)
        prop_patches = kwargs.copy()
        prop_patches["ec"] = "r"
        prop_patches["alpha"] = None
        prop_patches["facecolor"] = 'none'
        prop_patches["linewidth"] = 2
        c1, c2, bbox_patch1, bbox_patch2, p = \
            connect_bbox(mybbox1, mybbox2,
                         loc1a=3, loc2a=2, loc1b=4, loc2b=1,
                         prop_lines=kwargs, prop_patches=prop_patches)
        ax1.add_patch(bbox_patch1)
        ax2.add_patch(bbox_patch2)
        ax2.add_patch(c1)
        ax2.add_patch(c2)
        ax2.add_patch(p)
        return c1, c2, bbox_patch1, bbox_patch2, p
    def connect_bbox(bbox1, bbox2,
                     loc1a, loc2a, loc1b, loc2b,
                     prop_lines, prop_patches=None):
        # Fuctions for zoom effect ****************************************************
        # Source: http://matplotlib.org/dev/users/annotations_guide.html#zoom-effect-between-axes
        if prop_patches is None:
            prop_patches = prop_lines.copy()
            prop_patches["alpha"] = prop_patches.get("alpha", 1) * 0.2
        c1 = BboxConnector(bbox1, bbox2, loc1=loc1a, loc2=loc2a, **prop_lines)
        c1.set_clip_on(False)
        c2 = BboxConnector(bbox1, bbox2, loc1=loc1b, loc2=loc2b, **prop_lines)
        c2.set_clip_on(False)
        bbox_patch1 = BboxPatch(bbox1, **prop_patches)
        bbox_patch2 = BboxPatch(bbox2, **prop_patches)
        p = BboxConnectorPatch(bbox1, bbox2,
                               # loc1a=3, loc2a=2, loc1b=4, loc2b=1,
                               loc1a=loc1a, loc2a=loc2a, loc1b=loc1b, loc2b=loc2b,
                               **prop_patches)
        p.set_clip_on(False)
        return c1, c2, bbox_patch1, bbox_patch2, p

    2.5 生成多张图片

    要生成动图,首先要准备多张图片来成为动图每一帧的素材,在下面这段代码中,nframes表示生成多少幅图,这个相当于将平面图在x方向分割成nframes个部分,在平面图的下方新建一个图层,然后将分割出来的部分再展示出来,实现局部放大效果。

    # Make plots
    nframes = 20
    overlap = 0.95
    window = np.floor(max(dist) - min(dist)) / (nframes - (nframes * overlap) + overlap)
    xmin = 0
    xmax = xmin + window
    cmp = plt.cm.get_cmap('jet', 16)
    fig1 = plt.figure()
    for i in range(0, nframes):
        ax1 = plt.subplot(211)
        plt.fill_between(dist, bathy, 1000, color='k')
        plt.scatter(dist, np.asarray(depth), s=15, c=temp,
                    cmap = cmp, marker='o', edgecolor='none')
        plt.ylim((-0.5, max(depth) + 5))
        ax1.set_ylim(ax1.get_ylim()[::-1])
        cbar = plt.colorbar(orientation='vertical', extend='both')
        cbar.ax.set_ylabel('Temperature ($^\circ$C)')
        plt.title('OTN Glider transect')
        plt.ylabel('Depth (m)')
        ax1.set_xlim(min(dist), max(dist))
        ax2 = plt.subplot(212)
        plt.fill_between(dist, bathy, 1000, color='k')
        plt.scatter(dist, depth, s=15, c=temp,
                    cmap= cmp, marker='o', edgecolor='none')
        plt.ylim((-0.5, max(depth) + 5))
        ax2.set_ylim(ax2.get_ylim()[::-1])
        plt.ylabel('Depth (m)')
        plt.xlabel('Distance along transect (km)')
        ax2.set_xlim(xmin, xmax)
        zoom_effect(ax1, ax2, xmin, xmax)
        file2write = 'glider_' + '%02d'%i + '.png'
        plt.savefig(file2write, bbox_inches='tight')
        plt.close()
        xmin = xmax - np.floor(window * overlap)
        xmax = xmin + window

    2.6 生成gif文件

    这里使用到一个imageio的库,首先读取上文中生成的静态图到列表,作为GIF的每一帧;接着设置输入(静态图)、输出(动态图)和一些必要参数,我们这里设置每一帧间隔时间为0.3秒,默认是1秒,可以通过调整dutation来设置逐帧之间的间隔时间。之后调用imageio.mimsave函数去保存结果。

    这段代码中我们用到了列表推导式,参见另外一篇推送中的介绍。

    imagelist = ['glider_'+'%02d'%i +'.png' for i in range(0,20)]
    frames = [imageio.imread(_) for _ in imagelist]
    outname = 'gliders.gif'
    imageio.mimsave(outname, frames, 'GIF', duration=0.3)

    小结

    一图胜千言,就用本篇生成的动图来结束这篇推送吧。

     

    PS:如有需要Python学习资料的小伙伴可以加下方的群去找免费管理员领取

     

    可以免费领取源码项目实战视频PDF文件

     

    本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。

    以上文章来源于海洋纪 ,作者劉夏橙

    展开全文
  • 2019年年会最火莫过于新东方年会,既然累死累活干不过PPT,那么我们就要PPT。 nodeppt就是帮助大家用markdown语法来快速创建一个高大上在线演示文档。 先来看看效果:js8.in/nodeppt/ github地址为:...

    2019年年会最火的莫过于新东方年会,既然累死累活干不过做PPT,那么我们就要写好PPT。

    nodeppt就是帮助大家用markdown语法来快速创建一个高大上的在线演示文档。

    先来看看效果:js8.in/nodeppt/

    github地址为:github.com/ksky521/nod…

    喜欢就star项目,点赞收藏本文章~

    nodeppt 特点

    • 使用markdown语法,可以快速创建ppt
    • 有丰富的组件可以使用,瞬间让你的ppt高大上
    • 支持导出整个演示文档为html,可以部署到任意的服务器
    • 丰富的动效,支持了animate.css全部动效
    • 支持演讲者模式,方便双屏控制
    • 良好的可扩展性,支持配置文件
    • 强大的插件机制,支持echart等插件
    • 支持自定义解析器插件
    • 支持自定义脚手架模板

    美图

    demo中的全部代码在site 就可以查看。

    展开全文
  • “只会为老板的朋友圈高歌”,“累死累活干不过写PPT的...掏出PPT一顿胡扯”,“只会为人民币疯狂的高歌”,“一个问题从董事长问到兼职”,“说好的三年规划每年都要变”等改编歌词,引来现场的阵阵欢呼。 不管...

    这两天,新东方年会内部吐槽视频《释放自我》在朋友圈疯传,该曲改编自《沙漠骆驼》,歌词内容是吐槽内部管理的一些问题。

    “只会为老板的朋友圈高歌”,“累死累活干不过写PPT的...掏出PPT一顿胡扯”,“只会为人民币疯狂的高歌”,“一个问题从董事长问到兼职”,“说好的三年规划每年都要变”等改编歌词,引来现场的阵阵欢呼。

    不管年会如何,这视频歌词算是火了。

    视频地址:https://v.qq.com/x/page/y0831058lep.html

    值得一提的是,据媒体23日报道,俞敏洪日前就给全体高管发布了五封邮件,在信中,俞敏洪措辞犀利地指出当下新东方存在的种种内部管理问题,譬如:

    1、有些管理者变成了当官的,层层下指令,就是自己不干活;

    2、管理者职责重叠,效率低下,工作边界不清;

    3、有些管理者在岗位上很久,变成了老油条,还常常拉帮结派;

    4、管理者严重缺乏系统性培训,和员工一样,野蛮生长;

    5、管理者人才发掘机制严重缺乏,不少管理者为了自己的岗位安全,不愿意让能干的人才出头,只用和自己亲近给自己安全感的人,结果形成了新东方管理队伍一层比一层更挫的现象。

    俞敏洪亲自上阵,狠抓改革。从新东方日前公布的财报也可看出一些端倪。

    新东方日前公布财报显示,新东方2019财年第二季度净收入5.97亿美元,同比增27.8%,增速为近五个季度来最低。

    另外,GAAP下计算,该教育集团运营亏损为2860万美元,同比扩大118.5%;归属新东方上市部分的净亏损为2580万美元,去年同期为净利润430万美元。

    这是新东方上市以来第二次在季报出现亏损,也创下了其上市12年以来最大季度亏损额。

    这个节目能在此时登台表演,对外公开,也可见俞敏洪的改革决心!

    你说场下管理者的心里阴影面积有多大?这个新年的滋味要不好过了!

    展开全文
  • 无论是身处什么行业什么领域,数据分析越来越成为一向必不可少技能, 而运用数据思维进行决策更能产生形成高质量决策结果。随着互联网不断发展和物联网设备不断普及,我们日...
  • 除吐槽公司管理问题外,这首歌也唱出目前职场中很多不良风气,一句“干活的累死累活,有成果那又如何,到头来干不过写PPT的”,更是引发不少职场人士共鸣。“干活不如写PPT”表达的是职场中一种不公平的感觉。有些人...
  • “他们冒着离职风险,要来吐个槽。我相信我们领导都一定非常开明,绝对不会因为一个吐槽节目,然后把他们弄得离职,也不会特别记住这六个演员名字。”这是在今年俞敏洪老师北京新东方学...
  • 到这里,真不敢再了,大过年,我怕挨打。为了不被你们打,我就送礼吧! 当当当当! CSDN联合百度送出2个猪鼓励、3个小度熊、5份台历。 小度熊和日历,想必大家都能想象出来!那么, 猪鼓励是什么? 它呀!它...
  • 当时可谓掀起了巨浪,其歌词精炼,一针见血,令人印象最深刻的是“干活的累死累活,有成果那又如何,到头来干不过写PPT的”。歌词充满了不甘和无奈,无论你是职场小白还是资深达人,可能或多或少有些体会。为啥干活...
  • 当时可谓掀起了巨浪,其歌词精炼,一针见血,令人印象最深刻的是“干活的累死累活,有成果那又如何,到头来干不过写PPT的”。 歌词充满了不甘和无奈,无论你是职场小白还是资深达人,可能或多或少有些体会。 ...
  • “干得累死累活,到头来干不过写PPT的”,“什么独立人格,只会为老板的朋友圈高歌”,“创新的没有几个,XX老师定的!美其名曰’延续性’实怕担责。” 1月24日,新东方教育科技集团在京机构举行内部年会,其中6名...
  • 不知不觉,春节就过去了,新年开工,朋友圈里...去年新东方年会里,一首改编歌曲《释放自我》刷爆了朋友圈,这种别出心裁的吐槽方式引来巨大的流量,而那句“累死累活干不过PPT的”歌词更是不绝于耳。为什么累死...
  • 累死累活,有成果那又如何,到头来干不过写PPT的。”今年初,某企业年会上的一首歌曲走红网络,这句歌词更是戳中了很多网友的心窝。干活不如写PPT,到底在吐槽什么?吐槽PPT吗?当然不是。PPT很重要。PPT做得好,...
  • 全文:1618字,阅读约需5分钟01—有朋友说,你这写的那个文章啊,读起来,特别费脑子,讲...“干活的累死累活,有成果那又如何,到头来干不过写PPT的”,某公司年会上,一曲改编歌曲迅速刷屏朋友圈、霸占热搜榜,引...
  • 不过,今年新东方员工在年会上唱了一首说“实话和人话”的改编版《沙漠骆驼》,更是引发了全国网友的轰动,其中最出名的一句就是:“干活的累死累活,有成果那又如何,到头来干不过写PPT的”!其实,六哥也想问问...
  • 图片来源:视频截图 “干活的累死累活,有成果那又如何,到头来干不过写PPT的”,今年的新东方年会上员工演唱的歌曲,这两天引起了无数网友的共鸣。它表达的不止是新东方一些员工的感受,也是在“年终总结季”很多人...
  • 最经典的莫过那句:“干活的累死累活,有成果那又如何,到头来干不过写PPT的”。可以说这句“干活不如写PPT”精准表达了对职场中“不公平”现象的吐槽,触动了众多“勤恳老实本分”者的情绪。确实,有些人平常工作并...
  • 早前有网友调侃“干的累死累活,有成果那又如何,到头来干不过写PPT的”。恭喜你,看完这篇文章,你也可以加入“干不过的PPT一族”。先不说写PPT是不是真的这么厉害,但写PPT除了选择风格、布局排版、内容制作等要费...
  • 去年,新东方的年会火了,全都是因为一首改编的歌曲《沙漠骆驼》,随之火的还有一种胜过任何开发语言的新秀—PPT。"干活的累死累活有成果那又如何到头来干不过写PPT的"这是今...
  • 年前新东方年会的一句“累死累活干不过写PPT的”着实狠狠地吐槽了一把那些“只说不做”的领导。但是吐槽归吐槽,我们是不是也要反思一下难道领导的PPT真的做的就那么有魅力吗?我们做的PPT差在哪里呢?PPT关于形状的...
  • 今天我要说说社畜们最讨厌的屁屁踢江湖有这个一句名言干活的累死累活到头来干不过写PPT的有人PPT做得好咸鱼翻身有人PPT做得不好直接被炒鱿鱼比如前几年因为PPT做得太丑被百度开除的前用户体验总监直接被台下的人起哄...
  • 今天我要说说社畜们最讨厌的屁屁踢江湖有这个一句名言干活的累死累活到头来干不过写PPT的有人PPT做得好咸鱼翻身有人PPT做得不好直接被炒鱿鱼比如前几年因为PPT做得太丑被百度开除的前用户体验总监直接被台下的人起哄...
  • 1月24日,新东方年会上的一曲改编歌曲《释放自我》在各大平台刷屏,该歌曲歌词中出现了如“干活的累死累活,有成果那又如何,到头来干不过写PPT的”等。 4月23日消息,谈及此前新东方年会引爆的“PPT”事件,新东方...
  • 职场上有句流行的话,“累死累活干不过写PPT的”。虽然其中不乏羡慕嫉妒恨的酸味,却也侧面看出,PPT的对于一个职场人的重要性。不管是对外,跟甲方谈合作、拉广告、引赞助,还是对内,工作述职、晋升考核,公开...

空空如也

空空如也

1 2 3
收藏数 42
精华内容 16
关键字:

干的累死累活干不过写ppt的