분류 전체보기 썸네일형 리스트형 개발자처럼 사고하기: 시작하기 전에 '이것'만 알아두세요 전공 서적보다 의외로 쓸모 있을지도? "코드를 잘 치는 법"이 아니라, 코드 전에 알아야 할 사고방식에 대한 이야기입니다.Part 1. 개발, 시작하기 전에 알아야 할 것인간의 가장 강력한 지적 능력은?퀴즈를 하나 내보겠습니다. 인간의 가장 강력한 지적 능력은 뭘까요?창의력? 상상력? 언어?아닙니다. 이런 능력들을 원천적으로 파고 들어가면 하나로 귀결됩니다. 답은 추상화(Abstraction)입니다. 추상화란, 복잡한 현실에서 핵심만 뽑아내 단순한 구조로 만드는 능력입니다. 우리는 매일 추상화를 합니다. 사과 하나하나를 볼 때 Braeburn, Fuji, Gala 같은 개별 품종을 일일이 구분하지 않죠. 그냥 "사과"라는 개념으로 묶습니다. 여러 동물들을 보고 "포유류"라는 분류를 만드는 것도 마찬가지입.. 더보기 [CS 공부 #4] 알고리즘: 가장 효율적인 길을 설계하는 사고의 기술 지난 글에서 우리는 운영체제(OS)를 통해 **“한정된 자원을 어떻게 나눌 것인가”**를 살펴봤습니다.이제 그 다음 질문이 남았습니다.“그 자원을 가장 효율적으로 활용하는 법은 무엇일까?”그 해답을 찾는 학문, 바로 **알고리즘(Algorithm)**입니다.알고리즘은 단순히 코드를 빠르게 만드는 기술이 아니라,복잡한 세상 속에서 효율적인 길을 설계하는 사고의 기술입니다.1️⃣ 효율은 ‘속도’가 아니라 ‘사고의 구조화’다‘알고리즘’ 하면 대개 복잡한 수식, 그래프, 백준 문제가 먼저 떠오르죠.하지만 알고리즘의 본질은 코드가 아닙니다.그것은 문제를 가장 적은 노력과 비용으로 해결하기 위한 구조적 사고의 틀입니다.컴퓨터과학은 이 사고를 수식으로 표현합니다.시간 복잡도(Time Complexity) — 즉, ‘.. 더보기 [CS 공부 #3] 운영체제 : 한정된 자원을 어떻게 나눌 것인가? 지난번 네트워크를 통해 연결의 중요성을 논했다면, 오늘은 그 연결된 세상 속에서 가장 근본적인 문제,바로 '한정된 자원을 어떻게 나눌 것인가'에 대해 이야기해 보려 합니다. 이 질문은 비단 컴퓨터 시스템에만 국한되지 않습니다.우리의 하루, 조직의 시간, 그리고 나 자신의 에너지까지 모두 '유한한 자원'이기 때문이죠. 저는 한때 프로젝트를 동시에 일곱 개 맡아 진행한 적이 있습니다.그때의 제 하루는 마치 과열된 CPU 같았습니다. 회의 알림은 인터럽트처럼 쉴 새 없이 들어왔고, 가장 중요한 문서 작업은 언제나 ‘대기열’(Queue)에 밀려 있었습니다. 그때 처음으로 깨달았습니다."이건 단순한 업무 과부하가 아니라, 근본적인 자원 관리 문제구나."1. 보이지 않는 관리자: 운영체제의 기본 원리운영체제(OS).. 더보기 [CS 공부 #2] 네트워크 : 연결되지 않으면 문제도 풀리지 않는다 네트워크(Network): 끊김을 극복하고 문제를 해결하는 구조의 철학 오늘은 우리가 너무나 당연하게 여기는 것, 바로 연결에 관한 이야기를 해보려 합니다. 문제를 해결한다는 것은 결국 '원인을 찾고 관계를 이해하는 일'이지만, 사실 모든 문제는 '끊어진 곳'에서 시작됩니다. 전기가 끊기면 불이 꺼지듯, 명령이 전달되지 않으면 프로그램은 멈춥니다. 이 모든 현상의 공통분모는 명확합니다.“연결이 끊기면, 문제도 풀리지 않는다.” 그래서 이번 성장의 기록에서는, 이 끊김을 극복하기 위해 태어난 과학, 네트워크(Network)를 통해 "연결이 어떻게 문제를 해결하게 되는가"를 탐구해 보겠습니다.1. 연결이 없던 시절의 절박함: 속도가 아닌 '생존'을 위한 설계네트워크는 처음부터 '속도' 경쟁을 위해 태어난 기.. 더보기 [CS 공부 #1] 코딩 학원 등록 전에, 진짜 알아야 할 것 코딩 학원 등록 전에, 진짜 알아야 할 것혹시 ‘컴퓨터과학’ 하면 ‘코딩’부터 떠오르시나요? 사실 저 또한 그랬습니다.서비스를 만드는 기획자로 일하면서도, 컴퓨터과학은 개발자들만의 전문 영역이라고 생각했죠. 하지만 시간이 지날수록 깨닫게 된 것이 있습니다.우리가 쓰는 혁신적인 서비스들이 세상을 바꾸는 진짜 비밀은 화려한 코딩 기술이 아니었습니다.그것은 바로 문제를 체계적으로 분석하고, 가장 효율적인 해결책을 설계하는 사고의 힘이었습니다.그리고 그 힘의 근원이 바로 컴퓨터과학이었죠. 이 시리즈는 코딩 기술을 가르쳐주지 않습니다. 대신, 그보다 훨씬 근본적인 것, 바로 세상을 움직이는 가장 강력한 생각의 도구인 ‘문제 해결을 위한 사고방식’에 대해 이야기하려고 합니다. 문제를 '찾는 힘'과 '푸는 힘' .. 더보기 Leaf 성장일지 #3 – 가비아 도메인을 AWS EC2에 연결하는 가장 깔끔한 방법 이번 작업은 Leaf 프로젝트의 개발 서버에 도메인을 연결하는 작업이었습니다.지금까지는 IP 주소와 포트 번호로 접속했지만, 더 이상http://ec2-xx-xx-xx-xx.ap-northeast-2.compute.amazonaws.com:3000이런 주소는 보기 싫었거든요…!이제는 내가 원하는 도메인으로 접근할 수 있도록,가비아에서 구매한 도메인을 EC2와 연결하는 작업을 진행했습니다. 1. 도메인 구매 및 Elastic IP 설정도메인은 가비아(Gabia) 에서 구매EC2는 이미 구성 완료 (Ubuntu 22.04 + Docker + nginx)EC2의 퍼블릭 IP가 재시작 시 변경되는 문제가 있어, Elastic IP로 고정Elastic IP 설정 방법EC2 대시보드 → “Elastic IP” → .. 더보기 Leaf 성장일지 #2 – 인프라는 처음이라, CI/CD 구축기 이번에 제가 준비한 건,바로 Leaf의 개발 서버 인프라 구축입니다.코드는 없지만, 코드를 담을 ‘자리’를 먼저 만들어두는 작업이었죠. 개발 환경에는 보통 이렇게 4가지 서버 단계가 있습니다:로컬 (개발자의 개인 환경)개발 서버 (공동 테스트용, 작업 공유)스테이징 서버 (배포 전 최종 검증)라이브 서버 (실사용자 대상 서비스)Leaf는 이제 막 프로젝트를 시작한 사이드 팀이고,각자의 로컬에서 작업을 시작하더라도 합쳐보고 공유할 공간이 필요했습니다.우리는 그걸 “개발 서버”로 정의하고, 지금 단계에서 가장 먼저 구축한 것입니다. ☁️ EC2 개발 서버 구성 AWS 관리 콘솔에서 Ubuntu 22.04 LTS AMI 선택 → t2.micro (프리 티어)키 페어는 기존에 생성해둔 leaf_keypair .. 더보기 Leaf 성장일지 #1 – ‘가볍게 쓰는 가계부’를 설계한다는 건 기획자 입장에서 서비스 아이디어가 떠오르는 순간은 대부분 단순한 문제의식에서 시작됩니다.Leaf도 마찬가지였습니다.요즘 가계부 앱을 보면 입력 방식이 너무 복잡하거나,기능은 많은데 내가 진짜 궁금한 건 금방 알 수 없는 경우가 많았습니다.특히 정작 가장 자주 하는 말은“점심으로 8천 원 썼어.”“이번 달 식비 얼마나 남았더라?”이런 자연스러운 질문들인데,대부분의 앱은 이런 흐름을 제대로 받아주지 못하더군요. 그래서 시작한 게 Leaf입니다.사용자가 말로 지출을 입력하고,앱이 그걸 이해하고 정리해주는 대화형 재무 파트너.“가계부는 무겁지만, Leaf는 가볍다.”라는 슬로건도 그렇게 나오게 되었고요. ‘가볍다’는 건 기능이 없다는 뜻이 아니다초기에는 단순히 자연어 입력 기반 가계부라고만 생각했습니다.입력창 .. 더보기 이전 1 2 다음