程序员的显著特点

有一天跟一位同事跟我闲聊,讨论起过去若干年软件行业的感受,他问了个问题:你觉得一个好的软件工程师最显著的特点是什么?

我想了一会,说:大概是坐得住吧。

某种意义上来说,在互联网技术飞速发展的今天,信息的洪流总是无声无息间把我们掩埋,一不小心,可能就感觉自己似乎已经out了。

当然,信息有良种,也有莠子,有的信息能够让我们收获颇多,但是大部分信息其实都是八卦信息,与大家的关系并不大。

然而我们依然容易沉迷于八卦信息之中,总觉得能够收获什么。其实往往就是虚度光阴。

哪怕是那些专注于技术领域的大群们,也难免在某段时间过后,变成一个个水群,然后兴趣平平,不了了之。

造轮子,优秀开发者的共同之选

技术群里经常讨论的话题大概是某些开源轮子。尤其是.net的群,有时候遇到问题,就会有人说,要是造个某某轮子就好了,同样的东西隔壁java就有;或者是某某轮子出了个bug,然后集体声讨会开始,说作者连这么简单的问题都没考虑到;或者像ngnix卖了大价钱了,有人说,这东西我很多年前就有这个想法,要是当时就做了,那这个发财的一定就是我了。

然后长沙互联网社区的胡子哥有一句口头禅特别有用:你别想这想那,想那么多什么用都没有,你倒是干啊,别老想干失败了啊,万一干成功了呢?

所以在这个时代冷静的思考、时刻保持学习的态度,能够坐得住,大概是成为专业开发者的第一步。

而成为专业开发者之后,通过一个开源项目来练手,一定是一个非常不错的选择,在gayhub之上,许多不同技术类型的开发者都借助平台开创了自己的品牌,他们做了一个个优秀的开源组件,既成就了自己的价值,更是帮助了大量对组件有需求的开发者。前有vue尤雨溪,后有涛思数据陶老师,他们就是中国开发者圈子中的英雄伟人。

好吧,要撸一个vue.js是真的不容易,要做一个TEngine更是难上加难,那能不能挑个看起来简单的小轮子,例如excel的导入导出吧。

额,看起来很简单的东西,哪里有那么简单呢?

造轮子容易么?

造一个轮子,开头容易做好难。首先你得开始干,其次你得把事情干好,再次,你还得坚持。

然后你得做个每一个单元测试,还得考虑各种极限情况,现在开发者很挑剔啦,不仅要求功能齐全,还得性能优异(虽然大部分客户不一定用的到),还得考虑多种数据格式,你还得经常解决issues上大家提出的反馈并及时的修复bug,好吧,能够把这一趟水梭完已经很不容易了。然后你把你的轮子推送到了gayhub上,难免会在一些群里做一些推广。

于是你会遇到键盘侠们,他们都在吐槽说你干的这个东西:这么简单的东西,一个实习生就会干了。。当然,要让他们来干,除了从网上抄现成的代码,要自己撸,估计那几个单词怎么拼,都要花百度一下,正儿八经要把轮子造出来,估计得等十年也憋不出来了。。

有一位老师说得很有道理:中国不缺喷子,不缺那些所谓有想法的,缺的是能够把想法转化成显现实的人。

Magicodes.IE是什么,是怎么来的?

例如,长沙.NET社区的重要参与者李文强大佬和他的团队,就是这样一个善于把想法转换成现实的人。实际上这几个月来他们特别忙,基本上天天得特别晚才能回去,尤其是作为公司创始人的李文强,更是几乎天天都会加班到特别晚。

他说他大概是一个想法特别多的人,经常会碰出许多想法,但是由于时间实在是有限,许多开源组件都开始设计得挺不错,但由于开局太大、定制能力要求太高等众多原因逐渐的无法维护,最终不了了之。

这次他改变了想法,先设计一个比较易于拆卸的小轮子,实现一些基本功能,然后经过一波测试,获得了非常不错的反响,并获得了社区的认同,然后这个轮子也有幸得以成为NCC中的一个小组件。

Magicodes.IE:导入导出通用库,通过导入导出DTO模型来控制导入和导出,支持Excel、Word、Pdf和Html。

这确实是个非常灵巧的小轮子,虽然看起来很简单,但是他的功能还是很实用的,我相信大部分企业级应用开发者都值得拥有。

赶紧抛弃你们从网上下载的那些不靠谱的代码,把你们的Excel导入功能合并到这个小轮子上来吧!

下载地址:https://github.com/dotnetcore/Magicodes.IE

记住这个名字Magicodes.IE,Fork 一波,然后Star一波。。人生精彩从这里开始!。。

能看到这里的都是最优秀的程序员,升职加薪就是你了

