一个老程序员和他的1000万小挑战

接触软件程序有二十几年了,将近五十岁的程序员,在中国我想是不多的,至少在我周边很少。

我本非猿,却做了二十年程序员,我本非财,却做了十年财务会计。

没做过什么轰轰烈烈的事,也没参加过什么伟大的项目,甚至都没有任何出格的事,人就老了。看着那些小年轻,心里极是羡慕。到了这个年纪,不敢谈什么适应世界、改变世界的梦想。毕竟,世界永远是年轻人的。

虽然没有什么资历,但是一路平凡,也看了不少风景。单就阅读量来说,我还是读了不少书的,涉猎也算广泛吧,只是比较肤浅。就软件开发来说,我个人还是有那么一些感触。

我算是程序员的一个特例吧,作为老板,自己写程序,大部分是却给自己公司用。偶而也会给朋友公司写点软件,至于完全的软件项目,则是给我的拍档去负责的。

先讲下个人经历:

最初的软件是用C语言、AutoLisp做CAD的辅助开发,也是为了工作需要,纯粹是爱好,后来找了专业的软件开发工作,也去华为面试过,不过人家不要我,估计是嫌我基础太差了。毕竟我是非专业出身的,当时不服气,后来才知道自己的基础有多差。再后来去了港资、台资软件公司,他们做事比较规范,自己也开始学习整理一些东西。再后来就自己出来开软件公司,败得一塌糊涂,以为自己能独立开发一个软件,就能撑起一片天。创业后才知道自己什么也不是,市场才是价值。花了几年才从失落的阴影中走出来。而这几年也是人长进最快的几年。

人生最苦恼的时刻,也是最成长的时刻,但是大部分人都因为没人帮助而一蹶不振。而我因为妻子的支持,让我走出了那些年的困境。当一个人完全否定自己的价值的时候,你会迷茫,痛苦,找不到方向。这时,你自然会去思考,我是谁,人为什么活着,是什么造成了我与别人的差别,那么我能改变自己吗。这几年,我写了大量的日记,有厚厚的好几本,大部分是关于人的意识的。也查阅了大量的书籍资料。从神经科学、进化论、宗教信仰、哲学寻求解释人是什么。而这期间,我大部分时间是在学习和写作上,工作只是偶尔给别人做个小项目而已。当然,自己的爱好,写程序是没有丢的,一有时间,我就完善自己设计的一个架构,这个架构也是我一直在使用的系统核心。

后来,我们有了点积蓄,开始与朋友合作,渐渐地开了几家公司,有贸易,也有制造。虽然都不大,但是都用上了自己开发的系统管理,还算规范。而我,主要的任务则变成了财务会计,几个公司的成本核算、会计报表都从系统出,当时自己设计财务系统就买了金蝶、用友的软件来研究了一段时间,总结了他们各自的优缺点,经过简化、改进后基本十年没变。

因为自己是老板,因此,对于系统需要做哪些功能是非常清楚的,十年下来,修修改改,公司就变得必须依赖系统才能运作了。

虽然我只是一个小老板,但是从一个老板的角度对于企业信息化看法,与普通的程序员,还是有些区别的。而我周边的朋友,也大部分是中小企业的老板,不管上市或不上市的,对于信息化的看法也都有自己的见解。

每当一个朋友要在公司上信息化项目时,如果要我提点意见,我都会首先规劝一下,小心再小心。对于现代化的企业来说,信息化是必然,但是并不是上一个软件就是信息化。

在刚出来创业时,就以为只要自己能给企业量身定制一套软件,就能给企业解决信息化的问题了。

而现在,自己才感触中小企业信息化的路多么漫长。

那些大企业,动辄几亿、多则几十亿的信息化投入,问题尚且多多,不要说小企业花那么几万、几十万就能做好信息化了。信息化的成本,软件投入往往只是其中很少的一部分,企业架构的整改,人员的配置,流程再造,任何一项都不是小事情。

看看市面上的那些软件,推出的那些产品,能解决什么呢,所谓的OA,什么考勤、工作计划、人事管理、通讯录、通知、制度、车辆、知识、会议、审批。看起来很多功能,但是对于中小企业来说,这些大部分是可有可无的。很多公司上OA,无非就是想通过软件来规范公司的制度运作。

可是,真的有效吗?

