2011년 12월 22일 목요일

[책추천 #3] 쿨하게 사과하라 - 정재승 김호


책 제목으로만 봐도 알겠지만 쿨하게 사과하라는 동사적 표현이 책에는 실려 있습니다.

정재승 교수의 칼럼들을 신문에서 많이 봐와서 그런지 깊이 있는 학문적 표현 보다는 사과의 잘된 사례와 못된 사례를 설명하므로 해서
쉽게 다가 갈수 있는 책인 것 같습니다.

책의 주된 내용은 " 사과(진정성 있는 사과, 책임있는 사과)는 리더의 언어 이다. " 라는 진리를 설명하고 있습니다.
리더라고 해서 어느 조직이나 가정이나 계급장의 상위를 이야기 하는 것은 아닙니다.
어느 위치에서든 리더는 존재 합니다. 바로 이 글을 읽고 있는 여러분 모두가 리더인 겁니다.

현재 우리가 살고 있는 세상과 앞으로 살아갈 세상은 책임의 시대 입니다ㅏ.
"책임의 시대에는 실수를 하지 않는 것이 아니라 실수를 인정하고 다시는 같은 실수를 하지 않도록 하는 게 중요하며, 우리는 그렇게 할 것이다."

부담 없이 읽을 수 있는 책인만큼 많은 분들이 봤으면 한다.


-- 원문에서 몇가지 기억에 남는 글들을 발췌 하였습니다. --

- 누구에게나 사과는 힘든 말이다. 인간은 '미안해'라는 말 한마디를 뱉기도 힘들 만큼 '자존심 강한 존재'이기 때문이다. 그래서 사랑하는 사람, 경쟁 관계에 있는 사람, 함께 일하는 부하직원, 그리고 국민에게 '미안합니다'라는 말 한마디 하기가 그렇게 힘든 것이다. 그럼에도 용기를 내어 미안하다는 말을 하기로 결심했다면, "미안합니다"로 그치지 말고, 무엇이 미안한지, 그 책임은 누구에게 있는지, 재발 방지를 위해 앞으로 어떻게 할 것인지를 구체적으로 표현해야 한다.

- 사과의 타이밍이란 결국 상대방의 감정에 대한 배려에서 시작된다.

- '그러나'라는 접속사는 '의견 불일치(disagreement)'를 나타내기 위해 쓰는 표현이다. 
'리더십의 언어'로서 사과를 할 때 '그러나'는 구차한 변명의 냄새를 풍기는 몹쓸 접속사다.

- 사과의 역작용은 사과의 순수성을 저버릴 때 발생한다. 사과란 자신의 잘못을 덮기 위해 달콤하게 사용하는 것이 아니다.자신의 실수와 잘못으로 인한 쓴맛을 기꺼이 보겠다는 것이 바로 사과다. 그래서 사과는 보험이라기보다는 '자진 납세하는' 벌금과 같다.

- 쿨한 사과는 책임지는 사과다.

- "책임의 시대에는 실수를 하지 않는 것이 아니라 실수를 인정하고 다시는 같은 실수를 하지 않도록 하는 게 중요하며, 우리는 그렇게 할 것이다." (버락 오바마)

- 자신의 잘못을 인정하고, 피해자의 상처와 분노에 공감하며, 진심 어린 사과를 하고 구체적인 행동 계획과 사후 처리를 약속하는 것. 이것이 사과문의 기본적인 공식이다.

2011년 12월 11일 일요일

[MyStory] 아버지


이래저래 이번 주말은 회사에 충성하며 보내야 겠는데.. 
문득 잠이 안와서 노트북을 보다 보니.. 
안보려 했던 아들과 놀던 사진이 있다. 보고싶구나..

언젠가 내가 너의 아버지라는걸 인지하게 될 때 말이다.
나는 너와 같은 높이에서 너를 보고 싶구나.
나는 너와 같은 높이에서 너를 만나고 싶구나.
나는 너와 같은 높이에서 너를 사랑 하고 싶구나.
나는 너와 같은 높이에서 너를 안아 주고 싶구나.
돌아 보니 나는 너에게 해준것 보다 해주고 싶은것이 많구나

-- 2016년 4월 13일 추가 
가만히 오래전 글을 보다 보니 사진 더 너머 뒤에 아버지의 뒷 모습이 있다. 생각해보니 사진이 별로 없다. 내 아들 사진찍는다고 정작 내 아버지 사진을 찍지 못했다. 그런것 이었을까. 

2011년 11월 11일 금요일

[MyStory] 당신은 나에게

 당신은 나에게 참 좋은 사람 입니다. 
사랑한다는말을 아직도 어색해 하며 말하지 못해도 
당신이 나에게 얼마나 많은 사랑을 주는지 알게 해주는 그런 사람입니다.

당신은 나에게 참 좋은 사람입니다.
내가 힘든기색이라도 보이면 당신의 작은손으로 날 다독이며
다 잘될꺼라고 당신은 잘할꺼라고 희망과 믿음을 주는 그런 사람입니다.

당신은 나에게 참 좋은 사람입니다.
재미 없는 이야기를 늘어 놓아도 언제나 해맑게 웃으며 들어주는
마음과 가슴으로 나의 이야기를 나눌 줄 아는 그런 사람입니다.

당신은 나에게 행복한 시간을 나누고 싶은 사람
당신은 나에게 늘 함께 하고 싶은 마음이 가는 그런 사람

당신은 나에게 참 좋은 사람입니다.
내 인생에 당신을 만나 난 참 많이도 행복합니다.

2011년 11월 10일
- 당신을 참 좋아 하는 남편 오세정 

2011년 11월 10일 목요일

[봉사 이야기] 2011년 여주 평화의 마을 김장 봉사

2011년 11월 10일(목) 오전 8시에 본사에서 출발하여 아침 끼니를 김밥으로 간단하게 채우고 나서 여주를 향하여 달려 갔습니다. 버스 전용차선(?)의 도움으로 생각보다 일찍 여주의 평화의 마을에 도착하여 좀더 일찍 시작하게 되었습니다. 3년 만에 여주 평화의 마을에 김장을 하러 왔습니다. 신종플루와 여러가지 이유로 2년동안 방문 하지 못했는데 크게 변한것이 눈에 들어 오지 않아서 좀더 친근함을 있었던 것 같습니다.

사진속에 남겨지진 않았던 모습이지만 저는 김장의 마지막 작업인 김장 봉투를 묶는 작업을 했습니다. 일부러 저는 안찍어 준 걸까요? ^^. 손가락이 아직도 부들부들 떨립니다.참석하신 모든 분들께 감사드리고 또 스케쥴이 어려워서 참석하지 못하신 분 들께도 감사 인사 드립니다. 내년에 김장에도 함께 하시길 바랍니다.







[책추천 #2] MEGA TREND

오늘 추천해드리는 책은 지난번 하단에 있던 집단적 타성에 관한 포스팅을 하면서 올려 드렸던
"화난원숭이들은 모두 어디로 갔을 까"송인혁 저자가 북 리뷰로 올린 내용으로 연관지어 함께 읽어 볼만한 책입니다.

개인의 능력과 개인의 성장으로 지나치지 않고 개인과 개인사이의 관계와 개인과 조직과의 관계 그 안에서 조금씩의 변화가 개인에게 미치는 영향과 또한 사회로의 변화가 올 수 있다는 기본 개념을 가지고 있고 또한 이러한 변화를 관찰하고 통찰 할 수 있는 능력이 향후 발전되어 가고 변화되어가는 위기사회 속에서 개인과 조직이 갖춰야할 역량이 아닐까 생각을 해봅니다.
북 CEO 리뷰 원문 보기
http://www.bmceo.co.kr/today/boardView.laf?bcode=TODAYBK&seq=1080
책 간략 소개



 
『메가트렌드 인 코리아(2012)』는 한국과 세계가 불안한 상태에 이른 원인을 진단하고, 2012년에 우리가 목도하게 될 필연적인 변화를 다룬다. 그 중심에 서 있는 개념은 수십 년에 걸쳐 전 세계적으로 진행되는 변화를 의미하는 ‘메가트렌드’다. 기존의 이머징 트렌드가 아닌 메가트렌드를 기초로 다음 해의 보다 현실적이고 필연적인 변화에 초점을 맞추었다. 사회적 소요의 세계화 , 신뢰 경쟁, 소셜 익스피리언스, 다이렉트 서비스, 친고령화 도시 등 10대 메가트렌드의 큰 흐름 속에서 특히 2012년에 우리의 관심을 끌게 될 주요 이슈와 기회를 전망한다.


2011년 10월 11일 화요일

[책추천 #1] 화난 원숭이들을 어디로 갔을까 - 송인혁

어디에다 공유해야 할지 몰라서 게시판이 여기가 가장 맞겠네 싶습니다. 매주 수요일에 페이스북그룹인 북포럼을 참여 하고 있는데 공감이 가는 내용이 있어 공유합니다.

집단적 타성

여러분은 신문이 왜 그렇게 큰 종이를 쓰는지 아는가?
그냥 큰 종이에 인쇄하면 돈이 적게 들어서 그런가 보다 생각하겠지만 진짜 이유는 다음과 같다.
1712년에 영국의 신문사들은 신문의 페이지 수에 따라 세금을 내야 했다.
그래서 편집자들은 페이지 수를 줄이려고 지금과 같은 크기의 종이를 선택했다.
1855년에 세금이 없어졌고 큰 종이에 신문을 인쇄하려면 엄청난 추가 비용이 드는데도 신문사들은 기존의 방식을 바꾸려 하지 않았다.

'메트로(Metro)'라는 무료 신문이 발행된 후로 '인디펜던트(The Independent)'의 타블로이드판이 처음으로 발행되었다. 이 신문의 판매량이 눈 깜짝할 사이에 급등하자 '타임스'와 '가디언'도 새로운 변화에 합세하여 매출 신장 효과를 만끽했다. 왜 그토록 오랫동안 기존의 신문 크기를 바꾸지 못한 걸까? 정말로 그동안 아무도 작은 종이에 인쇄하려는 생각을 못했을까?

물론 그런 생각을 품은 사람은 많았다. "작은 종이에 신문을 인쇄하면 어떨까요?" 라고 제안한 사람들은 꾸준히 있었지만 늘 외면당했다. 신문사들은 한결같이 "어느 신문사에서 그렇게 하느냐?" 라며 핀잔을 주었고, "독자들이 아마 싫어할 것"이라고 손사래를 쳤다. 그러나 타블로이드판 신문은 독자들에게 대환영을 받았다.

이러한 현상을 '집단적 타성(collective inertia)'이라고 부릅니다.
이유도 모른 채 타성에 젖어 다수의 선택을 무조건 추종하는 것이지요.

혹시 내가 또는 우리가 이러한 집단적 타성에 빠져 있지 않은지, 한번 돌아볼 일입니다.

 
책 추천 : 송인혁 님의 책, "화난 원숭이들을 어디로 갔을까" - 경영분야

화난 원숭이라는 실험이 있습니다. 원숭이 한 무리를 우리에 가두고 바나나를 사다리 끝에 매달았더니 원숭이들이 기어 오릅니다. 바나나를 잡을 때쯤 찬 물을 끼얹고 원숭이들 모두가 바나나를 잡으려 하면 찬 물을 맞는다는 것을 알았죠. 우리의 원숭이를 한 마리 바꿨는데 새로 온 원숭이가 바나나를 집으려 하면 다른 원숭이들이 말리더라 이겁니다. 이렇게 한 마리씩 한 마리씩 모든 원숭이가 새로 온 원숭이로 바뀌었는데도 아무도 바나나를 집으려 하지 않고 없던 것인양 무시합니다. ... 내용 중..  

2011년 9월 20일 화요일

[MyStory] 책장에서 한권의 책을 다시 빼다.. - 인생수업

생각해보면 나는 책에 욕심이 많다. 
많이 읽으려고 노력하는 것도 있지만 내가 가진 욕심은 조금은 하찮은(?) 부류에 속한다. 
책 자체에 욕심이 많다. 책을 읽을때도 책을 접거나 낙서를 하거나 줄을 긋거나 하는걸 싫어 한다. 
그리고 그런 새책과도 같은 것들을 가끔식 다시 꺼내 보곤 한다. 

인생수업을 다시 꺼내 들었다.

인간은 태어나면서 배움을 시작을 한다. 24시간 배우게 되는것은
사랑, 행복, 즐거움, 인내, 고통, 기다림, 배신... 등.. 많은것들을 배우게 된다.
훗날 죽게 되는 그 순간 인간은 배우지 못한것에 대한 아쉬움 아는것에 대한 진실을 말하게 된다.
당시 선배들을 잠시 기다리는 동안 선택한 책이었는데 나에게 많은 것들에 대한 충격을 준 책이다.

책의 저자는 호스피스의 선구자인듯 하다 잘 알지 못하는 사람이지만
이사람의 경험은 죽음 앞둔 사람들의 이야기를 평생을 모아왔다. 하지만 정작 그가 죽어 가며
남긴 것은 죽음을 앞둔 이들이에게 던지는 이야기가 아니라 앞으로 삶을 살아 가며
배움을 계속 해갈 사람들에게 던지는 이야기이다.

첫 파트에 나오는 사례는 많은것들을 생각한다.
" 어느 40대 여자 운전자는 고속도로를 달리던 중 앞차들이 비상등을 켜고 서기에
자신도 섰다 그러나 뒤에서 따라 오던 차는 그걸 보지 못한체 계속해서 달려 오는것이 거울에 보이고
있었다.. 이사람은 순간 자기도 모르게 운전대를 있는 힘것 붙잡고 어찌 해야 할 지 모르도록 불안해 했다.
그러나 잠시 후 죽음을 있는그대로 받아 드려야 겠단 생각으로 온몸엥서 힘을 빼고
양팔을 벌려 몸을 모두 풀었다.. 결과는 그녀는 크게 다치지 않은채 사고는 그렇게 기억되었다. "

인생에 너무 많은것을 붙잡으려고 두주먹 불끈쥐고 내가 가지지 못한것들을 갖기 위해서
좀더 좋은 직장을 얻기 위해서 좀더 이름있는 위치에 내가 설 수 있도록 나는 내 인생에 있는 힘을
다 쥐고 있었던것은 아닌가. 인생을 인생으로 받아들이지 않고 내가 살고 있는 이 삶을 매순간
기적이라 생각하지 못하고 살아 가는것은 아닌가...

브루스 올마이티란 영화에서 하나님으로 나오는 모건 프리먼의 대사가 생각이 난다.
기적은 모세가 바다 한가운데를 나눈것이 아니라 3교대를 하는 어머니가 아침에 아이들에게 도시락을
챙겨 주는것이고, 아버지가 딸아이에게 모든것을 이해하듯 몇시간을 이야기 해주는 것이라고
기적은 언제나 일어나고 있지만 인간은 그 걸 기적이라 생각하지 않을 뿐이라고 ..

나에게 기적은 무엇이며 난 진정으로 내 삶을 행복해하고 스스로의 기적을 만들어 왔는지..
혹시나 나도 모르게 두 주먹만 불끈 쥐고 있었던것은 아니었는지 생각해볼 필요가 있다.

이 책의 마지막 장을 넘기는 순간 내 삶도 내 기적도 맑은 눈으로 볼 수 있었으면 좋겠다.

2011년 7월 28일 목요일

[Oracle. 12]PL/SQL (Procedural Language / Structured Query Language)

PL/SQL ( Procedural Language / Structured Query Language )
선언적인 SQL 언어와는 달리 SQL을 절차적인 방식에 의해 사용하도록 설계된 언어이다.
1. PL/SQL
DECLARE (선언)
BEGIN (실행)
EXCEPTION (예외 처리)
END;
 - DECLARE (선언) : 실행문에 사용될 변수나 커서, 사용자 정의 예외 등을 정의한다.
 - BEGIN (실행) : 질의문(SELECT)  DML문 그리고 조건이나 제어문을 사용할 수 있다.
 - EXCEPTION (예외처리) : 실행시 발생 가능한 예외를 정의한다.
1) PL/SQL 실행 절차
1. 개발 환경에서 작성
2. COMPILE                 
3. Debugging -> 1 -> 2 -> 3
4. 실행
2. Stored Procedure
SQL의 경우 Shared Pool에 같은 실행 계획이 있는지 확인하고 있다면, 해당 실행 계획을 실행한다. 따라서 수행한 SQL문을 가능한 Shared Pool에 두고 사용한다면 좋은 성능을 기대할 수 있다.
반면 Stored Procedure의 경우 한번 생성이 되면 데이터베이스 서버에 저장이 된다. 그리고 이후 다시 사용할 때에는 이미 Compile 과정을 거쳤기 때문에 실행만으로 결과를 얻을 수 있다.
, 다시 Compile을 하지 않고, 클라이언트 서버간 전송되는 크기가 상대적으로 복잡하고 긴SQL문 보다 작다. 이는 Network 전송량을 줄일 수 있는 장점이 있다.
1) Stored Procedure 작성
예문 ) 사원번호를 입력받아 해당 직무의 최소/최대 급여를 얻고, 급여의 분포에 따라 최대 급여에서 최소 급여의 차가 5,000 이하일 때는 LOW, 5,000 ~ 10,000 일때는 MIDDLE 10,000을 초과할 때는 HIGH로 표시한다.
1-1) 실행문의 주된 내용은 SQL이기 때문에 먼저 질의문을 통해 위 결과를 확인할 수 있는 SQL문을 작성한다.
SQL> SELECT employee_id, last_name, job_title, min_salary, max_salary
     FROM employees e JOIN jobs j
     ON e.job_id = j.job_id
     AND employee_id = 205;
