在看了胚子的一篇
作为开发者,在站队和选择中什么才是我们的根本?和此文章以后的那么多评论,我有一点这么一点点不够成熟的想法,当然,对于这些算法来说,或者是知识,我觉得分析还不够全面,当然,我的分析代表了自己的观点,我只能尝试用严谨的语言和态度对这个问题做出一点点分析.
正因为有了这些才会有语言之争、使用不同语言不同IDE平台程序员的对立,JAVA VS .NET PHP VS RUBY ON RAILS。在站队和选择中,很多很多程序员迷失了,也许框架、语言确实给我们带来了便利,也许我们有选择或无选择的使用着软件提供商开发的IDE拖拉着控件开发程序也感觉没有什么不好,也许你认为这样是天经地义的也是大势所趋的,但是 BUT 你在站队 选择中失去了自我。
当然,作为一个程序员,技术每天都在变革,那么,我们怎样保留自己的位置,不站错队,我觉得是非常困难的(并不代表无法实现),当然,我们程序员每天都在被技术的革新所冲击,那么我们都经历了哪些?是c/s,b/s..还是c,c++,java,c#..还是网络应用的asp,php.asp.net?还是网际协议的tcp/ip等,那么你想站哪个对,那么我们简单的做一下几个例子:
我们从国内外对技术的态度和运用,环境和用户几个方面分析:
国内外:
对于国内外的技术使用,作为国内的程序员大家应该是有目共睹的,c/s还是b/s我无法说谁是热门,至少从csdn,博客园等权威还是不够权威的文档,可以了解到b/s可能是技术趋势,只能说可能,那么你是否只选择b/s开发呢?我觉得b/s开发中,我们需要更多的理解javascript(先不讨论各个语言的速度或效率问题),无论你选择jsp或者.net,还是php,asp,c/c++的思想都非常有用,那么我们是否只需要学会jsp或.net?而b/s是否真的比c/s好?对于计算机网络,是需要了解的,而不需要详记TCP/IP协议,那么随着网络的发展,是否b/s就替代了c/s,那得看网络,至于现在的我们,需要更脚踏实地的学习,我觉得胚子的那第二点和第三点是非常好的
2、有迭代法、穷举搜索法、递推法、贪婪法、回溯法、分治法、动态规划法中您掌握了哪些?
3、线性表、栈/队列、串、多维数组、广义表、树、图、排序、查找、文件 这些数据结构的基本概念您是否都了解和明白?
无论做c/s,b/s开发,这些思想都需要,一个产品和一个好的产品都是需要有底蕴的,这个底蕴是技术的熟练度,为什么有人flash可以做的很好,asp也可以做的很好(pjblog)?这些都是应该思考的.
环境:
如果你想做泡泡网还是中关村在线,jsp,.net都是不错的选择,php也非常敏捷,但是作为技术人员,我们是否应该考虑到用户?比如很多企业还是用asp的,从技术角度上说asp过时了,或者从工资待遇上说asp不是选择的最佳方案,但是我的意思是,在站队的过程中,你是否考虑到我们国内的环境呢?国内很多用户连b/s,c/s都不知道,就中国电信这种服务和宽带,一般人也不想去搭建asp.net或jsp网站,还不如下个asp+access,php+mysql网站好了,这是国内很多人的一个想法.
对于这个想法,我觉得是非常可以理解的,我们总是在说技术是多么的完善,成熟,但是却忽略了这个市场,对于我们也是这样的,站队,还是学基础知识,都要考虑到市场环境,在对于一个项目的技术选择.往往也不是一个人可以决定的,但是一个成熟的开发人员,不会因为今天ajax是热门就站队,况且ajax,rss,xml都是很基础的技术,这些都不应该作为技术人员站队的选择,(比如,那个企业要招聘ajax,我现在开始学),更多的是了解一个趋势和基础应用,javascript,html都是基础,有这些基础对于ajax,xml都是比较好理解的.
用户:
有一段时间对于b/s,c/s的讨论特别激烈,我觉得这些都是浮云,先从技术上说,c/s,b/s难度都差不多,在数据库,服务器上来说,可能b/s开发快一点,对于计算机技术的理解不需要c/s那么深入,但是c/s的思想深深的影响到了我们,但是对于初学者,我认为学自己喜欢的才是最重要的(个人意见),而对于用户来说,c/s,b/s都无关紧要.
当然这里还要提这一点:国外对于b/s的应用是很多的,国内的却没那么多,为什么?跟网络和人们对计算机的概念都有关,试想,你妈妈会下一个搜狗输入法么?可能会,可能不会,我想更多的人是不会的.
所以这样讨论b/s,或者c/s都是不切实际的,虽然有在线杀毒,但是如今在线杀毒能替代本地的杀毒防火墙吗?我想只有虚拟技术出来了才能继续讨论.
所以,一个企业的应用是考虑怎么赚钱的,作为程序员或者开发人员,站队,应该站技术的队,还要跟企业走,当然,如果你想在作坊混的话,学习一两门技术是不成问题的,但是要站好队确实很难的.
不得不提的基础知识:
1、您买的书中是否有诸如 图论、概率论、统计学、数据挖掘、TCP/IP协议详解、现代数学手册、等等底层并且基础的书?这些书占您所有书的多少比例?
2、有迭代法、穷举搜索法、递推法、贪婪法、回溯法、分治法、动态规划法中您掌握了哪些?
3、线性表、栈/队列、串、多维数组、广义表、树、图、排序、查找、文件 这些数据结构的基本概念您是否都了解和明白?
对于这些,从应用上说,我觉得了解就够了,当然你都精通,你可能是个比尔盖茨的人物,我们这里不讨论这样的高手去站队,我们讨论的是一个一般的程序员怎样去站队,就好像我们开发OA而不需要了解vista的内核(比喻)一样,当然,你开发OA系统同时你对vista内核相当了解,甚至可以自己去写个vista,你是个高手,我认为你的OA系统可以写的非常强,而你不了解vista内核,你也可以写一个非常强的OA系统!
对于以上基础知识,我觉得2,3两点是非常需要的,但是对于数据挖掘等,如果我有同事比我更强,能写sql server(比喻),我还为什么要去更他拼个你死我活呢,大家相安无事才是王道.
我这里讨论了比较少的站队有关的东西,虽然题目是有关站队的,但是我希望分享,分享自己的一点思考,无论是正确还是错误,是成熟抑或幼稚,我想,一个新程序员会不知道我最终说了怎样去站队,当然我希望有更多有经验的一起分享自己的站队经验.至于我是否说了怎样站队,希望能让大家来评价.但我主张的还是基础很重要,但是有选择.