如果一个企业,连考勤都要靠系统来管理,你的下属来没来上班,你都没关注,你还能管好部门吗?对于老板来说,我需要的是员工产生了多少价值,而不是他来工作了多少小时。

工作计划,是每个人自己的事情,不需要告诉老板,老板要的是结果。你需要资源可以预先找老板,你怎么做事的,则不需要告诉老板了,否则你的上级或老板很累的。

通讯录,对于一个中小企业来说,管理人员是不能太多的,否则沟通成本就很高了,因此,人手一份通信录,每个员工自己会维护好,因为那是他的工作,他的饭碗。

通知,现在都用微信群、QQ群了,为了及时性,通常在群里吼一句的。

其实没有OA软件系统,企业办公现在一样可以很现代化。

 

而对于贸易公司,进销存软件,是必须的,但是每个行业都有自己的特点,通用化的进销存虽然能基本满足要求,但要做到精细化管理,则必须增加一些其他功能。

 

而对于制造企业,MRP是必须的,但是很多小企业一样没有也可以运行,因为他们有一套Excel表格,自动展开运算,虽然麻烦点,也可以获得结果。对于程序员来说,觉得那个太lose了。但是别人一样有好处,如果你那个不可靠的服务器或软件系统出现问题,他就没法工作了,那如果耽误一天,可能工厂就停机了。

对于生产计划,通常基础数据不准确的情况下,运算出来就只是个参考,而要搞准确那些基础数据,是要付出很大成本的。不是你的软件算法不行,而大部分是工厂管理和人员素质的实际情况限制了。

 

因此目前我们看到的景象就是:

    大平台软件服务商:整些标准化的OA功能、进销存功能、财务模块。通常大公司独立开发OA,所以其实对于中小企业来说,就是进销存这个还能用下,而OA也就附带用下,对于财务模块,中小企业怎么可能把财务数据放网上呢。

    小软件公司OA软件到处卖,但是都很便宜,因为产生的价值不大。能忽悠一个是一个,老板通常不会心动。

    财务软件,是标准化的,通常整一个盗版的用着就行,对于大点的公司,也只是买个标准版的正版软件,很少做财务管理的定制化开发的。

    制造企业的MRP、APS、MES等,都是必须项目式的定制开发的,每个企业根据自己的模式,甚至是企业管理人员自己的模式来开发。

   

    再来看做信息化的人,老板亲自来做信息化,是不可能的,因为他不清楚从哪开始。但他最清楚需求,就是要效益。下面的管理人员,并不关心效益,而是最大化自己的利益,就是工作最轻松,整好了,自己工资加一点。对于使用的员工来说,最好是不要增加我的工作量,但也不能不要我了啊。那实施信息化的人呢,希望每个人都支持自己的工作,尽快把软件系统上线完事。系统上线了,公司管理是否就规范了呢,成本是否就节约了呢,那不是信息化人员关心的。因为他们相信只要每个人按照预先设计好的行事,效益必然是有的,至于有多少,是无法估量的。

    对于软件开发公司,必然就是以最少的投入,获得最大的报酬,如果客户一直拖,要改这改那,是耗不起的。对于中型企业如果有那么几个人组成的IT部门自己开发系统,如果不好用,就说用户不配合,如果翅膀硬了,就飞走了。

   对于老板来说,投个几百万下去,过两年,企业规模扩大了,或变革了,没人跟进改进系统了,又得重新来过,那是很痛苦的。

 

    现在很多朋友,都苦于这种恐惧中,不信息化,就是死,信息化,可能短时间会更加混乱。所以我大多时候跟朋友说,企业管理的提升,是企业管理改革、自动化、信息化三者结合最好。找一家合适的咨询公司,从生产管理核心开始提升效率,采用工装自动化和软件系统辅助管理改善,至于其他的办公信息化、财务、供应链管理则是锦上添花的事情。

 

   作为程序员,如果你仅仅是研究计算机技术,那么看到的问题往往只是片面的,解决的问题也仅仅是局部的。无论你从事什么工作,多广泛涉猎一些不相干的知识,对于看到和解决问题可能更完整。

   任何的科学,任何的技术,足够深入的时候,才发现哲学才是根本。很多不是一门知识就能解决的。而就技术本身而言,其他领域的认知,会更多给技术一些新思路。

   就编写一个处理文件的函数,那么必须清楚什么是文件,佛说一切皆文件。那么你就会有更抽象的思考,对于文件就不只是硬盘或内存中有名字的那个文件,而可以是一切数据。一个字母,一个条记录,都可以是一个文件。“有名乃万物之母”,你只要给它一个人类意识的概念,它就是它。

 

  我以前写程序,都是一堆类似的代码,现在大部分都抽象了。而对于业务理解也一样。就如库存管理,销售出库、销售退货、采购入库、采购退货、库存盘点调整、领料出库等等很多不同种情形,是不是每个都做一个规范呢。开始时是这样,后来发现很多类似的处理流程,对于库存本体来说,不就是进进出出吗,而进出也是一样的流程,只是一个正数、一个负数。因此全部可以简化成一个流程处理。业务简化、程序也简化。对于现金、银行日记账等一样都可以抽象。

