노무현 대통령 배너

티스토리 툴바



2010/10/01 13:28

[펌]위대한 프로그래머

우연찮게 트윗을 보다가 따라가본 링크...
상당히 공감이 간다...

Characteristics of Great Programmers

David Veksle does an excellent job of describing them:

A programmer spends about 10-20% of his time writing code, and most programmers write about 10-12 lines of code per day that goes into the final product, regardless of their skill level. Good programmers spend much of the other 90% thinking, researching, and experimenting to find the best design. Bad programmers spend much of that 90% debugging code by randomly making changes and seeing if they work. [...]

Great programmers spend very little of their time writing code – at least code that ends up in the final product. Programmers who spend much of their time writing code are too lazy, too ignorant, or too arrogant to find existing solutions to old problems. Great programmers are masters at recognizing and reusing common patterns. Good programmers are not afraid to refactor (rewrite) their code constantly to reach the ideal design. Bad programmers write code which lacks conceptual integrity, non-redundancy, hierarchy, and patterns, and so is very difficult to refactor. It’s easier to throw away bad code and start over than to change it.

Yes, I realize this is one of the self-congratulatory articles that programmers write when they want to describe themselves. But it is still useful to know how good programmers do their work. On the other hand, it is perhaps more useful to understand how some programmers never manage to channel years of experience into writing good code.

There are many kinds of mistakes made by software developers, but the “jump directly into coding and stay coding” is perhaps one of the most common. The reason being that this method works extremely well for small problems, can work with some effort for a few non-trivial problems and totally breaks down for commercial software that requires multiple people on development staff and is used by users of different skills and personalities.

One way of thinking about this is that bad programmers do not care about quality and are only interested in paychecks. This gets us nowhere because there is no solution other than replacing those programmers. A better way of thinking is to assume that bad programmers do not “know” about quality and training can help. This is true for many programmers who can benefit from the knowledge of better tools and techniques. But it also doesn’t entirely really address the problem.

My observation has been that programmers who exhibit the trait of spending all their time in code is that they think they are doing work. They define work as churning out line after line of code. More lines of code, more functions, and more screens mean that they are doing work. Fixing bugs is also work. Another bug fixed means another piece of work accomplished.

To them, refactoring seems a strange thing to do. Why change the code when everything is working fine? Why not spend time working, i.e., getting some more functionality implemented? Especially since the refactoring usually consists of deleting code, i.e., reducing what was done before.

This may seem like sacrilege to good programmers, but there is a correspondence to a real world situation, namely, hoarding. Most people (including me) have a tendency to accumulate junk in our houses. We buy a book, read it and never touch it again, but it occupies a place on a bookshelf. A broken machine sits on a shelf in the kitchen. The basement or garage is full of memories from older days that we no longer care for. We spend little time clearing them out, but we spend extraordinary amounts of time and energy acquiring new things.

The culture at many software companies accentuate this behavior by the use of hard deadlines. For many programmers, it is a less risky proposition to release a low-quality product on time than it is to create a high-quality product that is two weeks late. Even when there are no apparent deadlines (such as an R&D projects), there are deadlines and you need to show something working, not just a design or prototype.

Now, for good programmers, lack of time is not an excuse for shoddy work. Most good programmers write good code and their lack of quality is usually at a higher level in terms of design that could have been better. For weaker programmers, they need an environment that can encourage them to work on improving their quality, in addition to mentoring, code reviews, pair programming and the like.

Finally, there will always be different levels of programmers (good, medium and bad) no matter what you do. It is not just about laziness or ignorance, but also related to innate skills, intelligence and aptitude for the job. Some people can visualize design concepts and create great systems. Others (who might be good in other areas) just don’t have the right engine for it. Some great programmers working in extremely complex code running system software can be very poor at user interface design and vice versa. Different people have different skills, and sometimes people are in the wrong profession.
저작자 표시
크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback 0 Comment 2

Trackback : http://elechole.tistory.com/trackback/519 관련글 쓰기

  1. Favicon of http://www.cheap-christian-louboutin-outlet.org/ BlogIcon Christian Louboution Outlet 2011/12/16 11:30 address edit & del reply

    다운 재킷은 남성과 여성 http://www.thenfljerseysonsale.com/ 모두에 의해 쟈켓의 따뜻한 가장 추구 다음 품종 중 하나입니다. 비교할 수없는 따뜻함, 섬세한 쉽고 편안하고 http://www.thelouisvuitton.org/ 멋진 http://www.monclerjackets4sales.org/ 스타일을 결합하면 전형적인 양털이나 울 스웨터를 그냥 할 수 없다는 한 가지입니다. http://www.uggsonsalenow.org/ 당신은 최고 http://www.uggsbuffalo.com/ 노치 쉽고 편안하고 따뜻한를 검색하는 경우, 다운 재킷은 목록에 수량 1되어야합니다. 당신은 오늘의 시장에서 얻을 수있는 다운 코트 종류의 다양한 종류를 찾을 것이며, 모두가 모두를 상상할 http://www.cheap-christian-louboutin-outlet.org/ 수 있을지만큼 복잡하지 않습니다. 당신은 수많은 개인 매우 매력적입니다 전형적인 호흡기 코트보다 얇은 http://www.jordanretro13s.org/ 아르 다운 인형 겨울 코트의 스타일 번호를 찾을 수 있습니다. 모든 다운 겉옷는 같은 상투적인 스타일과 색상 안으로 http://www.canadagooseoutlet2012.com/ 올 것이다.시장은 패턴 자료, 황갈색과 검은색도의 핑크, 녹색 및 파랑 또한 많은 표준 색조와 같은 흥미있는 http://www.thecanadagooseoutlet.org/ 색상으로 다운 재킷으로 가득합니다.

  2. Favicon of http://www.newenglandpatriotsfansshop.com/ BlogIcon New England Patriots Jerseys 2011/12/16 11:30 address edit & del reply

    하이힐 신발 시장에서 매우 인기가있다. 당신은 다양한 크기의 하이힐을 생산 다양한 신발 브랜드를 찾을 수 있습니다. 하이힐을 제조 인기있는 디자이너 신발 브랜드 중 일부는 찰스 데이빗, 프라이, 머시 13 많은이 포함됩니다. 모든 여성은 그녀의 옷장에서 하이힐을 적어도 한 쌍의 주식 싶어. 이 신발은 기본적으로 슬림하고 세련된 있으며 감각적 모양을 제공합니다. 그들은 더 슬림, 이상과 몸매 다리의 미적 환상을주는 발가락 이상 입고있는 사람의 발 뒤꿈치를 올립니다. 이 신발은 펌프, stilettos, 웨지, 테이퍼, 블록 및 블레이드를 포함 다양한 모양의 힐과 스타일, 다양한에서 사용할 수 있습니다. 낡은 하이힐 구두는 여자에게 매력과 세련된 모양을 제공합니다. 패션과 스타일 변화의 전체 정의 여성이 거리 주변이나 파티에서이 신발과 산책을 착용했을 때. 그들은 매력의 중심이된다. 뒤꿈치의 높이는 일반적으로 4인치에서 8 인치 다릅니다. 그러나 일부 격렬도이 제한을 초과합니다.