원본 글

https://yozm.wishket.com/magazine/detail/3538/

 

회의 시간에 딴소리하는 팀원, 고칠 수 있을까요? | 요즘IT

개발팀의 시간은 곧 비용입니다. 그런데, 이 귀중한 시간이 의미 없이 사라지는 경우가 있습니다. 바로 준비되지 않은 회의입니다. 특히 딴소리가 반복될 때 우리는 흔히 팀원을 탓합니다. “쟤

yozm.wishket.com

 

요약

1. 딴소리가 발생하는 이유: '회의 시스템의 버그'

회의 중에 주제를 벗어난 이야기가 나오는 것은 팀원의 무능함 때문이 아니라, 회의 주최자가 '무엇을(What), 왜(Why), 어떻게(How)' 논의할지 명확히 설계하지 않았기 때문입니다.

2. 성공적인 회의 설계를 위한 3가지 요소

  • What (목표의 시각화): 오늘 무엇을 결정하는가?
    • 모호한 제목(예: 주간 회의) 대신 구체적인 목표(예: 결제 모듈 롤백 전략 결정)를 설정해야 합니다.
    • 회의실 화이트보드 상단에 목표를 적어두면, 딴소리가 나올 때 자연스럽게 목표를 가리키며 주제로 복귀시킬 수 있습니다.
  • How (규칙의 설정): 어떤 신호등을 가지고 논의하는가?
    • 시간 제한: 안건별로 데드라인을 설정하여 긴장감을 유지합니다.
    • 나중에 논의(Parking Lot): 주제와 무관하지만 중요한 의견은 화이트보드 한쪽에 적어두어 의견을 존중하되 흐름은 끊지 않도록 합니다.
  • Why (가치의 설득): 이 회의가 왜 중요한가?
    • 개인의 욕심(리팩토링, 신기술 도입 등)과 조직의 목표(빠른 출시, 안정성)가 충돌할 때 딴소리가 나옵니다.
    • 회의 시작 전 비즈니스 맥락을 공유하여 지금 왜 이 논의가 최우선인지 팀원들을 설득해야 합니다.

3. 해결되지 않는 상황에 대한 대처

  • 존중과 제어: 똑똑한 팀원이 확신을 가지고 딴소리를 할 때는 그의 전문성을 인정해주되, "지금은 시점이 다르다"는 논리로 다음 기회로 미룹니다.
  • 단호한 선 긋기: 시스템을 갖췄음에도 계속 분위기를 흐리는 5%의 인원이 있다면, 이는 소통의 문제가 아닌 '태도'의 문제입니다. 이때는 주최자가 단호하게 논의를 중단시키고 상급자에게 위임하는 등 다수의 시간을 보호해야 합니다.

결론

회의 중 딴소리는 시스템이 고장 났다는 '경고음'입니다. 팀원을 탓하기 전에 주최자가 목표(What), 규칙(How), 이유(Why)를 제대로 설계했는지 점검하고, 이를 통해 누가 들어와도 몰입할 수 있는 회의 구조를 만드는 것이 핵심입니다.

 

생각

회의에 딴소리하는 사람이 있을 때, '사람' 탓이 아니라 '시스템' 탓을 하는 관점부터 흥미로웠다

개인적으로 경험한 여러 "회의" 에서 나오는 딴소리들은 그 사람이 회의의 본질을 알지 못하고 회의 방법을 몰라서라기 보다는(물론 그런 경우도 있긴 했지만) '다른 의도'가 있는 경우가 대부분이긴 했다

회의 안건 이외의 정보를 얻기 위해서, 본인의 지식이나 경험을 자랑하기 위해서, 심지어는 개인적인 친분을 쌓기 위해서 등등...

어쨌든 일반적인 업무회의에서 의미 있고 건설적인 회의를 위해서, 회의의 목적과 범위를 명확히 하고, 시간 제한을 두는 게 중요하다는 것에는 완전 동의한다

추가로 회의 시작 전이나 최소한 시작 시에 회의에 참석한 모두가 인지할 수 있도록 해야 할 것이다

실무에서 가능할지 모르겠지만(시간이 있을까...?) 회의 이후 회의 진행에 대한 피드백을 받는 것도 좋은 것 같다