1-2) 여기에 최소/최대 급여의 차이에 따른 등급을 나타내기 위해 CASE문을 SQL문에 적용할 수 있다.
SQL> SELECT employee_id, last_name, job_title, min_salary, max_salary,
     CASE WHEN max_salary – min_salary < 5000 THEN ‘low’
             WHEN max_salary – min_salary < 10000 THEN ‘middle’
     ELSE ‘high’
     END CASE
     FROM employees e JOIN jobs j
     ON e.job_id = j.job_id
     AND employee_id = 205;
1-3) 실행 결과를 확인 하였다면 Stored Procedure를 작성하여 보자. Parameter Variable로 사원번호를 입력받아 BEGIN ~ END에 위질의문을 넣고 로컬 변수를 선언하여 결과를 처리한다.
SQL> CREATE OR REPLACE PROCEDURE rank_Salaryofjob
(p_empid    employees.employee_id%TYPE := 0)
      IS
            l_last_name    employees.last_name%TYPE := NULL;
            l_min_salary    jobs.min_salary%TYPE := 0;
            l_max_salary    jobs.max_salary%TYPE := 0;
            l_rank         VARCHAR2(10);
      BEGIN
SELECT employee_id, last_name, job_title, min_salary, max_salary,
                  CASE WHEN max_salary – min_salary < 5000 THEN ‘low’
                     WHEN max_salary – min_salary < 10000 THEN ‘middle’
                  ELSE ‘high’
           END CASE
             FROM employees e JOIN jobs j
             ON e.job_id = j.job_id
   AND employee_id = 205;
   DBMS_OUTPUT.PUT_LINE(l_last_name||’ ‘||l_min_salary||’ ‘||l_max_salary||’ ‘||l_rank);
     END rank_salaryofjob;
