컴퓨터가 언제 발명됐냐는 질문에는 깔끔한 답이 없습니다. 1941년이라는 사람도 있고, 1946년이라는 사람도 있고, 아예 19세기까지 거슬러 올라가는 사람도 있습니다. 어느 쪽도 완전히 틀린 말은 아니라서 더 헷갈립니다. "세계 최초의 컴퓨터"라는 타이틀을 단 기계가 왜 이렇게 여러 대인지, 그 이유를 따라가다 보면 컴퓨터라는 물건이 한 사람의 발명품이 아니라는 게 보입니다. "컴퓨터 발명한 사람이 누구예요?""에니악이 최초 아니었어요?""폰 노이만이 만든 거 아닌가?""배비지는 뭐 한 사람인데요?" 저는 2012년에 웹 개발을 시작해서 지금까지 13년째 이 일을 하고 있습니다. 그런데 컴퓨터에 처음 손을 댄 건 그보다 한참 전, 중학교 2학년 때였습니다. 집 컴퓨터가 자꾸 말썽을 부려서 동네 형이..
신입 개발자로 면접을 보러 다니던 2012년경, 어느 회사를 가도 빠지지 않던 질문이 있었습니다. "객체지향의 4대 특성을 말해보세요." "캡슐화랑 상속은 뭐가 다른가요?" "다형성을 예로 하나 들어 설명해 주시겠어요?" 저는 이 질문들에 꽤 술술 답했습니다. 캡슐화, 상속, 다형성, 추상화. 네 단어를 거의 주문처럼 외워 갔거든요.그런데 솔직히 고백하면, 그때 저는 객체지향 프로그래밍(OOP)이 대체 왜 생겨난 건지는 하나도 몰랐습니다. 그냥 "요즘은 이렇게 짜는 게 정답이다" 정도로 받아들였어요. 면접관도 저도 배경 이야기는 하지 않았고요. 시간이 한참 지나고 나서야, OOP가 어느 날 갑자기 하늘에서 떨어진 정답이 아니라 감당이 안 되던 코드와 씨름하던 사람들이 더듬거리며 만들어 낸 도구였다는 걸 ..
AI 개발 언어 1위는 몇 년째 파이썬(Python)입니다. 그런데 정작 파이썬은 실행 속도가 느린 언어로 유명합니다. 인공지능과 머신러닝은 어마어마한 연산을 요구하는 분야인데, 하필 느린 파이썬이 AI 개발의 표준으로 자리 잡았다는 건 조금 이상한 일이죠. 이 글은 그 이상한 지점을 파고듭니다.블로그를 하다 보면 이런 질문을 자주 봅니다. "AI 하려면 파이썬 배우면 되나요?""파이썬이 대체 왜 AI에 좋다는 거예요?""느리다던데 왜 다들 파이썬만 써요?" 세 번째 질문이 핵심입니다. 저는 13년 차 개발자이고, 파이콘 같은 행사도 몇 번 다녀봤는데요. 파이썬이 AI를 지배하게 된 이유는 흔히들 말하는 "AI를 위해 태어난 언어라서"가 아니었습니다. 오히려 반대에 가깝습니다. 파이썬은 느립니다. 그..
"PHP 아직도 쓰는 데가 있어요?""워드프레스가 PHP로 돌아간다던데, 그게 그렇게 오래된 언어예요?""이름이 왜 PHP예요? P가 대체 뭐의 약자죠?""레거시 PHP 유지보수 들어가라는데... 지금 와서 이걸 배워야 하나 싶어요." 개발 관련 커뮤니티나 신입 개발자 단톡방을 보면 PHP는 늘 이런 식으로 소환됩니다. 누군가는 "이미 죽은 언어"라고 하고, 누군가는 "그런데 내 월급이 PHP에서 나온다"고 합니다. 저는 2012년에 웹 개발을 시작했는데, 그 시절 회사에서 처음 유지보수를 맡았던 코드가 하필 PHP였습니다. 그래서 이 언어에 대해서는 감정이 좀 복잡합니다. 애증이라고 해야 할까요.이 글에서는 PHP가 어쩌다 세상에 나왔는지, 그리고 "언어로 만들 생각이 전혀 없었다"던 물건이 어떻게 ..
Dart(다트)는 구글이 자바스크립트를 대체하겠다며 2011년에 내놓은 프로그래밍 언어입니다. 브라우저 안에 Dart VM을 심겠다는 야심으로 출발했지만 2015년 그 계획이 무산되면서 한동안 "실패한 언어" 취급을 받았고, 이후 플러터(Flutter)라는 예상 밖의 무대를 만나 되살아났습니다. 이 글은 Dart 언어의 역사와 부활 과정을 시간순으로 정리한 기록입니다. "Dart는 왜 나왔다가 조용히 사라진 줄 알았지?""자바스크립트 죽이겠다더니 결국 자바스크립트로 컴파일한다고?""근데 요즘 플러터 하는 사람들은 다 Dart 쓰던데, 그거 같은 언어 맞아?""이거 구글이 또 밀다 말고 버리는 거 아냐?" 개발 언어의 역사를 들여다보면, 실력이나 설계보다 타이밍과 운이 생사를 가르는 경우가 많습니다. ..
JavaScript 화살표 함수와 람다식은 이제 프론트엔드, 백엔드 가릴 것 없이 매일 쓰는 문법이 됐습니다. 그런데 이 => 기호가 사실은 컴퓨터가 세상에 나오기도 전, 90년 전 수학에서 출발했다는 걸 아는 분은 생각보다 많지 않습니다. 이 글은 람다라는 개념이 어디서 시작해 어떻게 JavaScript의 화살표 함수까지 흘러왔는지, 그리고 화살표 함수가 일반 함수와 진짜로 다른 지점이 어디인지 정리한 글입니다.현업에서 이런 이야기를 자주 듣습니다. "화살표 함수, 그냥 function 짧게 쓴 거 아니에요?""콜백 안에서 this가 자꾸 undefined 뜨는데 이유를 모르겠어요.""람다랑 화살표 함수랑 같은 건가요?""그럼 그냥 다 화살표로 바꾸면 안 되나요?" 저도 처음엔 화살표 함수를 그냥 ..
"Redis는 왜 그렇게 빠른가요?""메모리 DB라던데, 그럼 서버 껐다 켜면 데이터가 다 날아가는 거 아니에요?""MySQL이랑 MongoDB는 결국 뭐가 다른 건데요?""세션을 Redis에 저장한다는 말이 무슨 뜻이죠? 세션은 원래 어디 있는 건데요?"주니어 분들이랑 얘기하다 보면 이 질문들이 묘하게 한 덩어리로 묶여서 돌아옵니다. 따로 떨어진 질문 같지만, 사실 뿌리가 하나예요. "이 데이터가 지금 물리적으로 어디에 놓여 있느냐"입니다. CPU 안인지, 메모리(RAM)인지, 하드디스크인지. 저장 위치만 잡으면 속도도, 휘발 여부도, DB들의 성격 차이도 거의 다 설명이 됩니다. 저는 개발을 시작하기 전부터 컴퓨터 뜯어서 고치는 걸 좋아했습니다. 램 꽂고, 하드 갈고, 발열 잡고 하던 게 취미였거든요..
TDD, 즉 테스트 주도 개발(Test-Driven Development)은 코드를 먼저 짜고 나중에 테스트하는 방식이 아니라, 테스트를 먼저 작성한 뒤 그 테스트를 통과시키는 코드를 만드는 개발 방식입니다. 이 글에서는 테스트 주도 개발이 정확히 무엇인지, 켄트 벡이 왜 이 방식을 정리했는지, Red-Green-Refactor는 어떻게 돌아가는지, 그리고 실무에서 TDD가 어디까지 유효한지를 2012년부터 개발을 해 온 제 경험과 함께 풀어 봤습니다. "테스트를 먼저 쓰라고요? 코드가 없는데 뭘 테스트해요?""TDD 하면 버그가 없어진다던데, 진짜인가요?""일정도 빠듯한데 테스트까지 언제 짜요.""신입 때 배워두면 좋다길래 따라 했는데, 왜 하는지는 모르겠어요." 사실 저도 처음엔 마지막 반응에 가..
레드마인과 지라(Jira)는 개발 팀에서 가장 많이 쓰는 협업툴이자 이슈 트래커입니다. 하나는 무료 오픈소스고 하나는 유료 구독이라, '무료 레드마인 vs 유료 지라' 비교 글은 검색하면 끝도 없이 나옵니다. 그런데 두 툴을 10년 넘게 직접 깔아보고 굴려본 입장에서 솔직히 말씀드리면, 정작 중요한 건 가격표가 아니었습니다. 둘 다 멀쩡한 도구거든요. 망하는 건 항상 도구가 아니라 사람 쪽이었어요. "레드마인 공짜라며? 그럼 그냥 그거 깔자.""지라 한 달에 얼마야? 그 돈을 왜 내?""우리 팀 몇 명인데 유료까지 가야 하나?""무료로 깔긴 깔았는데... 아무도 안 쓰던데요?" 제가 신입이던 2012년 무렵부터 지금까지, 회의실에서 위 네 마디는 정말 단골손님이었습니다. 그리고 저는 저 질문들이 대부..
"DDD요? 결국 폴더 구조 이쁘게 나누는 거 아니에요?""책은 읽었는데, 우리 프로젝트 어디서부터 손대야 할지 모르겠어요.""그거 규모 큰 회사에서나 쓰는 거 아닌가요?""도입했더니 오히려 개발이 더 느려진 것 같은데요." 도메인 주도 설계(Domain-Driven Design), 줄여서 DDD를 두고 저 주위에서 자주 나오던 말들입니다. 재밌는 건 네 개 다 반쯤은 맞는 말이라는 점이에요. 저는 SI 현장과 서비스 개발을 오가면서 DDD를 몇 년 겪었는데, 그 과정에서 얻은 결론이 조금 삐딱합니다. DDD를 제대로 걸어두면 개발 속도가 확 붙는 건 맞는데, 그게 공짜가 아니라는 겁니다.이걸 저는 요즘 후배들한테 설명할 때 싱글스레드와 멀티스레드에 비유합니다. 멀티스레드가 무조건 빠른 게 아니잖아요...
/분류 전체보기 127
컴퓨터가 언제 발명됐냐는 질문에는 깔끔한 답이 없습니다. 1941년이라는 사람도 있고, 1946년이라는 사람도 있고, 아예 19세기까지 거슬러 올라가는 사람도 있습니다. 어느 쪽도 완전히 틀린 말은 아니라서 더 헷갈립니다. "세계 최초의 컴퓨터"라는 타이틀을 단 기계가 왜 이렇게 여러 대인지, 그 이유를 따라가다 보면 컴퓨터라는 물건이 한 사람의 발명품이 아니라는 게 보입니다. "컴퓨터 발명한 사람이 누구예요?""에니악이 최초 아니었어요?""폰 노이만이 만든 거 아닌가?""배비지는 뭐 한 사람인데요?" 저는 2012년에 웹 개발을 시작해서 지금까지 13년째 이 일을 하고 있습니다. 그런데 컴퓨터에 처음 손을 댄 건 그보다 한참 전, 중학교 2학년 때였습니다. 집 컴퓨터가 자꾸 말썽을 부려서 동네 형이..
신입 개발자로 면접을 보러 다니던 2012년경, 어느 회사를 가도 빠지지 않던 질문이 있었습니다. "객체지향의 4대 특성을 말해보세요." "캡슐화랑 상속은 뭐가 다른가요?" "다형성을 예로 하나 들어 설명해 주시겠어요?" 저는 이 질문들에 꽤 술술 답했습니다. 캡슐화, 상속, 다형성, 추상화. 네 단어를 거의 주문처럼 외워 갔거든요.그런데 솔직히 고백하면, 그때 저는 객체지향 프로그래밍(OOP)이 대체 왜 생겨난 건지는 하나도 몰랐습니다. 그냥 "요즘은 이렇게 짜는 게 정답이다" 정도로 받아들였어요. 면접관도 저도 배경 이야기는 하지 않았고요. 시간이 한참 지나고 나서야, OOP가 어느 날 갑자기 하늘에서 떨어진 정답이 아니라 감당이 안 되던 코드와 씨름하던 사람들이 더듬거리며 만들어 낸 도구였다는 걸 ..
AI 개발 언어 1위는 몇 년째 파이썬(Python)입니다. 그런데 정작 파이썬은 실행 속도가 느린 언어로 유명합니다. 인공지능과 머신러닝은 어마어마한 연산을 요구하는 분야인데, 하필 느린 파이썬이 AI 개발의 표준으로 자리 잡았다는 건 조금 이상한 일이죠. 이 글은 그 이상한 지점을 파고듭니다.블로그를 하다 보면 이런 질문을 자주 봅니다. "AI 하려면 파이썬 배우면 되나요?""파이썬이 대체 왜 AI에 좋다는 거예요?""느리다던데 왜 다들 파이썬만 써요?" 세 번째 질문이 핵심입니다. 저는 13년 차 개발자이고, 파이콘 같은 행사도 몇 번 다녀봤는데요. 파이썬이 AI를 지배하게 된 이유는 흔히들 말하는 "AI를 위해 태어난 언어라서"가 아니었습니다. 오히려 반대에 가깝습니다. 파이썬은 느립니다. 그..
"PHP 아직도 쓰는 데가 있어요?""워드프레스가 PHP로 돌아간다던데, 그게 그렇게 오래된 언어예요?""이름이 왜 PHP예요? P가 대체 뭐의 약자죠?""레거시 PHP 유지보수 들어가라는데... 지금 와서 이걸 배워야 하나 싶어요." 개발 관련 커뮤니티나 신입 개발자 단톡방을 보면 PHP는 늘 이런 식으로 소환됩니다. 누군가는 "이미 죽은 언어"라고 하고, 누군가는 "그런데 내 월급이 PHP에서 나온다"고 합니다. 저는 2012년에 웹 개발을 시작했는데, 그 시절 회사에서 처음 유지보수를 맡았던 코드가 하필 PHP였습니다. 그래서 이 언어에 대해서는 감정이 좀 복잡합니다. 애증이라고 해야 할까요.이 글에서는 PHP가 어쩌다 세상에 나왔는지, 그리고 "언어로 만들 생각이 전혀 없었다"던 물건이 어떻게 ..
Dart(다트)는 구글이 자바스크립트를 대체하겠다며 2011년에 내놓은 프로그래밍 언어입니다. 브라우저 안에 Dart VM을 심겠다는 야심으로 출발했지만 2015년 그 계획이 무산되면서 한동안 "실패한 언어" 취급을 받았고, 이후 플러터(Flutter)라는 예상 밖의 무대를 만나 되살아났습니다. 이 글은 Dart 언어의 역사와 부활 과정을 시간순으로 정리한 기록입니다. "Dart는 왜 나왔다가 조용히 사라진 줄 알았지?""자바스크립트 죽이겠다더니 결국 자바스크립트로 컴파일한다고?""근데 요즘 플러터 하는 사람들은 다 Dart 쓰던데, 그거 같은 언어 맞아?""이거 구글이 또 밀다 말고 버리는 거 아냐?" 개발 언어의 역사를 들여다보면, 실력이나 설계보다 타이밍과 운이 생사를 가르는 경우가 많습니다. ..
JavaScript 화살표 함수와 람다식은 이제 프론트엔드, 백엔드 가릴 것 없이 매일 쓰는 문법이 됐습니다. 그런데 이 => 기호가 사실은 컴퓨터가 세상에 나오기도 전, 90년 전 수학에서 출발했다는 걸 아는 분은 생각보다 많지 않습니다. 이 글은 람다라는 개념이 어디서 시작해 어떻게 JavaScript의 화살표 함수까지 흘러왔는지, 그리고 화살표 함수가 일반 함수와 진짜로 다른 지점이 어디인지 정리한 글입니다.현업에서 이런 이야기를 자주 듣습니다. "화살표 함수, 그냥 function 짧게 쓴 거 아니에요?""콜백 안에서 this가 자꾸 undefined 뜨는데 이유를 모르겠어요.""람다랑 화살표 함수랑 같은 건가요?""그럼 그냥 다 화살표로 바꾸면 안 되나요?" 저도 처음엔 화살표 함수를 그냥 ..
"Redis는 왜 그렇게 빠른가요?""메모리 DB라던데, 그럼 서버 껐다 켜면 데이터가 다 날아가는 거 아니에요?""MySQL이랑 MongoDB는 결국 뭐가 다른 건데요?""세션을 Redis에 저장한다는 말이 무슨 뜻이죠? 세션은 원래 어디 있는 건데요?"주니어 분들이랑 얘기하다 보면 이 질문들이 묘하게 한 덩어리로 묶여서 돌아옵니다. 따로 떨어진 질문 같지만, 사실 뿌리가 하나예요. "이 데이터가 지금 물리적으로 어디에 놓여 있느냐"입니다. CPU 안인지, 메모리(RAM)인지, 하드디스크인지. 저장 위치만 잡으면 속도도, 휘발 여부도, DB들의 성격 차이도 거의 다 설명이 됩니다. 저는 개발을 시작하기 전부터 컴퓨터 뜯어서 고치는 걸 좋아했습니다. 램 꽂고, 하드 갈고, 발열 잡고 하던 게 취미였거든요..
TDD, 즉 테스트 주도 개발(Test-Driven Development)은 코드를 먼저 짜고 나중에 테스트하는 방식이 아니라, 테스트를 먼저 작성한 뒤 그 테스트를 통과시키는 코드를 만드는 개발 방식입니다. 이 글에서는 테스트 주도 개발이 정확히 무엇인지, 켄트 벡이 왜 이 방식을 정리했는지, Red-Green-Refactor는 어떻게 돌아가는지, 그리고 실무에서 TDD가 어디까지 유효한지를 2012년부터 개발을 해 온 제 경험과 함께 풀어 봤습니다. "테스트를 먼저 쓰라고요? 코드가 없는데 뭘 테스트해요?""TDD 하면 버그가 없어진다던데, 진짜인가요?""일정도 빠듯한데 테스트까지 언제 짜요.""신입 때 배워두면 좋다길래 따라 했는데, 왜 하는지는 모르겠어요." 사실 저도 처음엔 마지막 반응에 가..
레드마인과 지라(Jira)는 개발 팀에서 가장 많이 쓰는 협업툴이자 이슈 트래커입니다. 하나는 무료 오픈소스고 하나는 유료 구독이라, '무료 레드마인 vs 유료 지라' 비교 글은 검색하면 끝도 없이 나옵니다. 그런데 두 툴을 10년 넘게 직접 깔아보고 굴려본 입장에서 솔직히 말씀드리면, 정작 중요한 건 가격표가 아니었습니다. 둘 다 멀쩡한 도구거든요. 망하는 건 항상 도구가 아니라 사람 쪽이었어요. "레드마인 공짜라며? 그럼 그냥 그거 깔자.""지라 한 달에 얼마야? 그 돈을 왜 내?""우리 팀 몇 명인데 유료까지 가야 하나?""무료로 깔긴 깔았는데... 아무도 안 쓰던데요?" 제가 신입이던 2012년 무렵부터 지금까지, 회의실에서 위 네 마디는 정말 단골손님이었습니다. 그리고 저는 저 질문들이 대부..
"DDD요? 결국 폴더 구조 이쁘게 나누는 거 아니에요?""책은 읽었는데, 우리 프로젝트 어디서부터 손대야 할지 모르겠어요.""그거 규모 큰 회사에서나 쓰는 거 아닌가요?""도입했더니 오히려 개발이 더 느려진 것 같은데요." 도메인 주도 설계(Domain-Driven Design), 줄여서 DDD를 두고 저 주위에서 자주 나오던 말들입니다. 재밌는 건 네 개 다 반쯤은 맞는 말이라는 점이에요. 저는 SI 현장과 서비스 개발을 오가면서 DDD를 몇 년 겪었는데, 그 과정에서 얻은 결론이 조금 삐딱합니다. DDD를 제대로 걸어두면 개발 속도가 확 붙는 건 맞는데, 그게 공짜가 아니라는 겁니다.이걸 저는 요즘 후배들한테 설명할 때 싱글스레드와 멀티스레드에 비유합니다. 멀티스레드가 무조건 빠른 게 아니잖아요...