쓰다보니 뭔가 부정적인 부분이 많은 것 같은데 건설적인 회의를 위한 방법을 짧고 명확하게 제시한다고 생각이 든 글!

 

 

 

 

원본 글

https://yozm.wishket.com/magazine/detail/3451/

 

2026년 B2B 시장을 리드할 12가지 메가 트렌드 | 요즘IT

900만 개 이상의 신흥 기업 데이터를 AI로 분석한 스타트어스 인사이트의 '2026년 B2B 핵심 트렌드' 보고서를 심층 분석합니다. AI 코파일럿과 에이전틱 워크플로의 확산, 2.64조 달러 규모로 성장한 B

yozm.wishket.com

 

요약

트렌드 1. AI 코파일럿과 에이전틱 워크플로우: 파일럿을 넘어 실전으로

"단순한 기술 시연을 넘어 실제 기업의 손익에 기여하고 자율적으로 업무를 수행하는 에이전틱 시스템으로 진화하고 있지만, 결국 '돈'을 벌어다 준다는 걸 증명하지 못하면 버려진다."

트렌드 2. B2B 마켓플레이스의 폭발적 성장: 2.64조 달러 시장의 재편

"조달 프로세스의 간소화와 예산 활용의 편의성을 바탕으로 클라우드 마켓플레이스가 B2B 거래의 핵심 채널로 급부상하고 있다."

트렌드 3. 디지털 셀프서브의 진화: 50만 달러 거래도 온라인으로

"B2B 구매자들이 영업 사원 없는 자율적인 구매 경험을 선호함에 따라 고액 거래까지 온라인 셀프 서비스로 전환되는 추세이다."

트렌드 4. RevOps 자동화와 세일즈 인에이블먼트의 융합

"복잡해진 툴과 부정확한 매출 예측 문제를 해결하기 위해 수익 운영(RevOps)과 영업 지원 플랫폼이 하나로 통합되고 있다."

트렌드 5. 구독 및 사용량 기반 모델의 대세화

"초기 비용 부담을 줄이고 사용한 만큼 지불하는 방식이 확산되면서 B2B 소프트웨어 시장의 표준 비즈니스 모델이 구독과 사용량 기반 모델로 변하고 있다."

트렌드 6. ABM 2.0: 퍼스트파티 데이터와 클린룸의 시대

"프라이버시 강화에 대응하여 서드파티 쿠키 대신 자사 데이터와 데이터 클린룸을 활용한 정교한 계정 기반 마케팅이 중요해졌다. 하지만 클린룸을 구축하는데는 돈도 많이 들고 시간도 많이 들어서 '클라우드 네이티브' 클린룸을 선택하는 기업이 많다."

트렌드 7. 옴니채널 구매자 지원의 복잡성

"다수의 이해관계자가 참여하는 복잡한 구매 여정을 돕기 위해 사용자 리뷰와 숏폼 영상 등 신뢰 중심의 유용한 콘텐츠 제공이 필수적이다. 다만, 뻔하지 않고 도움이 될만한 컨텐츠를 귀찮지 않게 주어야 한다."

트렌드 8. 산업 클라우드 플랫폼(ICP)의 부상

"단순 인프라 제공을 넘어 특정 산업의 요구사항과 규제에 최적화된 맞춤형 솔루션을 구매, 즉시 적용하는 방식으로 변화하고 있다."

트렌드 9. 공급망 리스크와 니어쇼어링의 가속화

"지정학적 리스크에 대비하기 위해 생산 거점을 인접 국가로 옮기거나 공급망 포트폴리오를 유연하게 재편하는 전략이 강화되고 있다."

트렌드 10. 엣지 인텔리전스와 IoT의 확산

"데이터 처리 지연과 비용을 줄이기 위해 중앙 서버가 아닌 현장(Edge)에서 즉각적인 분석과 의사결정을 내리는 기술 도입이 늘고 있다."

트렌드 11. AI 거버넌스와 신뢰, 그리고 보안 위협

"EU AI 법 등 규제 강화와 딥페이크 사기 위협에 따라 AI 도입 시 신뢰성 확보와 체계적인 거버넌스 구축이 이사회의 핵심 과제가 되었다."

트렌드 12. 제로 트러스트와 소프트웨어 공급망 보안

