zoukankan      html  css  js  c++  java
  • 我想做一个合格的工程师

    我想吐槽下,在新公司经过三个月的试用期,前两天终于完成了转正答辩,其实答辩就是两个我们项目组的两个项目经理(一个项目经理马上要离任了,另外一个新来的两个月,继任前者作为项目经理。),还有一个人事的同事。连一个部门经理或者稍大点的领导都没有参与我的答辩。感觉答辩的意义都没有了,但是巨坑的是,新项目经理说“有木有打算培训班学习想法”,“对数据库的应用要学习学习”,我想这不是赤裸裸讽刺我基础太差么?其实我确实来这家公司之前,没有用过MVC,这个能力也学稍弱与这个项目经理。但是我可以讲,我的其他能力绝对不输给他。因为他写的代码和一些功能点的实现方式都略有看过。以下我截图给大家看看:

    我要用left join,他说要用inner join不展示错误数据,其实我就想要把错误数据展示出来,发现后解决问题,隐藏使的问题永远不会保存,用户数据是越来越乱。

    我用in,他要用=,这个我了解了下,确实用in效率低,那是因为原来我们公司根本不需要太考虑这个问题,导致了我的写作习惯,执行速度客户接受即可,毕竟客户的数据量在那里。

    其实就上面我说讲的,我的问题,我改正。但是不要用那种你自己高高在上,别人差强人意,那种姿态。只是我没讲,并不是我不知道。

    说说今天的正题“我如何做一个合格的工程师”,作为一个web软件工程师,必须要知道基础四点:前端,后台,数据库,部署。每一点都是要求的,用专业名词叫做“规范”。其实这个规范,是长时间积累,文字描述出来的经验,方便所有人共同使用,提高工作效率,避免杂乱无章。先在这里提供《.NET之美》作者张子阳写的一篇《.Net 项目代码风格要求》 下面开始我就着这四点,逐步讲讲我的认识和心得,注意我会采取倒叙的方式,不当之处望大家指正。

    一、 部署
    a、 简介

    我们做一个web项目,总是需要安装部署到客户的服务器,服务器硬件及服务器系统软件不同,都会影响到软件的使用。

    b、 要求掌握

    1)、硬件:服务器分为刀片式、塔式、机架式

    2)、软件:Windows Server 系列,Linux 系列

    3)、网络:局域网,城域网,广域网

    c、 认识及心得

    为什么让大家要掌握以上一些知识呢,这是因为不同的客户层次,对于办公环境有着不同的要求,毕竟这些环境跟金钱都是挂钩的,小客户和大客户的考虑和经费都不一样的。这个使我们产品定位时,要掌握到的信息。这关系到用户数量,在线用户数量,并发量及数据量。这样我们又可以反推客户能给我们提供什么档次的部署环境。然后我们在编码阶段,代码实现方式肯定会因为这些条件影响。(注,Linux是可以部署.NET MVC,文章链接为http://www.cnblogs.com/wang_yb/archive/2012/08/22/2650960.html,此文章我没有进行验证)

    二、 数据库
    a、 简介

    数据库目的就是存储数据。现在主流的关系型数据库有Oracle、DB2、Microsoft SQL Server、Microsoft Access、MySQL等等。

    b、 要求掌握

    掌握sql语句,触发器,存储过程,函数,游标,视图,索引等等。每一个数据库语法虽然都一定的差异,但是基本上学习了其中一种,就降低了其他数据库sql语法的学习成本了。

    c、 认识和心得

    不管是谁,我想都会理解到数据是“金”概念。每当我电子产品出现问题,我们都会担心它里面的数据会不会丢失,会不会找不回来。每当有人使用我们的电子产品是我们都会当心他会不会把里面的数据误删或弄乱。可想,数据的有时候不是金钱直接可以衡量的,因为丢失或者弄乱就很难恢复了。

    以下为数据库设计提几点建议:

    1)、要保证表与表之间的强内聚弱耦合

    2)、尽量避免不必要的数据冗余

    3)、尽量不要把一对多的关系存储在某一个字段里进行体现。

    4)、列名一定要清晰易懂无歧义,尽量使用约定俗成的名称,不要随意标新立异

    5)、重中之重的一点,表名,列名要注释

    6)、可适当通过外键建立表关系

    注:其实这些大部分都是属于三范式的要求,但是我发现很多人在设计的时候,都在考虑后期通过sql读取数据方便,并未考虑数据的维护,和业务是否合理。
    三、 后台
    a、 简介

    其实这个很简单,就是C#,有很多人都认为C#很好学,Java难学,但是我的没有感觉,一个语言的精通需要通过很长时间的积累的。

    b、 要求掌握

    其实就是我们很多书上讲的,这些掌握了,基本开发不难

    c、 认识和心得

    1)、要有代码分层分类概念

    2)、好的注释习惯

    3)、规范的编码风格

    4)、封装能力强(精简的参数,少用重载,多用可选参数)

    5)、能够将代码进行调优

    6)、列名一定要清晰易懂无歧义,尽量使用约定俗成的名称,不要随意标新立异

    四、 前端
    a、 简介

    这块就是html部分,也是很多.net工程师的弱项。当然也是我的弱项。但是基本的调整,和一些代码规范我都会的。这里还牵扯到,项目各类文件夹和文件的放置,这个也要有要求。

    b、 要求掌握

    html、css、JavaScript

    c、 认识和心得

    1)、css和js引用顺序,先css再js

    2)、js我一直认为是提高体验度的,并不适合大量的客户端运算

    3)、对前台代码,要做垃圾清理,无用的和无意义的注释都要清理掉。

    4)、封装js

    5)、会调试,css和js

    6)、会一定的前端调优

    这里做一下1~6楼的统一回复:首先非常感谢各位园友拍砖,我写这篇文章,是顺便吐槽,而不是主要吐槽,大家尽量关注内容的重点,对这个拍砖,我们才能从博文中一起学习。我相信大家都听过一句,“你可以对我指点指点,但请不要对我指指点点”。我也强调过,是我的问题,我一定改正,这个是对有我的进步。我的弱点在哪里我其实清楚。新同事在互相不了解的情况下,多多了解以后再下定论,而且还不确定的千万不要说,因为大家都工作好几年,都会有自己的固定思维。我前面提到的问题是有在项目组抛出来类似问题的,所以没有必要拿出来单独针对他讲,或许他在实现上有他自己的考量。总之吧,我并没有什么玻璃心啊,也没有什么沉不住气。打压也要你确实有这样的问题,有问题直接说问题就好。不要故意把小问题放大化,特别是一些特定的场合,否则那只会让别人认为你是假。做程序的都讲究一个踏实,程序运行和你工作能力紧紧绑在一起,都是没有办法骗人的。
    版权声明:

    本文由z-albert原创并发布于博客园,欢迎转载,未经本人同意不可以修改原文内容且必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利。如有问题,欢迎留言,也可以通过y442926727@qq.com 联系我,非常感谢。

    由于本人技术能力和文字表达能力有限,若有描述错误或描述不清,恳请批评指正!有兴趣者可加群:144063225参与交流

    更多内容,敬请观注博客:http://www.cnblogs.com/z-albert/

  • 相关阅读:
    深度学习:Keras入门(一)之基础篇(转)
    《神经网络与机器学习》导言
    GAN综述
    VS2017专业版和企业版激活密钥
    IntelliJ Idea 常用快捷键列表
    数据库SQL优化大总结之 百万级数据库优化方案
    git使用教程
    VS2015常用快捷键总结
    心跳包实现
    基于OAuth 2.0的第三方认证 -戈多编程
  • 原文地址:https://www.cnblogs.com/z-albert/p/4660245.html
Copyright © 2011-2022 走看看