降本手段一招鲜,增效方法吃遍天;
01
互联网行业里;
降本策略千奇百怪,手段却出奇一致;增效方法五花八门,手段更是花里胡哨;
对于企业来说;
商业的基本形式,就是围绕供需产生的利益关系;
很多决策的执行,都是基于利益最大化考虑的;
什么是 利益最大化?
更低的成本、更高的效率、更优的质量、更好的结果,没有最的说法,只有更的追求;
好听的讲,叫降本增效;不好听的讲,叫唯利是图;
企业对于降本增效的追求,感性上说底线没有,理性上说逻辑严密;
02
先来聊一聊:降本,最直接有效的手段:裁员;
不论是营收压力,还是业务瓶颈,都首选裁员来缓解困境;
人力资源的成本降低,保障公司运营的可持续,在策略上极具确定性,只是手段比较魔幻;
最近几年,某某厂裁员的热搜常有,网上吐槽的小作文也接二连三;
更离谱的是,裁员之后的降薪动作;
虽然,月薪直接打折的操作不多见;
但是,奖金上的闷棍却一通神操作,要么被打折,要么被打水漂;
为啥不是降薪,而是裁员?
降薪影响整体的氛围;
如果操作不当,很大概率会先把有能力的人打包送走;
裁员影响范围相对较低;
而且针对性明显,把混不动的人送走,倾向于做人做事都有问题的;
最骚包的是,裁员之后再招聘新人;
被裁的人还没签字,接替的面试者已到会议室;
越防线暴击,半点武德都不讲;
新人入职之后还可以给团队一些压力,保持一定卷的氛围,对公司而言何乐而不为?
裁员这件事,对于普通选手来说;
总有很多感性上不能接受的理由,但是都无法替代理性层面上的客观逻辑;
职场上,清醒很重要;
面对当下的互联网行业,裁员风波中,具备留下的能力,也有选择走的实力,才算稳妥;
03
相对于降本这个潜藏在暗线的策略,增效则是明面上常说的话题;
这里的效是指常说的效能,既有效率,也有效果;
效能的概念比较抽象,可以将其放在具体的实践中去理解,基于常规的事务执行流程即可;

无论是公司顶层的战略规划,还是项目层面的管理策略,又或是团队或者个人层面的具体事务推进;
在效能方面,都需要对齐的几个节点;
目标和过程的正确,结果和产生的效果反馈,即效能;
所以,效能围绕工作各个环节,比如:规划、决策、项目、业务、技术等;
效能的实践,是一个长期的过程;
对于效能的衡量也没有绝对标准,从实践中看,需要客观的相对标准;
在环境的不同时期,不同事务中,应对的策略也各不相同,效能的追求自然也要审时度势;
在企业中,不同层级的角色,看待事务角度不同,流程也有差异;
下面围绕研发这个视角,从事务推进的各个关键环节,来分析效能方面的问题;
04
【数字化转型战略】
互联网企业,围绕数字化体系的转型,是近些年的热门话题;
完整的路径:信息化,数字化,智能化;
此前,在数据服务公司待过两年,对数字化的应用和业务赋能有过一些实践经验;

从个人的实践来看;
信息化可以简单的理解为:组织、运营、业务流程的线上数据化过程;
数字化可以简单的理解为:基于数据的统筹分析,再反向驱动组织、运营、业务的能力体系;
智能化可以简单的理解为:基于信息化和数字化之上,更加智能的分析、决策能力;
随着数字化概念的普及和推广,大部分企业理解数字化的重要;
但是企业的数字化转型之路,实践的过程是曲折和漫长的;
对于转型来说,不同的企业有不同的业务和特点,并没有一套相对完整的标准来衡量成功与否;
从一个比较理想的状态来描述:实现全流程全场景的数字化管理;
在发展的过程中,通过对数据层面的客观分析,快速发现问题,支撑决策的制定和执行;
05
【组织决策层面】
站在企业层面来看,也许能接受短暂时间内走的慢,但是不太能接受方向上的错误;
走的慢,只意味付出的回报可能迟到;
方向错误,则意味付出没有回报;
很显然,对于互联网这个行业;
大部分的中小型公司,并没有试错的资本和时间,错过可能就是结束;
所以,组织在做决策时;
需要进行统筹分析和规划,极力追求目标的正确性和方向的准确性;
以研发过程中重大版本为例,来分析决策的流程;

