What is an excellent programmer?

What is an excellent programmer?
  Every profession has its own elites. So does programming. Programming concerns more things than codes. It
is an art other than techology. It takes practice to be an excellent programmer. An Excellent programmer
shoule have:
  1. Proficient in one or two programming langauges
    Without any doubts, programming languages are the core of computer science. You don't have to learn
    many languages, one or two of them is enough. But you must good at it. Here I wanna say something
    beyond this article: THERE IS NO such a language which is better or strong than others. They are all
    the same following the same paradigm --- traditionally compile, assembly,linking and executing. Many
    programmers waste a lot time arguing which is better. And many poor programmers blame the programming
    language rahter than their programming skills. For programming, the true stuff are programming skills,
    data structures, algorithms, design and debugging skills. Codes or programming languages are one
    implementations. For a question, we can solve it in any language. Each language is deisgned to solve
    a kind or a range of problems. The difference is whether this language suites this problem, but not
    this is better than that or any one.
    Among all of languages, C and Java are strongly recommended. With C, you can practice your programming
    skills, algorithms, data structures and debugging skills a lot. When programming in C, you are forced
    to consider many things like memory, like efficiency and like data structure which are good practice
    of programming. Some other languages like Java is said to spare programmer from worrying about memory
    efficiency and data structure. That might be true, but with a lot traps in it. Only can you avoid those
    subtle traps after having a lot experiences of dealing with them. In addition, C has a close relationship
    with Unix/Linux system. Through C, it is much easier for you to master Unix/Linux system. Because all unix's
    system calls are standard C functions.
    After enough with C, you should use Java. Java, however, spare you from being stuck with low-level
    detailed things like memory or data structure. It is full OO and has a very good encapisulation of
    those low-level stuffs. Programming in Java, you can practice OO, design, UML, design pattern and
    software engineering a lot. Those things are extremely useful when you are building a software.
    No matter what langauge you are mastering, try to abstract skills which is language independent. Try to
    remember langauge is only one implementation.
  2. Master one platform, including its commands, its mechanisms, system calls and kernel
    Like programming langauges, all operating systems follows the same conventions, too, although they
    have different names, different look and feels, different mechanisms different UI and different
    implementations. All of them must manage resources including memory, CPU, BUS, hardwares, provide
    I/O functions, provide services and provide shells for user to control the computer. By learning
    one platform, you will understand all of those things. Again, when you are digging into one platform,
    you should notice those platform independent features. That is our goal.
    Among all systems, Unix/Linux are strongly recommended. It has a clear architecture and much easier
    to learn than others.
  3. Master OO, UML, Design Pattern and Sotfware Engineering
    Any peice of application is a software, even your hello world toy. A great software is out of a great
    architecture. A great architecture is out of a great design. A great design takes a great mind and
    other excellent skills including OO, Design Patterns.
    There is one thing to note: OO, UML, Design Pattern should be used in requirement phase, architecture
    phase and design phase. They are software architecture tools. Once you have built them in design, then
    you can implement it in any programming language. It is a big mistake that only OO confirming languages
    can build applications in OO way. If the design is OO enough, we are able to implement it in C or assembly,
    which makes it well OO.
  4. Master sufficient and essential algorithms and programming tricks
    Without any doubts, algorithms are soul of programming. A peice of software cannot function well by a bunch of
    slow programs. But we must understand the trade-off and make the right decisions and do the right thing. In
    a word, we try to make the best thing, not fastest. Faster is not always best.
    Programming tricks includes  programming styles, conventions. It concerns about clarity, readability,
    extendibility, maintainability and others.
  5. Master one or more areas of Computer Science, such as network, database, protocol, compiler,
     data structure, drivers, OS, Internet, Web, algorithms or others.
     All above three are concerned and necessary in every area and every applications, they are the common
     skills. While these things are your specialized area. Every software are desinged to solve problems of
     an area. SQL server of Microsoft are for database. MSN are for Instant Messaging across Internet. Gcc is
     a compiler. Linux is an Operating system, and so forth. Any expert or specialists dig into one or
     more of these areas. By less and better rule, you had better dig into only one of them, but make it good
     enough.
  In all, an excellent programmer must have a good comprehension and solid experiences on all topics discussed.
Do we, you might wonder, really need so many things when we are developing a peice of software? Absolutely, every
software must be consruted with programming languages, run on some platforms/Operating systems, solve a
particular area problems. The solution must be based on some algorithms. The codes must be organized in a OO way.
The software must be designed in OO way and comprise of Design patterns. The development of software must be
supervised by software engineering paradims.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值