2022년 4월 29일 금요일

스프린트 정리

스프린트

스프린트는 프로토타입을 제작하고 고객과 함께 아이디어를 테스트하여 중요한 문제들에 대한 답을 찾는 독특한 5일 짜리 과정이다. 스트린트는 업무 전략, 혁신 행동과학, 디자인 그 외 여러 분야의 최고 히트작을 어떤 팀에서라도 사용할 수 있게 단계별 절차를 모아놓은 것이다.


스프린트 과정

  • 과제 선택
  • 월요일: 지도 그리기 & 타깃 선택
  • 화요일: 서로 경합을 벌리는 솔루션들 스캐치
  • 수요일: 가장 좋은 솔루션 결정
  • 목요일: 진짜같은 프로토타입 제작
  • 금요일: 표적 고객과 테스트
  • 학습

출처: https://www.thesprintbook.com/the-design-sprint

스프린트 준비하기

  • 적절한 과제 선택
  • 적임자들로 팀 구성
  • 스프린트들 진행할 시간 및 장소 확보

  • 과제
    • 힘든 과제일수록 스프린트의 효과가 높아진다.
      • 중대한 이해관계가 걸려 있을 때: 전력 질주 전 방향 조정
      • 시간이 충분하지 않을 때: 전력 질주
      • 곤경에 빠졌을 때: 새로운 문제 해결 방식 제공
    • 그 기업이 안고 있는 가장 중요한 문제를 스프린트에서 다루도록 한다.
    • 먼저 외양을 해결하라: 제품이나 서비스가 고객을 만나는 접점
    • 결정권자 한두 명을 꼭 참여시켜라(안되면 대리인이라도..)
      • 주요 단계는 꼭 참여 시킨다.
      • 월요일: 스프린트에서 다룰 문제에 대한 견해
      • 수요일: 테스트할 적절한 아이디어 선택
      • 금요일: 프로토타입에 대한 고객의 반응 관찰
    • 각 분야 전문가 또는 담당자
    • 팀구성
      • 7인 이하로 구성
      • 결정권자
      • 재무 전문가
      • 마케팅 전문가
      • 고객 전문가
      • 기술/실행계획 전문가
      • 대자인 전문가
    • 말썽쟁이 (기발한 아이디어, 반대 의견 등)
    • 전문가 추가
    • 진행자 선택: 결정권자는 제외..
  • 시간과 장소
    • 5일이라는 시간 확보
    • 기기 금지 (회의실 밖에서만 허용)
    • 화이트보드 두개
    • 적절한 용품 (포스트잇, 보드 마커, 펜, 타이머, 프린트 용지, 사무용품, 간식 등)

월요일

