一个项目做完以后,不能就让它这么“完”了

程序员的日常工作就是做项目,一个接一个,没完没了。 

刚开始工作的时候,还能通过做项目学到很多技术知识,感觉进步巨大,成就感满满。

慢慢地就觉得进步不那么快了,机械地做一个个项目,重复使用现有技能。做完回头一想,脑子里能留下来的似乎只剩下疯狂加班的镜头了。

但是我们不能够让一个项目做完以后,真的就“完”了,要去想一想,自己加班加点努力了这么久,到底留下了什么?你自己获得了什么,有哪些成长? 有哪些东西是可以加入自己简历的“亮点”?

这些亮点包括:

做项目的时候有哪些技术挑战,是怎么解决的?

使用了哪些好的工程实践? 例如单元测试,持续集成......

引入了什么新的工具提高了效率?

是不是自动化了某些繁琐的工作?

......

拿我个人的经历举例,在做一个欧洲税务相关的项目时,把一些看起来很复杂的税务逻辑抽象成二维坐标上点的移动,降低理解难度,简化了代码逻辑,这就是亮点。

再比如说在工作之外自学单元测试,然后引入到项目中来,对核心业务逻辑进行测试,提高产品质量,这也是亮点。

也许你找来找去,实在找不到,原因可能有这么两个:

1. 项目实在是太简单


2. 你负责的工作太简单。

如果是前者,没什么可说的。

如果是后者,那就要思考一下了:作为一个已经有工作经验的程序员,是不是不够积极主动?

比如总是等待领导分配任务,从来不敢主动要求? 

对于有挑战的任务有畏难情绪,总想逃避,总想挑软柿子捏?

对于项目中存在的问题,是不是习以为常,司空见惯,不敢当“刺头儿”改变它?

是不是习惯于熟悉的技术和工具,不敢尝试新东西?

......

主动出击和被动等待,决定了你是一个深度的贡献者还是一个旁观者,两种行为导致的结果差距会非常之大。

对于没入行的人来讲,简历上要有项目经验,对于已经工作了的人来说,简历上应该有亮点。

我们都不希望工作了几年以后,简历上只是一堆项目经验的堆砌。那样的话只是不断地才原地踏步而已,没有任何成长。

有人说:不管你是不是准备跳槽,每年都整理下自己的简历是一个很好的办法。

我想说的是:到了年末才整理简历,去做总结有点晚了, 应该在每个项目结束以后就去整理,时刻提醒自己:要有成长,不能原地踏步。

相关阅读:

(完)

你看到的只是冰山一角, 更多精彩文章,请移步《2016文章精华》或者《2017文章精华


码农翻身

用故事讲述技术

640

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
总结: 1、关于C#的知识 (1)、文件输入输出—数据流 1、FileStream类 例子: SqlDataReader reader = job.WriteFileToTxt(); FileStream jobStream = new FileStream(@fileName,FileMode.Open,FileAccess.ReadWrite);//覆盖 //FileStream jobStream = new FileStream(@fileName, FileMode.Append, FileAccess.Write);//追加 StreamWriter streamw = new StreamWriter(jobStream); string outfiles = null; streamw.WriteLine("此次任务信息如下:"); streamw.WriteLine("outfiles");//读取毕后换行 reader.Close(); streamw.Close(); jobStream.Close(); 数据流一定要用try/catch语句块包起来,同时,例子中的fileName是文件路径,如果是*.txt之类的则默认存储在程序 的文件夹下 FileMode有很多枚举成员,其中 1)Append是打开现有文件或者创建新文件,其只能和FileAccess.Write一起使用; 2)Create是如果文件不存在,则使用CreateNew,否则使用Truncate,其要求FileIOPermissionAccess.Write; 3)CreateNew创建新文件,要求FileIOPermissionAccess.Write,如果文件存在则异常; 4)Open打开现有文件,能力取决于FileAccess的值(Read,Write,ReadWrite),如果文件存在则异常; 5)OpenOrCreate打开或创建,FileAccess.Read--FileIOPermissionAccess.Read,FileAccess.Write/ReadWrite-- FileIOPermissionAccess.Write,FileAccess.Append--FileIOPermissionAccess.Append; 6)Truncate打开现有文件,文件一旦打开将被截断为零字节,试图从使用Truncate打开的文件中进行读取将异常 注:SqlDataReader使用后一定要关闭 2、写文本文件 string text = Console.ReadLine(); StreamWriter streamw = File.CreateText(@"E:\test3.txt"); streamw.WriteLine(text); streamw.Close(); 读取文本文件 string txt = ""; StreamReader sr = new StreamReader(@"E:\test.txt"); while (!sr.EndOfStream) { string str = sr.ReadLine(); txt += str + "\n"; } sr.Close(); Console.Write(txt); Console.Read(); (2)、产品的框架 1)Model类:对象层,制定对象的属性和方法; 2)IDAL类:接口层,定义在SQLDAL中需要使用的方法; 3)SQLDAL类:数据持久层,实现接口中的方法,用DBUtility类中包装的SQL方法操作数据库; 4)BLL类:业务逻辑层,定义调用SQLDAL类中的方法,被WEB类中的事件调用,联系数据持久层和WEB表示层,中间桥梁 ; 5)DALFactory类:创建接口类型的CREATE方法,在SQLDAL中创建接口对象; 6)DBUtility类:创建各种SQL方法,实现数据的调用; 7)WEB类:表示层,设计页面格式(HTML)和实现各种事件(JavaScript) (3)c#中执行sql语句时传递参数的小经验 1> 直接写入法: 例如: int Id =1; string Name="lui"; cmd.CommandText="insert into TUserLogin values("+Id+",'"+Name+"')"; 因为Id是数值,所以在传递的时候只需要在sql字符串中用"+Id+"即可实现,而Name是字符串,所以在传递的时候还需 要在"+Name+"两边各加一个单引号(')来 实现; 2>给命令对象添加参数法: 例如: int Id =1; string Name="lui"; cmd.CommandText="insert into TUserLogin values(@Id,@Name)"; //上条语句中直接在sql语句中写添加的参数名,不论参数类型都是如此. SqlParameter para=new SqlParameter("@Id",SqlDbType.int,4);//生成一个名字为@Id的参数,必须以@开头表 示是添加的参数,并设置其类型长度,类型长度与数据库中对应字段相同 para.Value=Id;//给参数赋值 cmd.Parameters.Add(para);//必须把参数变量添加到命令对象中去。 //以下类似 para=new SqlParameter("@Name",SqlDbType.VarChar,16); para.Value=Name; com.Parameters.Add(para); 然后就可以执行数据库操作了。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值