반응형
반응형

https://blog.alexewerlof.com/p/when-a-team-is-too-big

 

When a team is too big

What signs to look for and how to increase productivity with all-round skillset

blog.alexewerlof.com

 

  • 전문가 중심의 대형 팀은 내부 의존성, 전달 오류, 병목, 책임 분산 등으로 인해 생산성과 협업 효율이 급격히 저하
  • 일일 스탠드업 미팅에서 대부분의 내용이 불필요하거나 지루해지는 등, 팀 규모 증가와 전문화가 소통 단절과 무관심을 불러일으킴
  • 기술별(프론트/백엔드) 분리, 임시 피처팀, 외부 컨설턴트 활용 등 여러 실험이 있었으나, 결국 범용적 역할(제너럴리스트)로 전환이 가장 실질적 효과를 냄
  • Mob프로그래밍 등 집단 협업은 지식 공유와 자기주도성, 책임감, 동기 부여를 촉진하며, 단일 분야 고집보다 결과 중심의 협업과 성장에 유리함
  • 단, 범용화의 부작용(전문성 저하, 번아웃 위험)도 존재하며, 지속적인 실험과 문화적 개선이 필수적임

팀이 너무 클 때의 문제

  • 14명 규모의 대형 팀에서 시작된 문제: 스탠드업에서 대부분의 대화가 불필요하며, 업무 전달 누락과 비공식 작업 발생 빈번
  • 비동기 스탠드업(Slack 등) 으로 전환해도 핵심적인 대화와 협업 기회가 사라지고 단순 보고서로 변질

다양한 분할/운영 실험

  • 기술별(Task Force) 분리: 프론트엔드/백엔드로 나눴으나, 즉시 상호 의존성 문제와 추가 스탠드업 참여로 시간 증가
  • 임시 피처팀: 특정 기능 구현에 따라 인력 임시 재배치, 유지보수/자원 관리 이슈 발생
  • 외부 컨설턴트 투입: 이미 팀이 큰데도 비효율, 상위 경영진의 자원 활용 압박

최종적으로 효과적이었던 해법

  • 스페셜리스트 대신 제너럴리스트(범용가) 모델 도입
    • 프론트엔드, 백엔드, QA, DevOps 등 역할 분리 없이 한 목표/제품을 중심으로 전체 스킬셋을 나눠 가짐
    • 지식 공유, 책임 분산 감소, 병목 해소, 더 빠른 전달/고품질 실현
    • Mob 프로그래밍 등 집단 협업으로 소통/자율성/소유권 강화

왜 제너럴리스트가 효과적이었나

  • 공통 맥락과 목적: 새로운 분야라도 동일 제품/목표를 기준으로 학습 곡선 완화
  • 한정된 필요: 특정 도구(CI/CD 등)만 익혀도 충분, 깊은 전문성보다 생산성·유지보수성을 중시
  • 동기 부여 3요소(자율성, 숙련, 목적) 를 모두 충족, 팀의 주인의식과 성장 지원
  • Egalitarian 문화: 평등한 접근권, 자율적 지식 습득, 권한과 책임 분산, 집단 학습
  • 책임의 3요소(지식, 권한, 책임) 가 명확, 소유권 기반의 빠르고 높은 품질의 결과 도출

부작용 및 한계

  • 전문가의 이탈: 범용화가 모든 사람에게 맞지 않음, 특정 인력의 번아웃·리소스 과열 발생
  • 전문성의 깊이 부족: 다양한 스택을 얕게 다루는 만큼, 한 분야의 깊은 숙련은 저해될 수 있음

결론 및 교훈

  • 일률적 해법은 없으며, 실험과 개선의 문화가 더 중요
  • 스페셜리스트 모델의 단점(병목, 소통 단절, 페이크 워크, 맥락 단절)을 제너럴리스트와 집단 협업으로 해소 가능
  • 궁극적으로는 목표, 인력, 예산, 제품 특성에 따라 최적화된 모델이 달라질 수 있음
  • 핵심은 열린 실험, 피드백, 지속적 개선의 문화

 

반응형
반응형

Android에서 Localhost를 이용한 은밀한 웹-앱 트래킹 기법 공개 (localmess.github.io)

 

https://localmess.github.io/

 

Covert Web-to-App Tracking via Localhost on Android

Disclosure: Covert Web-to-App Tracking via Localhost on Android 📢 UPDATE: As of June 3rd 7:45 CEST, Meta/Facebook Pixel script is no longer sending any packets or requests to localhost. The code responsible for sending the _fbp cookie has been almost co