: 체계적인 논의를 통해 스프린트의 방향을 잡는 날
  • 도착점에서 출발하기
    • 장기적인 목표 설정 (지침, 신호등)
    • 스프린트 핵심 질문 열거하기 (가정과 장애물을 질문으로)
  • 지도
    • 고객 중심적
    • 핵심 행위자를 왼쪽에 열거
    • 단어, 화살표, 상자 등으로 업무가 진행되는 단계/방향 간단히 기술
    • 지도 그리기 (빠르게 작성 후 지속적으로 업데이트)
      • 행위자 열거하기 (왼쪽)
      • 결말 쓰기 (오른쪽)
      • 단어와 화살표 (중간 중간)
      • 단순해야 한다 (5~15 단계가 적절)
      • 도움을 청하라
  • 전문가들에게 의견 구하기
    : 지식은 여러 사람에게 분산되어 있다
    • 모든걸 아는 사람은 없다
      : 정보는 회사 전체에 산발적으로 흩어져 있다. => 이 정보를 모아서 이해해야 한다
      • 전략: 결정권자
      • 고객의 소리: 영업팀, 고객 지원
      • 일이 어떻게 이루어 지는가? : 디자이너, 엔지니어, 마케팅 담당자
      • 이전의 노력: 
    • 전문가에게 의견 구하기, 인터뷰 절차 => 전문가는 내가 알지 못하는 것을 알려주기 위해왔다.
      • 스프린트를 소개한다
      • 화이트보드를 검토한다
      • 전문가에게 말할 기회를 준다
      • 질문한다
      • 화이트보드에 적힌 내용을 수정한다
    • 어떻게 하면 ~할 수 있을까? 메모 쓰기
      : 전문가를 인터뷰 하면서 메모를 작성한다, 벽에 붙인다
    • 어떻게 하면 ~할 수 있을까? 메모 정리
      : 비슷한 주제끼리 모은다 (분류, 제목도 적는다)
    • 어떻게 하면 ~할 수 있을까? 메모 투표하기 (점투표)
      : 많은 표를 받은 메모를 지도에서 알맞은 곳에 붙인다
  • 타깃
    : 당신 회사의 가장 중요한 고객은 누구인가?
    그 고객이 당신 회사와 함께 겪는 경험에서 가장 중요한 순간은 언제인가?
    • 타깃 선택하기
      결정권자는 타깃이 될 하나의 고객과 사건을 선택해야 한다
      • 결정권자에게 결정하도록 요청한다.
      • 여론 조사 (결정권자가 도움을 원할 경우)

  • 진행자 팁
    • 팀원들에게 허락을 구한다
    • 기본 임무: 항상 포착하라
      • 화이트보드에 핵심 아이디어를 기록하라
    • 뻔한 질문을 던져라
      • 뻔한 문제도 짚고 넘어가자. 오해의 위험을 없앤다. 뻔한 질문이 진짜 문제일 수 도..
    • 사람들을 돌보라
      • 휴식 시간을 자주 가진다
      • 점심을 늦게 먹는다
      • 가볍게 자주 먹어라
    • 결정을 내리고 다음으로 넘어가라
      • 비생산적인 논쟁을 피하라

화요일

: 솔루션을 생각하는 날
  • 조합하고 발전시키기
    : 위대한 혁신은 기존 아이디어를 새로운 시각으로 바꿨을 때 이루어진다
    • 번개불 데모 (Lightening Demo)
      : 팀원들이 다른 제품, 다른 분야, 다른 회사에서 자신이 가장 좋아하는 솔루션을 돌아가면서 3분간 소개하는 시간이다. (솔루션을 찾기 위한 재료를 수집하는 것으로 경쟁제품 모방이 아님)
      • 목록 만들기
        • 도움이될 만한 것으로 검토한 후 수집
      • 3분간 데모 시행하기
      • 좋은 아이디어 포착하기
    • 뭉치느냐, 흩어지느냐
      • 타깃이 확실하면 전체가 한부분에 집중
      • 다루어야 할 부분이 여러가지 라면 분담 (가능하면 원하는 방향으로..)
  • 스케치
    : 솔루션을 떠올리는 시간
    • 스케치의 힘
      : 스케치는 추상적인 아이디어들을 구체적인 솔루션으로 바꾸는 가장 빠르고 쉬운 방법이다
    • 함께 혼자 일하기
      : 혼자 일하되 모든 사람이 집중하고 일을 진척시키도록 돕는 단계
    • 4단계 스케치
      • 메모 (20분)
        : 메모를 기억을 되살린다
        • 화이트보드를 보면서 메모한다
        • 전자기기기 참조 가능
        • 예전 아이디어 재검토
      • 아이디어 (작성 20분 + 검토 3분)
        : 생각을 나타내는 것들로 종이를 채워 아이디어를 표현
      • 크레이지 에이트 (8분)
        : 각자 가장 효과적이라고 생각하는 아이디어를 8분만에 8가지로 변형하여 재빨리 스케치
      • 솔루션 스케치 (30분)
        : 가장 좋은 아이디어를 종이에 상세히 옮긴다
        • 따로 설명하지 않아도 이해할 수 있어야 한다
        • 익명으로 해야 한다
        • 그림이 서툴러도 괜찮다
        • 글은 중요하다
        • 귀에 쏙 들어오는 제목을 붙여라

  • 진행자 팁
    • 금요일에 테스트를 진행할 고객을 찾아라 (진행자 이외)
    • 크레이그리스트를 이용해 고객 모집하기 (벼룩신문 등 광고 게재, 사례 포함)
      • 예) 8월 2일, 100달러를 받을 수 있는 고객 조사 인터뷰
    • 설문지 만들기 (의도는 파악 못하게..)
    • 인맥을 통해 고객 모집하기
    • 적임자 5명