3. CURSOR
질의 수행 결과 반환되는 여러 행을 처리할 수 있도록 명시적 커서를 이용하고 있다. oracle에서 커서란 질의의 결과 얻어진 여러 행이 저장된 메모리 상의 위치를 나타낸다. , PL/SQL에 내장된 일종의 포인트이며, 결과 SET의 행들을 하나씩 얻어 오는 작업에 이용된다.
1) 문법
DECLARE
 -- 커서의 선언
 CURSOR 커서이름 IS SELECT 구문;
BEGIN
 -- 커서 열기
 OPEN 커서이름;
 -- 커서로부터 데이터 읽기
 FETCH 커서이름 INTO 로컬변수;
 -- 커서 닫기
 CLOSE 커서이름;
END;
2) 예문
SQL> CREATE OR REPLACE PROCEDURE info_Hiredate (p_year   IN CHAR := 0)
      IS
         l_emp    employees%ROWTYPE;
         -- 커서의 선언
         -- CURSOR cursor_name IS SELECT statement;
         CURSOR emp_cur IS
            SELECT employee_id, last_name, salary
               FROM employees
               WHERE TO_CHAR(hire_date, ‘YYYY’) = p_year;
      BEGIN
             -- 커서 열기
             -- OPEN cursor_name;
             OPEN emp_cur;
             -- 커서로부터 데이터 일기
             -- FETCH cursor_name INTO local variables;
             LOOP
                FETCH emp_cur INTO l_emp.employee_id, l_emp.last_name, l_emp.salary;
                EXIT WHEN emp_cur%NOTFOUND;
               
                DBMS_OUTPUT.PUT_LINE(l_emp.employee_id || ‘ ‘ || l_emp.last_name || ‘ ‘ || l_emp.salary);
             END LOOP;      
             --커서 닫기
             --CLOSE cursor_name;
             CLOSE emp_cur;
      END info_Hiredate;