localmess.github.io

  • Meta(페이스북), Yandex 등 주요 앱이 Android에서 로컬 포트(127.0.0.1)를 사용해 웹 브라우저와 네이티브 앱 간 식별자·쿠키를 비밀리에 공유한 사실이 공개됨
  • 웹사이트에 심어진 Facebook Pixel, Yandex Metrica 스크립트가 Android 브라우저에서 네이티브 앱(페이스북, 인스타그램, Yandex 계열 앱)으로 브라우징 세션과 식별자를 직접 전달, 사용자 식별  탈익명화가 가능해짐
  • 이 방식은 쿠키 삭제, 시크릿 모드, 권한 설정, 광고ID 리셋 등 기존 프라이버시 보호책을 모두 우회하며, 악성 앱이 포트만 맞춰 듣고 있으면 브라우저 방문 이력 수집도 가능함
  • 2025년 6월 3일 공개 이후 Facebook 측은 해당 코드를 대부분 제거했으나, 해당 기법이 수년간 전 세계 수억대 안드로이드 기기에서 이용됨. Yandex는 2017년부터 유사한 방식을 지속적으로 사용 중임
  • 크롬, 파이어폭스, 브레이브 등 주요 브라우저들은 긴급 차단 조치를 도입했지만, 플랫폼 구조적 한계로 완전한 근본 대책은 미흡, Android IPC와 로컬 네트워크 보안 강화 필요성이 강조됨
반응형
반응형

 

 

Unicode Character 'PARTY POPPER' (U+1F389)


https://www.fileformat.info/info/unicode/char/1f389/index.htm

 

Unicode Character 'PARTY POPPER' (U+1F389)

 

www.fileformat.info

 

반응형
반응형

[JQUERY] jquery 이용해서 페이지 내의 a 태그의 href 를 가져와라

 

$(document).ready(function() {
    // 모든 <a> 태그를 선택합니다.
    $('a').each(function() {
        // 현재 <a> 태그의 href 속성값을 가져옵니다.
        var hrefValue = $(this).attr('href');

        // 가져온 href 값을 콘솔에 출력하거나 다른 방식으로 활용할 수 있습니다.
        console.log("링크 URL: " + hrefValue);

        // 예시: 페이지에 표시
        $('body').append('<p>Link found: ' + hrefValue + '</p>');
    });
});
반응형
반응형

[python] List of running process using python

import psutil

def listProcesses():
    for proc in psutil.process_iter():
        try:
            pinfo = proc.as_dict(attrs=['pid', 'name'])
        except psutil.NoSuchProcess:
            pass
        else:
            print(pinfo)

반응형
반응형

[python] zimport - 수많은 python 패키지를 압축하여 관리 (github.com/waveware4ai)

 

python 패키지를 관리하다 보면 수많은 파일들이 부담스러울때 필요한 zimport 를 소개합니다.

소개

  • zimport는 Python의 표준 zipimport를 대체하고 개선한 도구입니다.
  • zimport는 zip-archives에서 Python 패키지를 로드하고 관리하는 데 사용됩니다. 즉, Java jar처럼 Python 패키지를 관리할 수 있습니다. 또한 동적 라이브러리(.dll, .pyd, .so) 로드도 지원합니다.
  • 이 도구를 만들고 저의 python 작업 디렉토리는 약 160gb, 수백만개 파일에서 80G 1만 개 수준으로 줄어 들었습니다.

주요기능

  • zip-archive에서 동적 라이브러리 로딩 지원(.pyd, .dll, .so, .dylib)
  • zip-archive에서 내부 read() 시에 Java의 getresource처럼 내부 파일(예: 환경 파일) 읽기 지원
  • 컴파일된 .pyc 파일 지원(name.cpython-version.pyc 및 pycache 폴더)

사용된기술

  • importlib, meta_path, path_hooks
  • function intercept (standard open, stat, read, ctypes.WinDLL, ctypes.CDLL 등)

사용환경

  • python win/linux/macosx 지원
  • python version 3.8~3.12 지원

사용방법

python -m pip install zimport
import zimport

  • lib/site-package 디렉토리에서 패키지를 한꺼번에 압축하고, sys.path 에 추가하기만 하면 정상적으로 작동합니다.
  • 물론, 시간의 여유가 되신다면 패키지별로 압축하여, java 의 jar 처럼 의존성에 따라서 패키지를 sys.path 에 추가해 주시면 됩니다.
  • 또한 한번 압축된 package 는 share 하여 쓸수 있기 때문에 하드디스크 공간의 낭비를 줄여줄수 있다고 생각합니다.

마지막으로

  • 소스는 github 에 공개하였으며 현재 버전은 0.1.4 입니다. 몇몇 package (예를들어 transformers) 아직 지원하지 안으며, torch, torchvision, numpy, pandas 와 같은 major 패키지는 이상없이 동작함을 확인하였습니다.

https://github.com/waveware4ai/zimport

  • 또한, portable python 과 아주 궁합이 잘맞습니다. 이것도 github 에 업로드 하였습니다. linux 버전은 직접 컴파일하였고, windows 버전은 embeded 를 개작하였습니다.

https://github.com/waveware4ai/PortablePython

  • 사용시 발생하는 버그나 문제점들은 리포팅해주시면 개선하도록 하겠습니다.

반응형

+ Recent posts