수요일

: 목표 성취에 가장 도움이 될만한 솔루션 결정 후 스토리 보드 작성 (프로토타입을 만들기 위한 단계별 설계도)
  • 결정
    : 솔루션을 한꺼번에 평가하고 한꺼번에 비판한 뒤 한꺼번에 결정을 내린다. => 프로토타입으로 만들 솔루션을 결정
    • 끈적끈적 결정
      : 스티커를 사용하면 불필요한 언쟁 없이 의견을 정하고 표현할 수 있다.
      • 미술관: 솔루션 스케치들을 마스킹 테이프로 벽에 붙인다.
      • 히트맵(heat map): 흥미 있는 부분에 스티커를 붙인다. (인당 20~30장)
      • 스피드 비판: 스티커가 많은 부분을 신속하게 논의하고 포스트잇으로 중요한 아이디어를 기록한다. (유망한 아이디어를 기록하는 과정으로 입씨름하지 말자)
      • 여론 조사: 각자 하나의 솔루션을선택하여 스티커를 붙인다. (인당 1표, 1분간 선택 이유 설명)
      • 슈퍼의결권 행사: 결정권자가 최종 결정을 내린다. (결정권자는 3장의 스티커, 선택 받지 못한 스케치는 다음 기회에 검토할 아이디어들이다)
  • 혈투
    • 혈투냐, 올인이냐
      : 선택된 솔루션이 두개 이상일 경우, 혈투를 벌일 것인지 하나의 프로토타입에 결합할 것인지 논의가 필요하다
    • 기록하고 투표하기
      : 혈투에 사용할 아이디어들을 정한다.
  • 스토리보드
    : 스토리보드를 이용해 완성된 프로토타입을 머리속에 그린다. 프로토타입을 실제로 제작하기 전에 문제점과 혼란스러운 점을 찾을 수 있다.
    • 격자판 그리기
    • 시작 화면 선택하기 
      : 테스트하고 싶은 솔루션이 시작되는 시점에서 한두 단계 거슬러 올라간 상황을 시작 화면으로..
    • 스토리보드 채우기
      : 선택한 솔루션의 포스트잇으로 단계별로 작성, 빈공간 발생 시 반드시 채울 필요는 없지만, 빈공간을 채울때는 기존 제품이나 선택받지 못한 스케치 등을 사용한다. (즉석으로 새 솔루션을 떠올리는 것은 피한다)
      • 지금 가지고 있는 것들로 일한다
      • 문구 작업을 다같이 하지 않는다
      • 세부사항을 충분히 포함한다
      • 결정권자가 결정을 내린다.
      • 확실하지 않을 땐 모험을 해본다
      • 스토리는 15분 이하로 만든다

  • 진행자 팁
    • 팀원들의 기운이 바닥나지 않도록 조심!

목요일

: 프로토타입을 구현한다 (진짜처럼 보이게..)
  • 진짜처럼 보이게 만들기
    : 90% 진짜처럼 보이게 빠르게 테스트 준비, 시간을 많이 쓸수록 그 일에 애착이 커져서 테스트 결과가 부정적으로 나왔을 때 쉽게 받아들이지 못한다.
    • 프로토타입 사고방식 (완벽추구 -> 그저 충분한 수준)
      • 어떤 것이든 프로토타입을 만들 수 있다
      • 프로토바입은 한 번 쓰고 버릴 수 있어야 한다
      • 테스트에서 무언가 배울 수 있을 정도로만 구축하라, 더 이상은 금물
      • 프로토타입은 진짜처럼 보여야 한다
        => 테스트에서 고객의 상상력을 동원하게 해서는 안된다. 진짜처럼..
        피드백이 아닌 진짜 반응이 필요하다
    • 골리락스 품질
      : 너무 높지도 낮지도 않은 딱 적절한 수준
  • 프로토타입 (책에서는 키노트를 추천함, 전용 SW는 thesprintbook.com 참조)
    • 적절한 도구 선택하기
      : 키노트, 파워포인트, 문서작성 SW, 대본, 물리적 공간, 3D 프린터 등
    • 나누어서 정복한다
    • 모두 연결하기
    • 시범운영