3) CURSOR 속성
- %FOUND : PL/SQL 코드가 마지막으로 얻은 커서의 결과 SET에 레코드가 있다면 참
- %NOTFOUND : %FOUND 연산자와 반대의 의미
- %ROWCOUNT : 커서에서 얻은 레코드의 수를 반환
- %ISOPEN : 커서가 열렸고, 아직 닫히지 않은 상태라면 참
4. EXCEPTION
1) 문법
DECLARE
-- 예외선언
-- 예외 이름 EXCEPTION;
BEGIN
-- 예외 발생
-- RAISE 예외 이름;
EXCEPTION
-- 예외 처리
-- WHEN 예외 이름 THEN
--                 구문;
END;
2) Oracle에서 제공하는 예외
 - NO_DATA_FOUND : SELECT INTO 구문 실행 후 반환되는 행이 없는 경우
 - TOO_MANY_ROWS : SELECT INTO 구문이 하나 이상의 행을 반환하는 경우
 - VALUE_ERROR : 데이터의 변환 과정에서 오류나 선언된 변수가 데이터의 저장하기에 크기가 작은 경우
 - NOT_LOGED_ON : Oracle에 접속하지 않은 채 데이터베이스를 Call하는 경우
 - INVALID_CURSOR : Cursor의 동작이 부적절한 경우
 - CURSOR_ALREADY_OPEN : 이미 열려있는 Cursor가 열려고 하는 경우
 - DUP_VAL_ON_INDEX : Unique Index가 설정된 칼럼에 중복된 값을 입력하는 경우
*** 참조 문헌 : 10g로 시작하는 오라클 SQL & PL/SQL - 7장 SQL의 한계를 넘어 PL/SQL

언제 부터 였던가 생각해보니 아르바이트 겸 외부 컨설팅을 의뢰 받고 맥북 프로를 처음 써봤을 때 부터 였던 것 같다. 지금은 거의 대부분의 작업을 맥으로 작업을 하다 보니 윈도우에서만 실행되는 일부 프로그램들 때문과 회사 내부 ERP프로그램이 윈도우 ...