"보안이 단순 옵션이 아닌 필수 구매 조건이 됨에 따라 설계 단계부터 보안을 강화하고 소프트웨어 자재 명세서(SBOM)를 통해 투명성을 증명해야 한다."

 

생각

여전한 키워드는 AI와 보안.

2026년 부터는 보안이 더욱 더 중시될 전망이다.

AI가 아무리 유용하다지만 이제는 ROI를 증명할 필요가 있다.

B2B 거래도 영업사원 없이 직접 온라인에서 쉽게 구매하길 원하는 경향이 늘고 있다.

이 때, 구매에 참고하기 위한 유용한 "영상" 컨텐츠를 소비자들이 찾고 있다.

도메인 별 맞춤 인프라 상품이 등장하고 있다.

 

Vue3를 어느 정도 알고 있기 때문에 Vue3와 비교하여 리액트를 공부해보자

기본문법 4가지를 비교하여 정리하기 전 가장 큰 차이는 Vue는 '디렉티브(v-if, v-for)' 중심이고, 리액트는 '순수 자바스크립트' 중심이라는 점

1. 변수 바인딩 (Data Binding)

Vue에서는 데이터 바인딩을 위해 {{ }}를 쓰지만, 리액트는 중괄호 { } 하나만 사용
또한 리액트는 단방향 데이터 흐름을 가짐

  • Vue3: <p>{{ message }}</p>
  • React: <p>{message}</p>
function App() {
  const name = "React";
  return (
    <div className="container"> {/* class 대신 className 사용 */}
      <h1>Hello, {name}!</h1>
      <img src={logo} alt="logo" /> {/* 속성 바인딩도 { } 사용 */}
    </div>
  );
}

 

2. 조건부 렌더링 (Conditional Rendering)

리액트에는 v-if가 없음. 대신 자바스크립트의 논리 연산자(&&)삼항 연산자를 사용

  • Vue3:환영합니다!
  • React:
    {isLoggedIn &&환영합니다!} (간단한 조건)
    {isLoggedIn ?환영합니다!:로그인하세요.} (If-Else 상황)

 

3. 리스트 렌더링 (List Rendering / 반복문)

리액트에는 v-for가 없음. 자바스크립트 배열 메서드인 .map() 을 사용하여 배열을 HTML 요소로 변환

  • Vue3:
  • {{ item.text }}
  • React:
const items = [{id: 1, text: '사과'}, {id: 2, text: '바나나'}];

function MyList() {
  return (
    <ul>
      {items.map((item) => (
        <li key={item.id}>{item.text}</li> // key값은 필수!
      ))}
    </ul>
  );
}

 

4. 상태 관리(State)

Vue3의 ref()reactive() 대신, 리액트는 useState Hook 을 사용. 리액트의 상태는 불변성(Immutability) 을 지켜야 하므로 값을 직접 수정하지 않고 반드시 'setter 함수'를 써야 함.

  • Vue3: const count = ref(0); count.value++;
  • React:
    import { useState } from 'react';
    
    function Counter() {
    	const [count, setCount] = useState(0); // [현재값, 변경함수]
    
    	return (
    		<button onClick={() => setCount(count + 1)}>
    		클릭: {count}
    	);
    }

 

5. 정리

기능 Vue3 (Composition API) React (Hooks)
데이터 바인딩 {{ value }} { value }
속성(Attribute) 바인딩 :src="url" src={url}
이벤트 바인딩 @click="handler" onClick={handler}
조건부 렌더링 v-ifv-else {cond && ...} 또는 {cond ? A : B}
리스트 렌더링 v-for="item in list" list.map((item) => ...)
상태(State) 관리 ref()reactive() useState()
클래스 바인딩 :class="{ active: isActive }" className={isActive ? 'active' : ''}
계산된 속성 computed() useMemo() (또는 일반 변수)
  • 리액트는 "HTML처럼 보이는 자바스크립트(JSX)를 작성한다"고 생각하자
  • JSX는 return( )안에 작성함

'Study > React' 카테고리의 다른 글

[React] 환경설정 및 기본 구조  (1) 2026.01.01

환경 설정

  1. node.js 설치 https://nodejs.org/ko/download
  2. VS Code 설치 https://code.visualstudio.com/docs/?dv=win64user

프로젝트 시작하기

프로젝트 시작할 폴더에서 터미널 열고 npx start-react-app [프로젝트명] 입력

