반응형

전체 글 54

당신이 게으른 게 아니다. 뇌가 즉각적인 보상을 원할 뿐이다.

많은 사람들이 목표를 세우고도 실행하지 못하는 경험을 합니다. 운동을 해야 한다는 걸 알지만 소파에 앉아 넷플릭스를 켜고, 공부를 해야 하지만 SNS를 확인하는 것이 더 쉽습니다. 마치 보이지 않는 힘이 우리를 미루기의 늪으로 끌어들이는 것처럼 느껴집니다. 하지만 이는 단순한 의지력 부족이 아닙니다. 우리의 뇌가 즉각적인 보상에 중독되었기 때문입니다. 뇌에서 분비되는 도파민은 동기부여와 보상을 담당하는 중요한 신경전달물질입니다. 과거에는 도파민을 얻기 위해 사냥을 하거나 노동을 해야 했지만, 이제는 스마트폰을 열기만 해도 손쉽게 강한 보상을 받을 수 있습니다. 이처럼 쉽게 얻어지는 도파민 보상은 우리의 뇌를 빠르게 길들이며, 장기적인 보상이 필요한 행동을 지루하게 느끼게 만듭니다.도파민 중독이 당신을 나..

본능에 의존하는 개발: Programming by Coincidence

프로그래밍에서 본능적인 직관은 때때로 강력한 도구가 될 수 있지만, 그것만을 의존하면 큰 문제를 초래할 수 있습니다. 이는 실용주의 프로그래머에서 언급된 '우연에 의존하는 프로그래밍(Programming by Coincidence)'과 같은 개념으로, 코드가 동작하는 이유를 정확히 이해하지 못한 채 그저 운 좋게 동작하는 것처럼 보이는 방식을 의미합니다. 본능적으로 코드를 작성할 때는 빠르게 개발할 수 있다는 장점이 있지만, 예상치 못한 버그가 발생했을 때 원인을 찾기 어렵고, 코드의 유지보수성이 떨어지는 문제가 있습니다. 따라서 본능을 활용하되, 이를 체계적으로 보완하는 방식이 필요합니다. 본능에 의존하는 프로그래밍의 문제점개발하고 있던 웹 애플리케이션에서 심각한 성능 문제가 발생했습니다. 특정 페이지..

SW 개발 일반 2025.02.26

SW 개발의 기본: 추상화

소프트웨어 개발에서 추상화(Abstraction)는 핵심적인 개념입니다.   하지만 "추상화를 잘해야 한다"는 조언만으로는 실제 코드에서 어떻게 적용해야 할지 감이 오지 않는 경우가 많습니다. 오랜 시간 개발을 하며 느낀 점은, 추상화는 단순히 코드를 깔끔하게 만드는 것이 아니라 SW의 정체성을 유지할 수 있는 이름을 부여하는 것입니다. 다만 이런 설명도 어렵죠.  그렇다면, 어떻게 하면 좋은 추상화를 할 수 있을까요? 그리고 반대로, 불필요한 추상화를 피하려면 어떻게 해야 할까요?추상화를 잘하라는 말이 모호한 이유처음에는 "추상화를 잘해야 한다"는 말을 자주 했습니다. 하지만 개발자마다 이해하는 방식이 달라 결과물이 천차만별이었습니다.어떤 개발자는 너무 낮은 수준에서 추상화를 적용했습니다.예를 들어, ..

SW 개발 일반 2025.02.22

Cross-cutting 문제

앱을 개발하다 보면 앱 개발에 몰입하여 앱의 범위를 넘어서는 문제를 지각하지 못하는 경우가 있습니다. 시각을 조금만 넓게 가져가면 서로 다른 앱 간에 유사한 문제를 해결하려고 하는 경우가 보입니다. 이러한 문제를 Cross-cutting Concern(횡단 관심사)라고 합니다. 멋있는 단어입니다. 근사하지만 결국 중복에 관한 문제입니다. 횡단으로 중복이 발생했다는 것입니다.  이러한 문제를 효과적으로 관리하지 못하면 유지보수성이 떨어지고 개발 생산성이 저하될 수 있습니다. 특히, 앱 개발에서는 동일한 기능이 여러 곳에서 중복 구현되는 경우가 많아 이런 문제를 해결하는 것이 더욱 중요합니다. 결과적으로 플랫폼이 이런 부분을 담당해야 하고 플랫폼이 이 부분을 흡수하는 만큼 앱 개발자는 할 일이 줄어 앱 개발..

찬물 샤워 2일 차 – 효과가 있는 건가?

아침 6시 멍한 머리로 깨어납니다. 찬물 샤워 2일째. 솔직히 말하면 여전히 힘듭니다. 따뜻한 침대에서 나오는 것도 어렵고, 뜨거운 물을 틀고 싶은 유혹도 큽니다. 하지만 오늘도 정신을 다잡고 찬물 샤워를 했습니다. 찬물을 몸에 끼얹는 순간, 몸이 갑자기 "멍..." 하다가도 순식간에 번쩍! 하고 깨어나는 느낌이었습니다. 차가운 피가 온몸을 순환하며 세포 하나하나를 깨우는 듯한 기분이 들었죠. 머릿속까지 선명해지고 신경이 곤두서는 듯한 기분이었습니다. 확실히 찬물 샤워가 정신을 깨우는 데 효과적이라는 걸 체감했습니다. 과학적으로도 찬물 샤워는 다양한 효과가 입증되었습니다. 연구에 따르면, 찬물 샤워는 교감신경계를 활성화시켜 각성을 유도하고, 신체의 혈액 순환을 촉진하며 면역력을 높이는 데 도움이 됩니다...

