A Small Step Forward 유학, 연구, HCI, 정보와 사람, 창의성

1Apr/06Off

실용주의 프로그래머 (The Pragmatic Programmer)

The Pragmatic Programmer: From Journeyman to Master

pp_eng.jpg

Andrew Hunt, David Thomas
김창준, 정지호 옮김
인사이트

실용주의 프로그래머는 컴퓨터 과학의 기본 원리(이론)와 실제 프로젝트 수행을 통한 경험(실천)을 조화시켜 효율적이고 생산성 높은 작업을 할 수 있는 프로그래머다.

이 책은 프로그래밍과 관련된 다양한 분야의 지식과 경험을 통해 실용주의 프로그래머가 갖추어야 할 자질과 마인드를 70가지의 팁과 위트 있는 예제와 및 비유로 제시하고 있다.

1장 실용주의 철학에서는 실용주의 프로그래머가 프로젝트에 임하는 자세나 생각하는 방식에 대해 언급한다.
* 자신의 기술 (Craft)에 관심과 애정을 가진다 / 새로운 것에 빨리 적응한다 / 캐묻기 좋아한다 / 비판적인 사고의 소유자 / 현실적 / 다방면의 기술에 익숙하다 / 학습을 습관으로 삼고 지식 포트폴리오를 관리한다

2장 실용주의 접근법에서는 보다 구체적인 실용주의 방법론들을 제시한다.
* DRY(Don’t Repeat Yourself) 원칙이나 확장성 및 재사용성을 고려한 설계, 독립적인 컴포넌트 설계

3장 기본적인 도구는 실용주의 프로그래머가 사용할 수 있는 다양한 도구에 대한 관점을 담고 있다.
* 명령어 셸을 익히고, 에디터에 능통하고, 소스코드 관리 시스템을 사용하고, 텍스트 처리언어를 익히고, 코드생성기를 사용하라

4장 실용주의 편집증에서는 완벽한 소프트웨어는 불가능하다는 사실을 인지하고 에러와 오작동으로부터 프로그램과 사용자를 보호하는 방법에 대해 언급한다.

5장 구부러지거나 부러지거나에서는 지속적으로 개선 가능한 유연한 코드를 만들기 위한 팁을 제공한다.
* 모듈간의 결합도를 최소화하고, 메타프로그래밍을 통해 통합보다는 설정옵션을 활용하며(코드에는 추상화를, 메타데이터에는 세부 내용을), 동시성과 독립성을 고려하여 설계하라

6장 코딩하는 동안 해야 할 일들에서는 우연에 맡기는 프로그래밍을 지양하고 알고리즘과 함수를 지속적으로 테스트하고 리팩터링하라고 강조한다. 또한 마법사가 자동생성한 코드는 피하라고 말한다.

7장 프로젝트 전에에서는 프로젝트를 시작할 때 고려해야 할 기본원칙을 다룬다.

8장 실용주의 프로젝트에서는 프로젝트 차원에서 성패를 좌우하는 핵심부분에 대한 통찰을 제시한다.
* 형식의 노예가 되지 말고 명세의 나선에 빠져 코딩을 시작도 못하는 일이 없도록 하라. 수작업 절차를 피하고 테스트를 보다 일찍, 자주, 자동으로, 정교하게, 극한상황에서 수행하라. 문서는 나중에 추가하는 것이 아니라 애초부터 하나의 프로그래밍 언어를 다루듯 프로젝트의 일부가 되도록 작성하라.

21Jan/060

Ruby the Programming Language

일본사람이 만들어낸 OOPL
처음에는 AJAX를 구현한 Interactive Ruby Shell Command Interpreter (Interpreter가 필요한 것이 맞던가..)
http://tryruby.hobix.com/ 에 가서
이거저거 해보다가 관심이 생겼다.

제대로 배워볼 마음은.. 글쎄
하지만 Perl과 비슷한 느낌에 (안 좋다는 뜻인가-_-;;;)
가벼운 느낌?이 맘에 든다.

사실 이 Entry를 작성하는 건...
Firefox에서 마구잡이로 벌여놓은 탭들좀 정리하려고..
Ruby 관련 탭 4개..
웬지 요즘은 Bookmark 기능이 싫다.
이상하게 잘 안쓰게 되니..
또 Explorer를 버릴 수도 없는 환경이다보니
두 군데서 Favorite / Bookmark 따로 관리하는 것도 웃기고..
웹 북마크 사이트 같은데는 귀찮고..
구글 Personalized page가 유력한 후보!
그것마저 귀찮....으면 안될듯-_-
구글 Personalized page 같은걸 만들어 보고프다!

암튼 여기는 Ruby 자료들..
Ruby: Programmers' Best Friend
http://www.ruby-lang.org/en/

Programming in the Ruby Language - IBM
http://www-128.ibm.com/developerworks/linux/library/l-ruby1.html

The Ruby Language FAQ
http://dev.rubycentral.com/faq/rubyfaq.html

30Nov/05Off

UI Design for Programmers

Joel Spolsky

Joel on Software (www.joelonsoftware.com)라는 블로그로 세계적인 명사가 된 Joel Splosky의 UI 디자인에 대한 책이다. 사실 책이라기 보다는 평소에 UI에 대해 갖고 있던 생각들을 정리해 놓은 노트라고 보는 것이 더 맞을 지도 모르겠다. 대체로 UI라는 것에 대해 많은 프로그래머들이 많은 고려를 하지 않고, 디자이너가 할 일이라는 생각도 갖기 쉬울 것이다. 그러나 UI 디자인은 프로그래머가 할 일이며, 결코 어렵거나 전문적인 내용이 아니라는 것이 책의 요지이다. 잘 된 UI란 단순히 사용자가 기대하는 대로 동작하는 것이며, 이를 위해서는 사용자가 기대하고 있는 User Model과 실제 프로그래밍이 논리적으로 동작하는 Program Model을 일치시켜야 한다. User Model을 파악하는 것이 중요한데, 이를 위해 필요한 것은 거창한 분석이 아니라 제3자로 하여금 동작하게 하고 그 반응을 반영시키는 것뿐이다. User Interface란 단순하고 간편한 것이어야 하기 때문이다.

선택 - 사용자에게 선택의 기회를 주는 것은 결정에 대한 생각을 한 번 더 하게 만드는 것이다.
은유 – 보기만 해도 무슨 용도인지 알 수 있는 디자인이 좋은 디자인이다.
제공성 – 쉽게 행동을 유발하고 알아보기 쉬운 디자인이 좋은 디자인이다.
일관성 – 보편적인 것에서 벗어나는 것이 능사가 아니다. 사용자는 새로운 방식에 혼란을 느낄 것이다.

사용자는 매뉴얼을 읽지 않으며, 화면의 지시문도 거의 읽지 않는다는 생각으로 UI가 이루어져야 한다. 예쁘고 화려한 글씨체보다는 판별이 쉽고 잘 보이는 글씨체가 좋고, 정교한 키보드나 마우스의 움직임을 요구해서는 안 된다. 또한 무언가를 외우고 기억하게 해서도 안 된다. 이러한 생각을 바탕으로 ‘가상의 사용자’를 생성해서 User Model을 만들고, 지속적으로 사용성 시험을 거치면서 점진적으로 인터페이스를 개선해 나간다면 훌륭한 디자인이 탄생할 수 있을 것이다.