组织针对事务的决策会议,通常控制在三次,目的就是对齐事务核心人员的认知;
决策正确与否的关键;
在于关键信息是否充分的表达和分析,从而形成影响决策的核心因素;
个人所在的企业中,对于那些以月或者季度为周期的重大业务版本;
在进行决策会议的前三天,就会下发相关的材料文档;
所有参与的人员;
会议上都必须表达对事务的看法,执行时可能出现的问题,由项目经理进行统筹;
然后各个团队分析问题,给出解决的方案和成本;
最终,完成对事务的各个维度统筹或取舍,形成预期规划,转入立项执行阶段;
在决策时;
如果信息不全面不充分,无法形成广度和深度的综合分析;
很容易产生错误的预期规划,后续的执行和结果自然也会出现偏差;
06
【项目执行层面】
项目推进的流程,通常追求质量、成本、时间的平衡;
在不降低质量的情况下,同时降低时间和成本,故而形成现在互联网的内卷状态;

在项目经理的视角下;
各阶段的并行推进,人力资源的介入时间,不同节点的转换,问题的协调和风险的规避;
都会对项目的周期产生较大的影响;
曾有一个预期为三个月的版本;
通过项目经理的精细规划,提前二十天完成交付,并且不削减各方的评估时间;
从项目的执行过程看;
从项目的最终结果看;
围绕需求的目标和指标体系,去衡量结果以及产生的效果;
形成项目的复盘总结文档,以及后续的优化方案,沉淀项目管理经验和知识体系;
07
【业务管理层面】
业务,企业的绝对核心;
很多组织架构、团队结构、流程机制,都是围绕业务设计的;
业务的完整周期;
业务的发展周期:孵化期、验证期、成长期、成熟期、衰退期、转型或者消亡期;

在周期性的变化中,很多特征会多次重复出现,问题也会持续出现;
深入业务的本质;
在不同的周期阶段中,抓住关键的问题和矛盾,设计和落实相应的解决方案;
问题必然会一直出现;
可能是对业务的洞察分析,客户的真实反馈,业务落地的各个过程;
在任何时间下都存在问题;
但是发现很多问题,却没有抓住和解决关键的问题,对业务的建设来说是致命的;
业务的流程路径;
以互联网业务的生意模式来看:流量获客、转化销售、围绕产品做持续运营;

在不同的业务场景下,其运作流程会有差异,但其本质上的逻辑是相通的;
业务体系的搭建过程中;
除了各环节的核心能力建设,还要围绕流程的推进做持续的优化管理;
追求业务流程中协作的顺畅和高效,降低业务流中不必要的人为操作,是增效的常用手段;
业务的细节刻画;
深入洞察业务画像,不断的挖掘和处理其内部的细节问题,助力业务发挥更高的价值;
对于业务的细节问题处理,更多是具体场景具体分析,这里抛一个场景案例;

在企业中,很少只存在一个业务线,而不同协作团队之间存在一定的壁垒,也是常见的问题;
对于服务客户来说;
在转化的过程中,商务人员通常更专注于自身负责的业务,从而忽略业务之间的联动性;
经过论证后,通过标签能力,尽可能的联动不同的业务线;
对这种细节问题的处理;
需要精确的把握业务场景,其解决方案的实现成本可能很低,但产生的业务价值却很高;
08
【技术研发层面】
研发体系,既要面对业务的复杂度,还要应对技术的复杂度;
团队分工角度;
首先从团队的分工角度来看,技术依赖很大的专注性,所以分工明确比较重要;

