您的位置:首页 > 其它

What is an excellent programmer?

2009-12-03 19:54 435 查看
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.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: