《秘书工作手记:办公室老江湖的职场心法》书摘

你不经常找领导汇报,领导就是不高兴;你写文章不懂得研究借鉴,就是写不好;你老在微信上问“在吗”,别人就是讨厌你。

开局就给你介绍三个规矩。

件件有回音、事事有着落

如何培养自己汇报的主动性?石头的一位领导曾告诉石头一个诀窍。他说,首先,要永远把自己的工作当成最重要的,才能把握沟通的主动性和有效性;其次,对于汇报,永远要保持一种等不起、坐不住、慢不得的紧迫感,抢着说,追着说,理直气壮地说。

你的心有多大,决定了你能坐的位置有多高。这个心大,不是说野心,也不是说进取心,说的是包容心。如果你内心排斥领导、疏远领导、惧怕领导,甚至话不敢说、气不敢喘,你就很难从领导身上学到东西,结果就是不能成为领导。

“耿直姐”们坚信的,“做好自己、提升价值、专业过硬、独善其身”就能屹立于这个世界的信条拥簇者众多,他们相信和外界的交流并不重要,他们相信“酒香不怕巷子深”,他们相信“内向者优势”,他们相信“我不在乎别人的感受是为了让这个世界变得更纯洁”,

我自己在做产品的时候,常和别人说,酒香也怕巷子深,那么为什么自己做事的时候,没有认为呢?显然没有把他们当成一回事。

Reference

《参谋助手论:为首长服务的艺术》

《每天懂一点行为心理学》

《轴心:论秘书长》

《99%的新人,没用心做好的50件事》

《大手笔是怎样炼成的》

《怎样写文章》——王梦奎

《习近平用典》——人民日报社

什么时候会崩溃

父亲去世后,在去年(2019)的最后几个月,我并没有很悲伤。可能是因为我知道,我需要坚强,处理那些必须要我这个儿子去处理的事情。

但是到了今年,因为没有那么多的压力,也开始慢慢的有时间去读书,去研究自己的生活的时候,开始慢慢的出现了崩溃的迹象。特别是看到一些小的东西的时候,看到别人的父子的生活的时候,就会莫名的哭起来。

好在,我习惯了默默掉泪,即使是在办公室,也不会太过显眼。悲伤过后,只不过是一声长叹。唉!

父亲办公室的电脑中我拷贝下来的文件
我在推上看到的信息后的评论。

背景带给我们的影响

我目前在的组里有一个年轻的实习生,和我一样,都是程序员,目前在组里的工作,也是他负责了大量的开发的工作,而我更多的去做运营相关的动作。

在开发的时候,我发现了我们二者的不同。

在开发一个产品的时候,我的开发顺序是

先写后台功能-> 再写前台样式

而实习生则不同,他的顺序和我正好相反

先写前台样式->再写后台功能

这是个很有意思的现象,按照一般的软件开发顺序而言,我的开发顺序其实是不正常的,而实习生的顺序才是正常的。

这个问题让我思考,到底为什么我要这么做?

后来想了想,这个可能是我的出身问题,我从运维工程师出身,后演变成后端程序员,也就是近两年才开始成为一个前端工程师,这种路径依赖,让我习惯性先写后端。

不过,这样也有这样的好处,就是我会先去校验核心功能是否可以完成,再去搞定具体的样式,从而避免了有可能出现的UI都写好了,最后功能无法实现的问题。

巧妇难为无米之炊

我在做运营的时候,经常会陷入迷茫的状态。就是我脑海中的运营和开发的思维的冲突。

同事在分享:「运营要无能,产品经理要白痴」

给我一种很奇怪的感觉:这种什么都不用做的工作好不好呢?当然好,但是,是不是我们在什么场景下都可以去做呢?

中国古话,巧妇难为无米之炊,可似乎他们都在试图去想要做到无米之炊。这让我开始觉得这个事情不太对了。为什么你可以做无米之炊?这到底是你自己的能力,还是平台的能力?

要不要思考?但如果思考后条件不满足呢?

如果是平台的能力,这并不能算上是无米之炊,你在消费平台的资源。

头疼。头疼。

2020 年 3 月 月度总结

TL;DR

这个月买了新的设备 —— 口袋阅 ,读书时间显著提升。

月度总结

工作

腾讯的工作不开心。特别是我看了奈飞文化手册后,更进一步的明确了我为什么不开心,因为信息不透明。

  • 关于信息透明这个事情,我和小昱聊了一下,小昱觉得,这个问题其实不是信息透明的问题。实际上,任何人都很难做到信息透明,即使是我们 Team 的大 Leader ,也很难知道整个 Team 的工作。这个需要是我自己主动的提问。
    • 她提到,希望我能放低一些自己的身段,主动多问一些信息。这个东西我认可,因为的确是我自己的问题。
    • 回想一下,自己还是有点不够沉稳,还是因为自己过去的成果沾沾自喜。