当一个程序员不只是将用户的需求简单实现,而是有能力站在企业运营的最终目标去思考时,才真正成为一个资深的程序员,一个有价值的程序员。

 

挑战一下,一个程序可以节省1000万投入:

一日朋友提起他们公司半成品库存积压问题,就是每天500-800吨的薄板钢卷要开料(电器的外壳等都是钢板),利用率要达到99.2%以上,员工手工排版,为了利用率,就开出了很多半年也用不完的料。朋友问我有什么办法不。我算了下,他们现在开出的那些料几千吨半成品,积压的资金有两千万以上,还需要场地堆放,需要人管理,找料也更困难,因此如果能将库存理想控制当天用当天开,那么产生的经济效益还是不错的。怎么解决呢,找朋友给了样板数据。

1. 问题要求:

    1)钢卷材料宽度固定为1200mm

    2)每天要开的板条宽度和数量由MRP系统跑出。

         样板数据(130.5mm,21条)(65mm,2条)(122.5mm,11条)(133mm,30条)(56mm,20条)(55.5mm,40条)(85mm,10条)

     就是要将宽度数据全部排列组合成多个1200mm,   

    如一卷钢,1200mm,可以开出122.5mm的9条,还剩97.5mm,可以开85mm的一条,还剩17.5余料,那么这样的开法,利用率肯定达不到99.2%的,因此要不断尝试。

   以上样板数据,需要多少卷1200mm的钢卷呢,怎么排?

  单从技术上来说,是无法完整解决问题的,因此要求程序员要站得更高一点,从管理者角度,看可以获得哪些资源。而如果你对于算法本身要解决的问题不能预估,那么就会陷入算法问题本身中。

   这是一个最优组合排列算法,如果你能解决这个问题,那么算法也算没白学。

   如果你能解决这个问题,我们可以一起创业去,身边很多的需求,可是没有人才来解决。

  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
作为一个月薪一万的后端程序员,需要掌握以下几个项目和技能: 1. 基本项目:熟悉常见的后端开发框架,如Spring、Django、Express等,可以独立完成简单的Web应用开发。 2. 数据库管理:了解关系型数据库(如MySQL、PostgreSQL)和非关系型数据库(如MongoDB、Redis)的使用和性能优化。 3. 接口开发和管理:熟悉RESTful API设计和开发,了解常用的API管理工具,如Swagger。 4. 安全性和权限控制:了解常见的安全漏洞和攻击手段,并能够使用相关技术保证系统的安全性,如加密、身份验证、访问控制等。 5. 性能优化:具备基本的性能优化意识,能够对数据库查询、接口响应等进行分析和优化。 6. 消息队列与异步处理:了解消息队列的基本概念和使用场景,掌握至少一种消息队列系统(如RabbitMQ、Kafka),并能够使用异步处理提高系统性能。 7. 缓存技术:熟悉缓存的使用,如Redis、Memcached等,能够根据业务场景合理使用缓存提升系统性能。 8. 分布式系统与微服务架构:了解分布式系统的基本原理,熟悉微服务架构的设计和开发,能够使用容器化技术如Docker进行部署。 9. 版本控制和协作工具:熟练使用Git进行代码版本控制,并了解协作工具如JIRA、Slack等的使用。 以上是一个基本的要求,实际上具体需要掌握的项目和技能可能会根据不同公司和职位要求有所不同。不过,以上列举的技能是后端程序员工作中常见且重要的技能,掌握它们可以帮助你在后端开发领域有较好的表现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值