@程序员,你们还在用网上乱找的方法导入导出Excel么,我们给你造了个轮子!!!!!的更多相关文章

  1. C#中缓存的使用 ajax请求基于restFul的WebApi(post、get、delete、put) 让 .NET 更方便的导入导出 Excel .net core api +swagger(一个简单的入门demo 使用codefirst+mysql) C# 位运算详解 c# 交错数组 c# 数组协变 C# 添加Excel表单控件(Form Controls) C#串口通信程序

    C#中缓存的使用   缓存的概念及优缺点在这里就不多做介绍,主要介绍一下使用的方法. 1.在ASP.NET中页面缓存的使用方法简单,只需要在aspx页的顶部加上一句声明即可:  <%@ Outp ...

  2. jxl导入/导出excel(网上的案例)

    jxl导入/导出excel 1.jxl导入/导出excel案例,黏贴即可运行 package junit.test; import java.io.File; import java.io.IOExc ...

  3. 程序员新人怎样在复杂代码中找 bug?

    分享下我的debug的经验 1. 优先解决那些可重现的,可重现的bug特别好找,反复调试测试就好了,先把好解决的干掉,这样最节约时间. 2. 对于某些bug没有头绪或者现象古怪不知道从哪里下手,找有经 ...

  4. (转)程序员新人怎样在复杂代码中找 bug?

    我曾经做了两年大型软件的维护工作,那个项目有10多年了,大约3000万行以上的代码,参与过开发的有数千人,代码checkout出来有大约5个GB,而且bug特别多,open的有上千,即使最高优先级的s ...

  5. 黑马程序员——JAVA基础之抽象和接口 , 模版方法设计模式

    ------- android培训.java培训.期待与您交流! ---------- 抽象定义:           抽象就是从多个事物中将共性的,本质的内容抽取出来.           例如:狼 ...

  6. 程序员微机课系列—我的nodejs多版本管理方法

    nodejs的多版本配置对于我来说一直都是一个较为头疼的事情.本人的开发工作会涉及electron以及前端,对于工作中使用的npm包(点名node-sqlite3和node-sass)在某些情况下,会 ...

  7. 你好,我是梁桐铭,.NET程序员,啰嗦下过去几年来的感悟吧

    序 所有的文章都会有序言,我的当然也不例外. 因为职业和工作的关系,很少有时间陪伴家人,感谢妻子10年以来的容忍和支持,感谢女儿给我生活带来的乐趣. 希望孩子长大了之后能热爱编程(可以不用以它谋生). ...

  8. 给IT新男的15点建议:苦逼程序员的辛酸反省与总结

    很多人表面上看着老实巴交的,实际上内心比谁都好强.自负.虚荣.甚至阴险.工作中见的多了,也就习惯了. 有一些人,什么事都写在脸上,表面上经常得罪人,甚至让人讨厌.但是他们所表现的又未必不是真性情. 我 ...

  9. 程序员谈学习:我为什么要学习Linux?

    http://kb.cnblogs.com/page/196876/ 好长时间没好好写点东西了,前段时间由于项目的需要出差了一个多月,期间各种加班,每天晚上加班到十点,回到宾馆实现是没什么精力再写博客 ...

随机推荐

  1. part11-LED驱动程序设计-part11.1-字符设备控制

  2. 12 Top Open Source Data Analytics Apps

    1. Hadoop It would be impossible to talk about open source data analytics without mentioning Hadoop. ...

  3. USDT钱包安装

    安装USDT钱包 wget https://bintray.com/artifact/download/omni/OmniBinaries/omnicore-0.4.0-x86_64-linux-gn ...

  4. 利用伪类选择器与better-scroll的on事件所完成的上拉加载

    之前给大家分享过一篇上拉加载 利用了better-scroll的pullUpDown 和DOM元素的删除添加  感觉那样不太好 今天给大家分享一个不同的上拉加载思想 代码如下 class List { ...

  5. ubuntu环境变量的三种设置方法

    一:设置环境变量的三种方法 1.1 临时设置 export PATH=/home/yan/share/usr/local/arm/3.4.1/bin:$PATH 1.2 当前用户的全局设置 打开~/. ...

  6. 认识一下ES6的Reflect和Proxy

    Reflect Reflect要替代Object的很多方法, 将Object对象一些明显属于言内部的方法放到了Reflect对象上,有13个方法 Reflect.apply(target, thisA ...

  7. 洛谷 3177 [HAOI2015] 树上染色

    题目描述 有一棵点数为 N 的树,树边有边权.给你一个在 0~ N 之内的正整数 K ,你要在这棵树中选择 K个点,将其染成黑色,并将其他 的N-K个点染成白色 . 将所有点染色后,你会获得黑点两两之 ...

  8. let & const 命令

    一.let命令 用于声明变量. 1) 所声明的变量只在let命令所在代码块内有效.(块级作用域) { let a=10; var b=1; } a // ReferenceError: a is no ...

  9. Android本地数据存储: ASimpleCache

    一:前言 在上一篇博客Android本地数据存储: Reservoir 博客中,我提到,除了Reservoir库,还可以采用ASimpleCache开源库,来实现本地数据存储.昨天并没有仔细的对比Re ...

  10. Element-ui学习笔记3--Form表单(一)

    Radio单选框 要使用 Radio 组件,只需要设置v-model绑定变量,选中意味着变量的值为相应 Radio label属性的值,label可以是String.Number或Boolean. & ...