这个月没有面试,依然是疫情的原因,不过换个角度来看,我也该去面试了。

生活

Side Project

  • 这个月给自己的两个小程序改了名,一个走个人整理的方向;一个走微信群辅助的方向。
  • 准备做多推
  • 准备做多抓
  • Telepage 还没有上线

这个月 Side Project 没有上线,希望四月份至少可以上线 3 个产品(多推、多抓、Telepage)

写作

本月因为工作的原因,写了一些文章,但是其实并不系统。希望四月份可以把最近做的一些知识储备给完整的整理出来。

暂定 4 月份文字产出 30000 字吧,平均下来每天也就 1000 字;我写的内容稍微一写就够了。

财务状况

本月财务状况总体可见

本月的整体开支较大;超出平均水平。

本月的最大的开支类目在教育侧,因为本月给自己报了个驾校,准备学个驾照,解决自己不会开车的问题。其次在数码产品,本月数码产品购买了 OSMO Pocket +一个显示器 + 给 iPhone 换了个电池,直奔 4000 + ;餐饮方面本月吃的比较好,所以比较高,但餐饮方面打算调整预算,而不是降低开支。

娱乐

  • 本月在娱乐上花了不少钱,买了不少 Switch 的游戏,应该在 2000 +

阅读

  • 奈飞文化手册
  • 重来2
  • 赢在下班后

年度计划对标

课程学习

一年学习 54 门课程,本月进度 0 门;全年进度 0/54;

图书阅读

一年读书 54 本,本月进度 3 本;全年进度 10/54;

电影观看

一年观看 54 部电影,本月进度 0部;全年进度 0/54

你为什么要当奋斗逼?

在绝大多数的人眼里,我都还算的上是一个很拼的人。

经常要做很多事情,有自己的成果,同时,还很年轻,可是,为什么,你还是这么拼?

有些时候, 我也在问自己,我为什么要这么拼?回老家每天老婆孩子热炕头不好么?以我的收入,回到老家,每个月绝对可以过的非常自在。但是为什么要坚持呆在大城市,不停的逼着自己往前走呢?难以相信我自己是为什么?

我自己想一想,可能是

  1. 我有太多想要实现的东西:从小我就有不少的想法,「志向远大」,虽然现实不停的击倒我。但因为我自己不断有产品产出,也让我自己开始不断的相信自己,不断的提升自己。
  2. 在我看来,大城市的生活挺好的:大城市的美女挺多的,很养眼。但可能这个问题结婚以后就没有了。
  3. 我所在的行业只在大城市:互联网行业基本上还是在大城市,小城市回去可以很好的生活,但是很难有很好的发展。当然,我自己本身就具备了独立开发者的属性,所以还好。但不争的事实是我回去的话,一定会很无聊,大部分时候都呆在家里。
  4. 我父亲的影响:父亲已经去世了,但不得不说,他给我留下了很多很有价值的东西。比如他的精神。从物质上,他给我留了两套房产,这些东西,都可以被我的孩子所继承。可是,我又能给我的孩子留下什么呢?
  5. 同侪压力:peer pressure 对于我来说压力挺大,我不会不由自主的将自己与那些优秀的人对比,无论比我大,还是比我小。比我大的会想如何才能向他一样。比我小的会想现在的年轻人真厉害,要好好加油。

但是我想,总有一天,我会从深圳离开,因为对于我来说,不一定要呆在深圳,还有更多适合我的地方。

《从零开始做播客:创造网红主播》书摘

第一章 开始筹划

你需要在节目一开始想通想好如何做下去

后期软件

Audacity

准备话题大纲

背景调查和紧急话题
如果是采访某人,需要在录制前做一些背景调查。找一些有趣的话题,在提纲中作为备选。我这么说是因为有时候嘉宾可能会在节目录制过程中怯场。通常情况下,每次提出问题或抛出新话题,你希望嘉宾可以回答、讨论,并且做出延伸。不幸的是,嘉宾有时只回答一两个字,让你措手不及。发生这种情况时,看看提纲中的紧急话题。
注意时间
注意时间也很重要。不要时间不足,也不要太久。确定短播客及长播客的时间范围。就我的经验而言,播客节目的合理时长大约是45分钟到1个小时。当然,如果你是乔·罗根这样的巨星,你可以录3个小时。但那是给铁杆听众听的。
有了提纲和时长设定,你已经做好了充足的准备。需要提醒一点,找到乐趣。对提纲的遵守过犹不及。把它当作谷歌,它一直在,当你需要时会来指导拯救你。

降噪