금요일

: 고객들을 인터뷰하고 고객들이 프로토타입에 어떻게 반응하는지 지켜보면서 학습한다
  • 소규모 데이터
    • 마법의 숫자 5
      : 85%의 문제가 단 다섯 명을 인터뷰한 뒤에 발견된다
  • 인터뷰
    : 두개의 방에서 진행, 스프린트 회의실에서 실시간으로 인터뷰 영상 확인(고객 허락하에 녹화 및 재생), 실제 인터뷰를 진행하는 '면접실'
    • 5막 인터뷰
      • 1막 친근한 환영
      • 2막 고객의 배경에 관한 질문
      • 3막 프로토타입 소개
      • 4막 작업과 자극
      • 5막 간단한 정리
    • 진행자 팀
      • 좋은 초대자 노릇을 해라
      • 주관식 Open ended으로 질문한다
        : 유도신문/질문 X, 객관식 질문 X, n지 선다형 질문 X, 예/아니오 질문 X
        육하원칙으로 질문한다
      • 어정쩡한 Broken 질문을 던진다
      • 호기심 어린 마음가짐
  • 학습
    • 함께 지켜보고 함께 배우기
    • 함께 인터뷰를 기록한다
    • 패턴 찾기
    • 미래 여행
    • 항상 승리자
    • 사람들에게 도움이 되는 일

이륙

: 질문을 생각하고 프로토타입을 만들고 테스트하는 것
  • 천천히 문제를 정하고 초기 목표에 합의하라 (처음에는 천천히..)
  • 각자 혼자서 잠재 솔루션을 스케치하라
  • 투표, 결정권자 우선순위 반영
  • 외관만 마련, 프로토타입 마음 가짐
  • 표적 고객과 프로토타입을 테스트하고 정직한 반응을 얻어라

2021년 1월 12일 화요일

C++에서 Lvalue와 Rvalue

표준 C언어의 관점에서 Lvalue와 Rvalue는 Left Value와 Right Value를 의미한다.

대입 연산자(=)를 기준으로 왼쪽에만 쓸 수 있는 값(variable)을 Lvalue라 하고, 오른쪽에만 쓸 수 있는 값(보통 상수) Rvalue라 한다.


하지만 C++ 표준에서는 Left/Right를 의미하지 않고, Lvalue/Rvalue를 그 자체로 보는 것이 맞다.


C++에서 Lvalue와 Rvalue의 의미는 다음과 같다.

  • Lvalue
    단일 표현식 이후에도 없어지지 않고 지속되는 객체
  • Rvalue
    표현식이 종료된 이후에는 더 이상 존재하지 않는 임시적인 값

  • 예시
    int x = 3;
    const int y = x;
    int z = x + y;
    int *p = &x;
    cout << string("one");
    ++x; // 증가된 x 자신을 리턴
    x++; // 증가된 복사본을 리턴


Lvalue 참조자 &와 Rvalue 참조자 &&
  • Lvalue 참조자 &
    Lvalue만 참조할 수 있음
  • Rvalue 참조자 &
    Rvalue만 참조할 수 있음

  • 예시
    int x = 10;
    int& a = x;
    //int& b = 10; => error: cannot bind non-const lvalue reference of type 'int&' to an rvalue of type 'int'
    int&& c = 5;
    //int&& d = a; => error: cannot bind rvalue reference of type 'int&&' to lvalue of type 'ini'


 

 

 
 
 

C++ Type Casting 연산

C언어의 형변환(Type Casting)의 경우, 타입 체크를하지 않아서 버그를 유발할 수 있어
컴파일 단계에서 Warning이 뜨거나 에러가 발생하는 경우가 많고, 
실제로 원치 않는 데이터 유실이 발생할 수도 있다.