프로젝트 구조

최상위 폴더

  • node_modules: 프로젝트 실행을 위한 외부 라이브러리 저장 공간, 직접 수정하지 않고, 깃허브 올릴 때도 제외
  • public: 브라우저가 직접 읽는 정적 파일들이 있음
    • index.html: 리액트 앱이 실행될 때, 이 파일의 특정 빈 공간(<div id="root"></div>)에 작성한 컴포넌트들이 끼어 맞춰져서 브라우저에 표시
  • src: 실제 리액트 코드를 작성하는 폴더

src 폴더 내부

  • App.js: 실제 화면에 그려지는 메인 컴포넌트
  • App.css: App.js의 스타일을 정의하는 시트
  • index.js: 리액트의 입구로 App.js에서 만든 컴포넌트를 가져와서 public/index.html에 연결해 주는 역할
  • index.css: 전체 앱에 공통적으로 적용되는 스타일 파일
  • logo.svg: 리액트 로고 이미지 파일
  • App.test.js / setupTests.js: 코드가 잘 작동하는지 테스트하기 위한 파일들입니다. 초보 단계에서는 일단 무시해도 괜찮
  • reportWebVitals.js: 앱의 성능(속도 등)을 측정할 때 사용하는 도구

설정 및 정보 파일 (The Metadata)

  • package.json: 프로젝트의 이름, 버전, 그리고 어떤 라이브러리를 사용하는지 적혀 있는 명세서입니다. 나중에 새로운 라이브러리를 설치하면 여기에 기록됩니다.
  • package-lock.json: 설치된 라이브러리들의 정확한 버전 정보를 담고 있어, 다른 사람과 협업할 때 환경을 똑같이 맞춰줍니다.
  • .gitignore: Git(버전 관리)을 사용할 때, node_modules처럼 용량이 크거나 올릴 필요가 없는 파일을 제외하도록 설정하는 파일입니다.
  • README.md: 이 프로젝트가 무엇인지 설명하는 문서입니다.

 

 

한 줄 요약

브라우저는 public/index.html을 열고, 그 안의 내용을 src/index.jssrc/App.js의 내용으로 채워 넣는다

'Study > React' 카테고리의 다른 글

[React] 기본 문법  (0) 2026.01.01

원본 글

기획자, 운영자, 창업자가 꼭 써봐야 할 바이브 코딩 도구 3가지

https://yozm.wishket.com/magazine/detail/3496/

 

기획자·운영자·창업자가 꼭 써봐야 할 바이브 코딩 도구 3가지 | 요즘IT

지금 당장 무언가를 만들고 싶은 순간이 찾아올 때가 있습니다. 눈앞에서 직접 움직이는 프로토타입으로 소통하고 싶은 제품팀, 반복되는 병목을 자동화해 숨 쉴 틈을 만들고 싶은 운영팀, 아이

yozm.wishket.com

 

요약

1. 기획자를 위한 - 프로토타입을 빨리 만들어서 의사결정에 도움을 받자!

1. Lovable: 속도와 디자인의 완성도 중간 어딘가에서 빠르게 시장을 선점했지만 독점적인 위치는 아님.

2. Bolt.new: "지금 회의에서 당장 보여줄 한 컷"을 뽑아내는 데 최적화된 초경량 도구

3. Replit: 개발 기능이 비교적으로 강력, 어느정도 동작하게 할 수 있음

[단점 및 한계]
결과물이 빠르게 나오는 만큼 품질과 유연성의 한계 있음. 초기 기획과 방향성 탐색을 위한 도구임을 기억하자.

2. 운영자를 위한 - 단순하지만 중요한 업무들을 자동화하자!

1. make: 블록을 연결하듯 흐름을 만들 수 있어 개발 없이도 시스템을 설계한다는 감각을 느낄 수 있음. 복잡한 논리와 데이터 변형을 다루는 데 강한 도구

2. Zapier: 초보자에게 좋은, 단순한 흐름을 만들 때 좋은 접근성 좋고 이해하기 쉬운 툴

3. n8n: 오픈소스, 고급 자동화와 자유도를 원하는 경우에 적합

[단점 및 한계]
시각적 구성으로 시작하기 쉬운 반면, 플로우가 복잡해질수록 관리가 어려워지는 경우가 있음
대용량 데이터 처리나 빠른 응답성이 요구되는 경우에는 성능의 한계도 느낄 수 있음