千万不要过度降噪!如果你处理降噪太过了,会削薄声音使之变得刺耳且有强烈的齿音,所以在降噪过程中需要注意参数调整

播客托管

推荐一个网站Fiverr.com。你可以用不到100美元的价格买到一张非常棒的封面图,节目的封面相当于一本书的封面。

结束语

访问podcastingpro.com发现播客未来动向方面的书籍,并订阅我的邮件列表获取最新内容及产品信息。我们也为需要全套解决方案的人提供咨询和剪辑服务。

Rust + MicroBit 按钮调试代码

#![no_main]
#![no_std]

use panic_halt;

use microbit::hal::nrf51::{interrupt, GPIOTE, UART0};
use microbit::hal::prelude::*;
use microbit::hal::serial;
use microbit::hal::serial::BAUD115200;

use cortex_m::interrupt::Mutex;
use cortex_m::peripheral::Peripherals;
use cortex_m_rt::entry;

use core::cell::RefCell;
use core::fmt::Write;
use core::ops::DerefMut;

static GPIO: Mutex<RefCell<Option<GPIOTE>>> = Mutex::new(RefCell::new(None));
static TX: Mutex<RefCell<Option<serial::Tx<UART0>>>> = Mutex::new(RefCell::new(None));

#[entry]
fn main() -> ! {
    if let (Some(p), Some(mut cp)) = (microbit::Peripherals::take(), Peripherals::take()) {
        // 引入两个版本的外设
        cortex_m::interrupt::free(move |cs| {
            /* 开启外部设备的 GPIO 中断 */
            cp.NVIC.enable(microbit::Interrupt::GPIOTE);

            microbit::NVIC::unpend(microbit::Interrupt::GPIOTE);

            /* 切分 GPIO 口,方便使用 */
            let gpio = p.GPIO.split();

            /* 将 Button 的 IO 口作为输入 IO 口 */
            let _ = gpio.pin26.into_floating_input();
            let _ = gpio.pin17.into_floating_input();

            /* 当 GPIO 17 ( A 键)出现了下降沿的时候,触发中断 */
            p.GPIOTE.config[0]
                .write(|w| unsafe { w.mode().event().psel().bits(17).polarity().hi_to_lo() });
            p.GPIOTE.intenset.write(|w| w.in0().set_bit());
            p.GPIOTE.events_in[0].write(|w| unsafe { w.bits(0) });

            /* 当 GPIO 26 (B键)出现了下降沿的时候,触发中断 */
            p.GPIOTE.config[1]
                .write(|w| unsafe { w.mode().event().psel().bits(26).polarity().hi_to_lo() });
            p.GPIOTE.intenset.write(|w| w.in1().set_bit());
            p.GPIOTE.events_in[1].write(|w| unsafe { w.bits(0) });

            *GPIO.borrow(cs).borrow_mut() = Some(p.GPIOTE);

            /* 根据需要,设置 GPIO 口作为输入输出口 */
            let tx = gpio.pin24.into_push_pull_output().downgrade();
            let rx = gpio.pin25.into_floating_input().downgrade();

            /* 将准备的 GPIO 口作为串口来使用 */
            let (mut tx, _) = serial::Serial::uart0(p.UART0, tx, rx, BAUD115200).split();

            let _ = write!(
                tx,
                "\n\rWelcome to the buttons demo. Press buttons A and/or B for some action.\n\r",
            );
            *TX.borrow(cs).borrow_mut() = Some(tx);
        });
    }

    loop {
        continue;
    }
}

// 定义一个中断(如果函数出现了错误,就会触发中断),当我从按钮按下接收到了一个中断,这个函数就会被调用。
#[interrupt]
fn GPIOTE() {
    /* 进入中断内部的内容 */
    cortex_m::interrupt::free(|cs| {
        if let (Some(gpiote), &mut Some(ref mut tx)) = (
            GPIO.borrow(cs).borrow().as_ref(),
            TX.borrow(cs).borrow_mut().deref_mut(),
        ) {
            let buttonapressed = gpiote.events_in[0].read().bits() != 0; // 识别出 A 键按下
            let buttonbpressed = gpiote.events_in[1].read().bits() != 0; // 识别出 B 键按下

            /* 将按钮打印到串口中 */
            let _ = write!(
                tx,
                "Button pressed {}\n\r",
                match (buttonapressed, buttonbpressed) {
                    (false, false) => "",
                    (true, false) => "A",
                    (false, true) => "B",
                    (true, true) => "A + B",
                }
            );

            /* 清空事件 */
            gpiote.events_in[0].write(|w| unsafe { w.bits(0) });
            gpiote.events_in[1].write(|w| unsafe { w.bits(0) });
        }
    });
}