C++에서는 4가지 Type Cast Operation을 제공한다.

  • static_cast
    • 컴파일 단계에서 타입체크를 수행한다.
    • child class의 포인터를 parent class로 캐스팅한다.
    • parent class의 포인터를 child class로 캐스팅한다. (child class만의 variable/method 사용 불가)
    • 기본적 타입들에 대한 변환에 사용
    • runtime check를 하지 않는다.

  • const_cast
    • 컴파일 단계에서 타입체크를 수행한다.
    • 타입에 const, volatile 키워드를 붙이거나 땔때 사용한다.

  • dynamic_cast
    • runtime 시에 동작한다.
    • 객체를 상속 관계 속에서 캐스팅 하는 등 객체의 포인터에만 사용한다.
    • virtual method를 가지는 클래스에서 사용하며, 그렇지 않은 경우는 static_cast를 사용하면 된다.
    • 만약 주어진 포인터가 캐스팅하기에 적절하지 않으면 NULL을 리턴한다.
    • dynamic_cast의 종류
      • upcast
        child class를 parent class로 캐스팅
      • donwcast
        parent class를 child class로 캐스팅
      • crosscast
        다중 상속 시 사용

  • reinterpret_cast
    • 포인터를 어떤 타입으로든 캐스팅할 수 있다.
    • 강력하지만 위험, C언어의 형변환과 가장 유사해 보인다.

C언어의 형변환(Type Cast)

  • 암묵적 형변환
    상황에 따라 자동적으로 이루어지는 형변환을 암묵적 형변환이라 한다.
    ex)
    • int n = 0;
      n = 123.123123;
      // n은 123이 된다.
    • char a = 10;
      short b = 20;
      c = a + b;
      // c는 char+short => 하지만 int로 변환된다.
    • double n = 10 + 20.123;
      // 10.0 + 20.123 = 30.123 으로, 10이 double 타입으로 형변환된다.

  • 명시적 형변환
    명시적 형변환은 변수의 타입을 강제적으로 명시하여 변환하는 방법이다.
    ex)
    • double f=0;
      f = (double)10 / 8;
      // 10.0 / 8 = 1.25

2018년 4월 2일 월요일

C에서 C++ 함수 호출하기..

프로젝트를 진행하다 보면
C, C++ 등으로 작성된 파일이나 라이브러리들이 혼재되어 사용되는 경우가
발생할 수 있다.
물론 사용언어가 통일되면 가장 좋겠지만...

이런 경우 C++ 소스에서
C++ 함수를 C에서 사용할 수 있도록 Wrapping 함수를 작성하면
C에서 C++ 함수를 사용하는 것이 가능하다.

//C++ 소스

int get_number(std::string strNumber)
{
return atoi(strNumber.c_str());
}

extern "C" int get_number_c(char *pszNumber)
{
return get_number(pszNumber);
}


//C 소스
int get_number_c(char *pszNumber);

int main(int argc, char *argv)
{
char szNumber[] = "1000";
printf("%d\n", get_number_c(szNumber);
return 0;
}


C++ 소스는 g++로 컴파일
C 소스는 gcc로 컴파일
Link는.. 반드시 g++로..

2018년 3월 27일 화요일

false-positive & false-negative

- false positive
 거짓 양성, 실제로는 답이 No 인데 Yes 로 응답함


- false negative
 거짓 음성, 실제로는 답이 Yes 인데 No 로 응답함


Business Email Compromise Attack.. (BEC)

Business Email Compromise Attack..

BEC Attack.. 일종의 phishing 공격..
회사의 뉴스, 연구, 직원의 SNS 등을 통해
정보를 수집..

CEO나 회사 메일등으로 가장해서
입/출금, 지불 변경 등을 유도하거나,
주요 기밀을 탈취..

메일 내용을 제차.. 확인하고
인증 강화 및 직원 교육 등을 통해 방지할 수 있음..

스프린트 정리

스프린트 :  스프린트는 프로토타입을 제작하고 고객과 함께 아이디어를 테스트하여 중요한 문제들에 대한 답을 찾는 독특한 5일 짜리 과정이다. 스트린트는 업무 전략, 혁신 행동과학, 디자인 그 외 여러 분야의 최고 히트작을 어떤 팀에서라도 사용할 수 있...