3. 초기 창업자를 위한 - 어느 정도 시장에 던져볼만한 제품을 만들어보자!

1. Cursor: 모든 과정에 AI가 개입하는 개발환경(IDE). 전체 맥락을 읽고 스스로 프로젝트 구조를 재구성하는 능력.

2. Claude Code: 코드 품질, 문맥 이해, 리팩토링 능력이 좋음. 터미널에서 실행.

3. Figma AI: 제품이 사용자에게 보이는 형태를 정교하게 다듬는데 강점. Figma를 사용할 줄 알아야 함

[단점 및 한계]
위의 코드들은 개발자의 손이 필요하다. 코드를 볼 생각이 없다면 다른 프로덕트가 더 낫다.

 

생각

글 내용 중 있기는 하지만 "바이브 코딩" 도구 인지는 조금 의문이긴 하지만 어쨌든 새롭게 알게 된 여러가지 도구들 발견!

AI 도구 관련 정보를 접할 때마다 느끼지만 도구들이 정~~말 다양하고 많은 듯

대부분의 도구들은 현재 사용중인 gemini 나 gemini CLI로 대체 가능할 것 같은데 기획과 자동화를 위한 특화된 도구들이 얼마나 더 성능이 좋을지 궁금하니 하나씩 선택해서 사용해봐야겠다는 생각으로 Lovable 과 Zapier 체험해봄

(체험기는 별도 포스팅)

둘 다 홈페이지 접속해서 구글 계정으로 로그인해서 바로 사용 가능(구글 계정은 대단해,,,)했고 확실히 특정 작업에 "특화된" 장점을 느낄 수 있기는 했음

하지만 무료 버전에서는 제공하는 토큰이 적어서 이것저것 많이 테스트 해볼수는 없었음

내가 하려는 작업마다 적절한 툴을 사용하면 도움이 될 수 밖에 없겠다는 생각이 드는데 역시 툴을 선택하기까지 많은 시행착오가 필요할 듯 함

[Lovable]

https://devbamtol.tistory.com/20

 

[Product]Lovable - 웹서비스 구현 AI 서비스

[Lovable] https://lovable.dev/ LovableBuild software products, using only a chat interfacelovable.devLovable이란?장점단점/주의사항코딩 몰라도 풀스택 앱 빠르게 구축 가능대규모 복잡한 서비스는 한계가 있음GitHub 연동

devbamtol.tistory.com

 

[Zapier]

 

Python의 itertools 라이브러리는 효율적인 반복을 위한 다양한 함수를 제공하는 강력한 도구입니다. 

[요약]

1. count(start = 0, step = 1)
start 부터 step 만큼 무한히 증가하는 숫자 생성

2. cycle(iterable)
요소를 무한히 순환하면서 생성

3. repeat(object[, times])
object를 times 만큼 반복하거나, times 가 생략되면 무한히 반복

4. permutations(iterable, r=None)
iterable 에서 r 개의 요소를 뽑아 나열하는 모든 순열을 생성순서가 다르면 다른 결과로 취급

5. combinations(iterable, r)
iterable 에서 r 개의 요소를 뽑아 만들 수 있는 모든 조합을 생성순서는 고려하지 않음 -> 순서가 같으면 같은 거

6. product(*iterables, repeat=1)
여러 개의 iterable들 간의 데카르트 곱을 구한다

7. chain(*iterables)
여러 개의 iterable을 하나로 연결하여 새로운 iterable 한 요소를 생성8. islice(iterable, start, stop[, step])이터레이터 버전 슬라이싱

무한 이터레이터 (Infinite Iterators)

이 함수들은 무한한 시퀀스를 생성합니다. 따라서 사용할 때에는 반드시 종료 조건을 함께 사용해야 합니다.

1. itertools.count(start=0, step=1)

count()는 start 값부터 step 만큼씩 무한히 증가하는 숫자를 생성합니다.

예시: 10부터 2씩 증가하는 숫자 5개를 출력합니다.

Python
 
import itertools

# 10에서 시작하여 2씩 증가하는 이터레이터 생성
counter = itertools.count(start=10, step=2)

# 5개의 숫자 출력
for _ in range(5):
    print(next(counter))
 

출력:

