4年技术经验

        从毕业开始到现在技术已经做了4年了。4年时间,从一个创业MIS型公司的小小程序员混到了现在的互联网企业的技术型PM(其实个人觉得自己应该被称为高级工程师,或者厚着脸皮的话称为“架构师”也行)。中间的道路虽然也是磕磕绊绊,当庆幸的是还总算是爬过来了。

       其实要说有什么大的经验也算不上,只能说跌爬滚打了4年时间,再怎么不长记性,忘乎所以,长了伤疤忘了疼,但是疤痕总归要留下一点?!只能说把这些曾经的伤疤拿出来和大家分享一下,怎么样让以后的同志们尽量少去碰石头或者投海。以前有人撞过了,投过了,以后能绕道就绕道吧!

       其实做技术呢,不能光去从技术角度看到技术,他牵涉到方方面面(这个不是说大话,我不是“叫兽(教授)”,更不是“装假(专家)”,没必要托大)。如果你光从技术角度去提升你的技术,你将会很快就碰到瓶颈,并且碰到瓶颈后没有什么好的办法去克服。那么我们在提升自己的技术之前要做些什么?怎么提升自己的自身的技术呢?

       第一:你先要认识你自己。作为程序员,其实我们90%或者更多都是很自负的。不要不承认,我也是程序员。我深深的了解自己所属的人群。你是不是经常有下面的现象发生:你看别人的代码都是垃圾,看自己的代码都很完美?你是不是觉得别人写的代码或者做的解决方案都不是最优的,只有你自己的代码或者解决方案是最优的?你是不是会觉得你的代码肯定没有bug,别人的代码肯定存在bug?……。太多了。如果这些现象在你身上发生,那么第一件事情就是:请你把它改掉吧?!程序员应该是谦虚的,上进的,否则在这个技术更新比换gf都快的时代,你不太能跟上步伐。

      第二:你是不是经常和人家争执?你是不是每个问题都争执?你是不是听不见去别人的任何意见?……。这点也请你改掉它。作为技术人员这个是特有的,我以前也是为了一个问题会和别人争得面红耳赤,情绪激动。最后往往是不欢而散。想想到头来对你有什么好处呢?技术和学术还是有区别的,技术不需要争论,技术需要的是真实,现实。当你们存在争论的时候最好的方式是去做一个demo,又能锻炼自己,又能说明问题。一箭双雕,何乐而不为呢?

       第三:不要有信仰之争。现在很多程序员,包括经常听到已经工作了十几年的技术人员往往也在说java比net好,或者是net比java好;window比linux好,linux比window好。这些派别,门户,俨然已经成为了一种信仰。但是不应该有对立啊!大家都是经过高中教育的,都是学过唯物辩证法的。一个东西肯定存在好的一面也肯定存在不好的一面。何况是两个东西比较呢?每个人的信仰可以不一样,但是信仰是用来去尊重的。不是用来争的。你可以有你的信仰,但是你也不能去污蔑别人的信仰啊?!Anders Hejlsberg和James Gosling尚且可以心平气和的坐下来谈谈,我们为什么就不能呢?再说了,我们又不是非得要靠net或者java吃饭的。我们就不能把net的优点和java的优点都拿过来用吗?

       第四:别眼高手低。不管是应届毕业生或者是老手,千万要记住一条。你就算再有水平,也要在别人见到你的水平后再去要求别人。不要上去给你做什么都感觉简单,都觉得大材小用,都觉得浪费你的聪明才智。然后往往紧跟出现的就是工作一团糟。美其名曰:这种东西老子不屑做。咳……。这个怎么说呢?你都觉得简单了,为什么不把它做做好呢?碰到这种问题,我只能说你最好还是换位思考一下吧?!

       第五:请关心开源社区。开源社区的优点就不多说了。如果你是一位net开发人员,我衷心的劝你一句:请关心一下开源社区吧!我也是net程序员,我也深深的了解net程序员的优缺点。但是请你们不要排斥开源,也不要一味的使用MS的产品。有的时候开源的东东能给你另外的一种解决方案,能让你看到另外的一片天地。你也不要觉得开源非常的高深,如果有机会,你也尽可能的加入其中。不为别的,如果你加入了开源组织,再提交了代码的话,你的简历是不是就加分了?你去面试的时候说我是“某某开源软件”的开发人员,你是不是觉得自己巨牛无比?我想面试官也会另眼相看,你觉得他好意思再给出一个拿不出手的薪水吗?

       第六:解决问题的时候,认清本质。最近我们组要开发一个MongoDB的客户端。因为开源的MongoDB客户端功能不完善,没有达到我们的需求,我就让我们组的一个同事开发。我知道他的水平,所以我故意不太和他讲具体怎么做,我也不是经常去问他做的怎么样了。完全靠他自己。我知道这个东西到最后肯定失控(没办法,交学费嘛)。上个星期五见分晓了:确实不行了。那么问题在哪里呢?就是该同志认不清他要做这个软件的本质在哪里?我只要达到什么功能就可以了!结果太多的功能都被复杂化设计,问题引出了新的问题,代码越来越多,越来越臃肿,伴随的现象也是越来越不着边际。使用了99%的时间去实现1%可能会遇到的问题,并且这个1%的问题并不是“2012”。这个软件就算是做出来,还是可控的吗?是不是又是一个焦油坑-----首先你的软件质量不能保证了;其次,你很难扩展;第三:你花费了太多无谓的工时……。

        第七:多看书,多看网站(不是小网站),多练习。我提升自己的经验是多看书和网站。在书上你经常能学到一整套新的技术;网站上的文章能给你一些架构上的思考。因为技术是学出来了,你可以通过书本突击;架构是改出来的,不是设计出来的。所以网站上的文章那种短小精悍的模式正好符合,所以需要提高技术就去看书,需要学习架构方面的知识就去看相关网站上的文章。至于练习,我觉得这个各取所需吧!反正我是不太做练习的,我看一边代码基本上就理解了,但是我几个同事是边看书边写代码才能理解代码的,这些其实也是个人的习惯吧!

         第八:学习提升主要靠自己。现在很多的人都觉得我来公司是来学习的;我在这个公司学不到什么东西。大家醒醒吧!公司不是学校,公司的本质是盈利,学校的本质才是教书育人。所以如果你想在公司里面学习东西,那么只有靠自己。别指望公司给你有多大的提升空间。除非公司万不得已,否则很少公司会正统的培训,培养员工。所以学习还是要靠自己,如果你只想着凭项目开发中学到的知识来支撑你整个职业生涯,别的时间可以用来娱乐,打游戏,玩,泡吧等等,那么我觉得你还是现在就转行吧!因为你可能过不了多久时间就要真的去考虑转行这个事情了。所以还不如现在就转行。俗话说;早死早超生嘛!

         第九:懂得推销自己。让别人没认识你的时候就让人家知道你。这个是我最近一年才得到的经验。以前我老是觉得进公司的时候可以拿低工资,然后等自己的水平展现后再要求公司提高待遇。但是这条路被很多人证明是不现实的。你进公司的工资往往就决定了你在公司的种种。而且你的要求公司一般也是不太会答应。公司有严格的薪水制度,他也要面临一碗水端平的环境,所以这条被证明成功极少。那么你是否能改变一下你的做法呢?让你在没进公司的时候就让人家知道你的水平,这样你是不是就能得偿所愿了?!