团队的分工,主要是以成员的能力为依据,业务开发可以根据个人的主观意愿进行适当的调整;
通过合理的分工设计;
让不同的成员都可以持续专注在一个方向内,从而避免节奏混乱引发的各种问题;
业务体系搭建;
于研发来说,通过技术手段完成业务到产品的落地,是工作的最高优先级;
但是从长期来看;
需要对业务深入分析和洞察,建立精确有效的指标体系,支撑决策,挖掘更高的业务价值;
技术体系搭建;
从业务维度来看;
在业务体系的搭建过程中,不断的拆分降低耦合度,沉淀公共复用的业务能力;
从架构维度来看;
持续追求业务和技术的分离,系统的分层设计,即使部分或整体的业务消亡,但是沉淀的技术价值还在;
09
从实践经验中来看;
企业对于降本的手段和策略,通常是比较直接的,并且具备确定性,从而规避不确定的风险;
虽然增效的呼声时常不绝于耳;
但是站在现状去考虑,提升效率依赖于组织对于各种事务的熟悉程度;
那么,问题来了;
对于当下的互联网行业来说,环境中的人和事变化频率非常高,增效的手段能否真正发挥其作用?
我试图获取一个长度在1到10之间的字符串,并输出将字符串分解为大小为1、2或3的连续子字符串的所有可能方式。例如:输入:123456将整数分割成单个字符,然后继续查找组合。该代码将返回以下所有数组。[1,2,3,4,5,6][12,3,4,5,6][1,23,4,5,6][1,2,34,5,6][1,2,3,45,6][1,2,3,4,56][12,34,5,6][12,3,45,6][12,3,4,56][1,23,45,6][1,2,34,56][1,23,4,56][12,34,56][123,4,5,6][1,234,5,6][1,2,345,6][1,2,3,456][123
我遇到了ruby正则表达式的问题。我需要找到所有(可能重叠的)匹配项。这是问题的简化:#Simpleexample"Hey".scan(/../)=>["He"]#Actualresults#Withoverlappingmatchestheresultshouldbe=>["He"],["ey"]我尝试执行并获得所有结果的正则表达式如下所示:"aaaaaa".scan(/^(..+)\1+$/)#Thislooksformultiplesof(here)"a"biggerthanonethat"fills"theentirestring."aa"*3=>true,"aaa"*2=
在我们的项目中,我们有一些“被遗忘的”类存在了很长一段时间。那些类已被其他类替代,但我们忘记删除它们。是否有一些自动化的方法/工具可以发现Ruby{onRails}应用程序中没有使用哪些类?谢谢! 最佳答案 这个问题已经被提出了很多次,但是最好的答案都在这里:FindunusedcodeinaRailsapp我个人喜欢日志解析:https://stackoverflow.com/a/14161807但在任何情况下,您都可以创建自己的记录器,扩展ActiveRecord::Base以创建一个观察器,该观察器将最常用的模块存储在数据库中
我正在研究Ruby解释器是如何实现的,并且出现了一个问题,但我还没有得到答案。这就是标题中的那个:因为Class(r_cClass)将super设置为自身(忽略元类,因为实际上super是r_cClass的元类),如果我向Class对象发送一个方法,这将在Class的方法表中查找'类(class)。但是Class的类是Class,所以我不应该最终寻找Class的实例方法吗?但事实并非如此,因为在文档中Class类方法和Class实例方法是分开的。在Ruby的eval.c中的search_method中,我没有发现对Class类有什么特别的检查。任何人都可以阐明这一点吗?
我知道我能做到:classParentdefinitialize(args)args.eachdo|k,v|instance_variable_set("@#{k}",v)endendendclassA但我想使用关键字参数来更清楚地说明可以接受哪个散列键方法(并进行验证表明不支持此键)。所以我可以写:classAdefinitialize(param1:3,param2:4)@param1=param1@param2=param2endend但是有没有可能写一些更短的东西而不是@x=x;@y=y;...从传递的关键字参数初始化实例变量?是否可以访问作为哈希传递的关键字参数?
我有一个模块,其中包含名为String的类(以及其他类。)我需要按名称查找该类,如果没有这样的类,则优雅地回退。moduleMod1moduleStringendendMod1.const_get'String'#⇒Mod1::StringKernel.const_get'::Mod1::String'#⇒Mod1::String到目前为止,还不错。当我尝试查找不存在的类时,我预计会收到NameError,这很好。问题是如果在全局命名空间中存在一个具有给定名称的类,它将被返回:Mod1.const_get'Fixnum'#⇒Fixnum我明白其中的原因,但我的问题是:是否有现成的方法仅
我在做:can:manage,:allifuser.role=='admin'can:approve,Anunciodo|anuncio|anuncio.try(:aprovado)==falseend我的第二种方法不起作用,因为:manage:all覆盖了它。有一种方法可以声明可以管理除批准之外的所有内容吗?在里面批准我只是做can:approve,Anunciodo|anuncio|user.role=='admin'&&anuncio.try(:aprovado)==falseend什么是更好的解决方案? 最佳答案 尝试换一种
试图想出一种更紧凑的方式来在HAML和Ruby中表达这个条件,也许使用三元运算符:-if@page.nil?%br(nothingyet)-else%br#{@page.name}(根据NeatwaytoconditionallytestwhethertoaddaclassinHAMLtemplate寻找类似的方法)您的帮助将不胜感激:) 最佳答案 您的代码使文本成为的子元素元素;这是不可取的。我认为,您真正的意思是:%br-if@page.nil?(nothingyet)-else#{@page.name}为此你可以简单地做:%b
我有一个长度为一个字符的字符串,可以是任何可能的字符值:irb(main):001:0>"\x0"=>"\u0000"我认为这可能有效:irb(main):002:0>"\x0"+=1SyntaxError:(irb):2:syntaxerror,unexpectedtOP_ASGN,expecting$end"\x0"+=1^from/opt/rh/ruby193/root/usr/bin/irb:12:in`'但是,如您所见,事实并非如此。我怎样才能增加/减少我的角色?编辑:Ruby似乎没有被设置为执行此操作。也许我正在以错误的方式接近这个。我想根据8位block来操作原始数据。我
要在没有block形式的情况下执行Net::HTTPhttps请求,您可以这样做:...http=Net::HTTP.new(url.host,url.port)http.use_ssl=true...但是有没有办法告诉Net::HTTP在进行block形式时使用https?u=URI.parse(url)Net::HTTP.start(u.host,u.port)do|http|#ifIputhttp.use_ssl=truehere,rubycomplainsthatthiscan't#bedonebecuasethesesionhasalreadystartedresp=http