10
12
14
16
18

2. itertools.cycle(iterable)

cycle()은 인자로 받은 반복 가능한(iterable) 객체의 요소들을 무한히 순환하면서 생성합니다.

예시: 신호등의 색깔을 계속해서 순환 출력합니다.

Python
 
import itertools
import time

traffic_light = itertools.cycle(['🔴', '🟡', '🟢'])

for _ in range(6):
    print(next(traffic_light))
    time.sleep(1) # 1초 대기
 

출력:

🔴
🟡
🟢
🔴
🟡
🟢

3. itertools.repeat(object[, times])

repeat()는 object를 times 만큼 반복하거나, times가 생략되면 무한히 반복합니다.

예시: 'Hello'를 3번 반복하여 리스트를 생성합니다.

Python
 
import itertools

repeater = itertools.repeat('Hello', times=3)

print(list(repeater))
 

출력:

['Hello', 'Hello', 'Hello']

 조합 이터레이터 (Combinatoric Iterators)

이 함수들은 입력받은 데이터로부터 순열, 조합 등과 같은 조합적 시퀀스를 생성합니다.

 4. itertools.permutations(iterable, r=None)

permutations()는 iterable에서 r개의 요소를 뽑아 나열하는 모든 순열을 생성합니다. 순서가 다르면 다른 경우로 취급합니다. r을 생략하면 iterable의 전체 길이로 설정됩니다.

예시: 리스트 [1, 2, 3]에서 2개의 요소를 뽑아 만들 수 있는 모든 순열을 구합니다.

Python
 
import itertools

items = [1, 2, 3]
p = itertools.permutations(items, 2)

print(list(p))
 

출력: (1, 2)와 (2, 1)은 다른 순서이므로 모두 포함됩니다.

[(1, 2), (1, 3), (2, 1), (2, 3), (3, 1), (3, 2)]

 5. itertools.combinations(iterable, r)

combinations()는 iterable에서 r개의 요소를 뽑는 모든 조합을 생성합니다. 순서는 고려하지 않습니다.

예시: 리스트 [1, 2, 3, 4]에서 2개의 요소를 뽑아 만들 수 있는 모든 조합을 구합니다.

Python
 
import itertools

items = [1, 2, 3, 4]
c = itertools.combinations(items, 2)

print(list(c))
 

출력: (1, 2)와 (2, 1)은 같은 조합이므로 (1, 2)만 포함됩니다.

[(1, 2), (1, 3), (1, 4), (2, 3), (2, 4), (3, 4)]

 6. itertools.product(*iterables, repeat=1)

product()는 여러 개의 iterable들 간의 **데카르트 곱(Cartesian product)**을 구합니다. 중첩된 for문과 동일한 결과를 반환합니다.

예시: 두 리스트 ['a', 'b']와 [1, 2]의 데카르트 곱을 구합니다.

Python
 
import itertools

list1 = ['a', 'b']
list2 = [1, 2]

prod = itertools.product(list1, list2)

print(list(prod))
 

출력:

[('a', 1), ('a', 2), ('b', 1), ('b', 2)]

 기타 유용한 이터레이터

 7. itertools.chain(*iterables)

chain()은 여러 개의 iterable을 하나로 연결하여 새로운 이터레이터를 생성합니다.

예시: 두 개의 리스트와 하나의 튜플을 연결합니다.

Python
 
import itertools

list1 = [1, 2, 3]
list2 = ['a', 'b']
tuple1 = ('X', 'Y')

chained_iter = itertools.chain(list1, list2, tuple1)

print(list(chained_iter))
 

출력:

[1, 2, 3, 'a', 'b', 'X', 'Y']

 8. itertools.islice(iterable, start, stop[, step])

islice()는 이터레이터 버전의 슬라이싱입니다. start, stop, step 인자를 사용하여 이터레이터의 일부를 잘라낼 수 있습니다.

예시: range(10) 이터레이터에서 인덱스 2부터 8까지 2씩 건너뛰며 값을 가져옵니다.

Python
 
import itertools

sliced_iter = itertools.islice(range(10), 2, 8, 2)

print(list(sliced_iter))
 

출력:

[2, 4, 6]

'Study > Python' 카테고리의 다른 글

[개념]여러가지 내장함수 정리  (1) 2025.07.15

+ Recent posts