原文地址:http://www.cnblogs.com/Seapeak/archive/2010/05/31/1747866.html


深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
面试一个有4经验的C,是一项非常有挑战性的任务。在面试过程中,我会关注以下几个方面来评估候选人: 首先,我会从候选人的技术知识和经验出发。我会向他询问关于C语言的基础知识、常见问题和难点等方面的问题,以评估他对C语言的掌握程度。此外,我还会询问他在项目中所负责的具体工作和技术挑战,以了解他如何应对复杂问题和解决方案的设计能力。 其次,我会关注候选人的团队合作能力和沟通能力。作为一个有经验的C工程师,他很可能在团队中担任一定的领导角色或与其他开发人员合作。我会问候选人在过去的工作中是否与他人合作过,并询问他如何解决团队中的冲突或协调不同意见的能力。 此外,我也会对候选人的问题解决能力进行评估。在C语言开发中,遇到各种问题和错误是常有的事情。我会向候选人提出一些实际的编程问题,观察他的思考方式和解决问题的能力。 最后,我也会关注候选人的自我发展能力。C语言是一门不断发展和演进的语言,我会询问候选人是否有学习新技术和语言的计划,以及他是否有参加相关培训或独立学习的经验。 总体而言,面试一个有4经验的C,我会综合评估他的技术能力、团队合作能力、问题解决能力和自我发展能力等方面,以确定他是否适合当前的职位和团队。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值