도파민을 내 편으로 만드는 법: 매일 실천하는 작은 습관

우리는 하루에도 수많은 결정을 내립니다. 그리고 그 모든 결정의 이면에는 도파민(Dopamine)이 작용하고 있습니다. 도파민은 단순한 ‘행복 호르몬’이 아닙니다. 오히려 우리를 움직이게 하는 동기 부여의 핵심 물질입니다. 하지만 많은 사람들이 도파민을 잘못된 방식으로 사용하면서 즉각적인 보상에 길들여지고, 결국 성장과 성공으로 가는 길에서 멀어지고 맙니다. 이 글에서는, 세계적인 뇌과학자 애나 렘키(Anna Lembke) 교수와 유명 팟캐스트 "Diary of a CEO"에서 논의된 도파민 활용법을 바탕으로 도파민을 내 편으로 만드는 실천 가능한 방법을 소개합니다. 도파민이 우리를 망치는 이유도파민은 우리를 움직이게 만드는 원동력이지만, 잘못된 방식으로 활용될 때 즉각적인 보상만을 추구하는 함정에 빠지..

(2) FSD의 핵심 계층과 역할

1. FSD란 무엇인가?Feature-Sliced Design(FSD)은 프로젝트를 기능 중심으로 구조화하여 유지보수성과 확장성을 높이는 방법론입니다. 기존 계층 기반 아키텍처(MVVM, 클린 아키텍처)와 달리 기능 단위로 모듈을 나누고, 관련된 코드(UI, 비즈니스 로직, 데이터 등)를 한 곳에 배치하는 방식을 따릅니다. 이를 통해 코드의 응집도를 높이고, 기능 단위의 독립성을 유지할 수 있습니다. FSD는 여러 계층으로 구성되며, 각 계층이 서로 긴밀히 연결됩니다. 각 계층이 어떻게 상호작용하는지를 이해하는 것이 중요합니다. 이제 FSD의 핵심 계층을 살펴보고, 하나의 기능을 중심으로 이 계층들이 어떻게 유기적으로 연결되는지 예제를 통해 설명하겠습니다. 2. FSD의 핵심 계층1) App Layer ..

(1) FSD란 무엇인가?

소프트웨어 개발에서 구조화의 중요성개발을 하다 보면 코드가 점점 커지고 복잡해지면서 유지보수가 어려워지는 순간이 옵니다. 작은 프로젝트라면 괜찮겠지만, 기능이 추가되고 팀원이 늘어나면서 코드의 일관성과 재사용성을 유지하는 것이 점점 힘들어집니다. 전통적으로 MVC, MVVM, Clean Architecture 같은 다양한 패턴을 사용해 왔습니다. 하지만 이러한 패턴에도 모호한 부분이 존재하고, 기능이 많아질수록 구조를 유지하는 것이 어려워집니다. 여기서 등장하는 것이 바로 Feature-Sliced Design (FSD)입니다.  FSD는 기능 중심으로 코드를 정리하는 방법론으로, 코드의 위치를 명확히 정의하고, 유지보수성과 확장성을 극대화하는 데 초점을 맞춥니다. 이제, 기존 아키텍처와 비교하며 FSD..

SW 테스트: 하기 싫은 일을 하면 뇌에서 일어나는 놀라운 변화

우리 모두 알고 있죠. 운동이 건강에 좋고, 공부가 미래를 밝게 해주며, 테스트 코드가 개발 품질을 높인다는 사실을요. 그런데 문제는 ‘알고 있음’이 아니라, ‘하기 싫음’입니다. 운동할 생각만 해도 피곤하고, 공부는 재미없고, 테스트 코드 작성은 귀찮기 그지없죠. 그런데 말입니다, 하기 싫은 일을 꾸역꾸역 하면 뇌에서 엄청난 변화가 일어난다는 연구 결과가 있어요.의지력의 본진, 전대상 피질뇌에는 ‘전방 중대상 피질 (Anterior Midcingulate Cortex, aMCC)’이라는 영역이 있습니다. 이름이 너무 어려우니 그냥 ‘의지력 발전소’라고 해볼까요? 이 영역은 우리가 하기 싫은 일을 집요하게 수행할 때 활성화되는데, 단순히 많은 일을 한다고 커지는 게 아니라, 진짜 하기 싫은 일을 할 때 ..

클린 코드: MAPPER 원칙

클린 코드(clean code)는 로버트 C. 마틴(Robert C. Martin)의 저서에서 제안된 개념으로, 이해하기 쉽고, 변경하기 용이하며, 예측 가능해야 한다는 특징을 갖습니다. 클린 코드를 달성하는 방법 중 하나는 OOP 원칙을 따르는 것입니다. OOP는 현실 세계의 개념을 모델링하는 방식으로, 객체와 클래스를 활용해 소프트웨어 시스템을 구성합니다. 하지만 단순히 객체를 사용하는 것만으로는 클린 코드가 보장되지 않습니다. 잘못된 객체 모델링은 오히려 복잡성을 증가시키고, 유지보수를 어렵게 만들 수 있습니다. 이러한 문제를 해결하기 위해 등장한 것이 바로 MAPPER 원칙입니다.MAPPER 원칙이란?현실 세계를 반영하는 소프트웨어 설계 원칙에서 설명한 내용을 MAPPER라는 원칙으로 설명하는 책..

반응형