NEW 기획 디자인 개발 프로덕트 아웃소싱 프리랜싱

개발

Cool Cats NFT를 구축하면서 배운 것

본문은 위시켓과 번역가 앰버(Amber)가 함께 만든 해외 콘텐츠 기반 번역문입니다. 암호화폐를 다루는 Coinmonks 블로그의 What I learned from building Cool Cats NFT’글을 번역했습니다. 필자인 xtremetom은 쿨캣(Cool Cats)을 만든 제작자 중 하나입니다. 쿨캣 프로젝트는 2021년 7월 1일 9,999개의 컬렉션으로 론칭 되었고 복싱선수 마이크 타이슨의 구매로 주목받았습니다. 본문은 필자가 솔리디티 언어로 NFT를 구축한 경험을 편안하게 풀어낸 글입니다. NFT에 대한 관심이 날이 갈수록 높아지고 있는 요즘, 작품을 론칭하는데 고려해야 할 것은 무엇인지 살펴보겠습니다. *이 글은 특정 NFT의 투자를 권유하는 글이 아님을 밝힙니다.

 
쿨캣(Cool Cats)

 

쿨캣(Cool Cats)은 제가 이더리움(Ethereum) 블록체인에 퍼블리싱한 두 번째 솔리디티(Solidity)[1]언어 기반 컨트랙트로, 이 프로젝트를 완성하기 전까지만 해도 저는 완전히 솔리디티 초보자였습니다. 완벽하지 않더라도 일단 시작하는 게 중요한 것 아닐까요? 그런 의미에서 전혀 다듬어지지 않은 저의 NFT(Non-Fungible Token)[2]여정을 여러분과 공유하려 합니다. 

 

 

여정의 시작

아주 귀여운 픽셀 NFT를 발견했던 어느 날, 저는 이 사랑스러운 애니메이션 캐릭터들과 곧바로 사랑에 빠져버리고 맙니다. NFT 시장에 꽤나 일찍이 진입을 한 축에 속하긴 했어도, 지갑에 있는 이더리움이 그리 많지 않았기에 딱 하나만 구매를 할 수 있었습니다. 

 

처음부터 이 NFT에 많은 관심을 쏟았던 것은 아니었습니다. NFT에 관심을 쏟기 시작한 건 오픈 이벤트 기간에 캐릭터들이 갑자기 번식을 하면서부터였고, 이때 새로 생겨난 모든 캐릭터를 하나씩 살펴보며 NFT 생태계를 속속들이 공부하고, 민팅(Minting)[3]과정을 대략적으로 정리했습니다. 하지만 점점 파고들수록 모든 부분이 솔리디티 언어로 구현한 컨트랙트와 일맥상통한다는 생각이 들자, 슬슬 겁이 났습니다.

 

그렇게 며칠이 지나고 눈을 뜬 어느 날 아침, 왠지 모르게 코딩이 아주 잘 풀릴 것만 같은 기분이 드는 겁니다. 그렇게 곧장 구글을 켜서 솔리디티로 쓴 컨트랙트 몇 가지를 이해하고자 고군분투했거늘! 역시, 혼자만의 힘으로는 역부족이었나 봅니다.

 

결국엔 Lynq에게 도움을 청해 문제를 해결할 수 있었고, Lynq의 도움으로 저는 비로소 NFT를 이해하는데 한 발짝 성큼 다가갈 수 있게 됩니다. 그리고 결정적으로 NFT 구축에 대한 이 아티클을 끝까지 정독하고 나서야 NFT 세계관을 명확하게 이해할 수 있었습니다.

 

 

테스트, 테스트, 또 테스트 - 문키즈

NFT 생태계의 기본적인 사항들을 이해하고 난 후, 저는 린케비(Rinkeby )[4] 테스트넷에 문키즈(MoonKids)라는 프로젝트 증축을 시작했습니다. 

 

쿨캣(Cool Cats) NFT

 

사실 제가 만들고 싶었던 프로젝트는 캐릭터가 번식하는 스타일의 픽셀 프로젝트였는데, 그래픽을 픽셀화 할 시간이 충분하지 않았기에 픽셀 프로젝트는 접어둔 채 대신 dollmaker 작업에 착수해 수많은 테스트 이미지를 만들었습니다. 

 

이 dollmaker 테스트 이미지에 반려동물, 행성, 풍선, 그리고 배경 등 몇 개의 레이어를 추가하고 나니 제가 애초에 원했던 모든 그래픽 자산을 갖출 수 있었어요. 이렇게 그래픽적인 요소를 모두 갖추고 나니, 이제는 코드와 마주할 긴장되는 순간만이 남았습니다. 

 

솔리디티 때문에 정말 셀 수 없을 정도로 많은 테스트용 문키즈 컨트랙트를 작성했고, NFT 거래 플랫폼인 오픈씨(opensea)에서 메타데이터로 이미지를 노출시키는로직을 확립하는 데에도 꽤나 오랜 시간이 걸렸습니다. 제가 왜 솔리디티 초보자였다고 하는지 아시겠죠?

 

그리고 이 모든 고군분투 끝에 마침내 사람들이 희소가치가 높은 토큰 관련 데이터를 수집할 수 없도록 사전 민팅 메타데이터를 숨기는 방법도 알아냈습니다. 

 

 

메인넷(Mainnet)[5]론칭하기

작업 초반에는 캐릭터 디자인과 PHP로 캐릭터 레이어링 시스템을 구축하는 데 많은 공을 들였습니다. 이 작업은 도합 30년 이상의 PHP 개발 경력을 가진 저와 Lynq에게는 식은 죽 먹기였죠. 아무래도 여러분이 생각하는 것보다 저희가 나이가 좀 많을 수도 있겠군요.

 

쿨캣(Cool Cats) NFT

 

계속해서 아트워크를 진화시킨 끝에, 우리는 위의 카드 포맷을 최종적인 형태로 픽스했습니다. 위 예시에는 랜덤으로 기재하는 이름과 아이디가 빠져 있는 점 참고 부탁드립니다. 

 

그 다음으론 컨트랙트를 작성하고, 한 사람에게만 판매할 수 있는 Shamdoo라는 NFT를 야심 차게 론칭했지만, 아쉽게도 시스템을 완벽하게 구축하지 못하고 런칭한 탓에 구매자가 코인을 전송하는데 드는 가스비가 너무 비싸다고 느꼈나 봅니다. 그래서 즉시 판매를 중단하고 모든 것을 백지상태로 되돌릴 수밖에 없었어요. 당연히 가스비를 포함한 모든 비용을 구매자에게 전액 환불해 주었고요. 이 문제는 당시 제 인생에서 해결해야 할 가장 큰 골칫거리인 것만 같았습니다.

 

 

솔리디티 컨트랙트의 최적화

사실 저는 코드 최적화를 몹시 즐기는데요. 밀리세컨드 단위의 시간과 CPU 사용률을 줄이고자 코드 버전과 씨름하는데 어마어마한 시간을 할애해 온 저에게도, 솔리디티 최적화는 이제껏 접해보지 못한 정말 새로운 유형의 과제였습니다. 

 

저렴한 민팅을 위한 gwei[6]절감

우선 컨트랙트에 작은 변경사항들을 작성하고, 이렇게 업데이트한 컨트랙트를remix를 통해 린케비에 배포했습니다. 그렇게 거래를 하면서 본격적으로 가스비를 비교하기 시작했습니다. 여기서 또 한 번, 완전한 솔리디티 초보자임을 드러내고 말죠.

 

누가 보아도 이 방법이 진행 속도가 너무 더뎌서, 문제를 해결하기는커녕 답답함만 가중시키고 있는 상황이었어요. 결국 구글과 스택 오버플로우(StackOverFlow)로 돌아가 더 나은 해결 방법을 찾을 때까지 쉬지 않고 검색했습니다. 그리하여 마침내 저는 하드햇[7]관련 기사와 아래의 솔리디티 컨트랙트 최적화와 관련된 기사들을 찾아 공부했습니다.

 

솔리디티에서 가스비 절감하기

솔리디티에서 가스비 최적화 하기 Part I : 변수

솔리디티 수학 (Part 3 : 퍼센트와 비율) 

 

자, 이제야 확실한 정보를 습득하게 된 우리는, 비로소 이 레이스에 본격적으로 몸을 던집니다.

 

일상생활과 본업을 충실히 하면서도 가능한 한 많은 자투리 시간을 컨트랙트 최적화에 쏟았지만, 생각보다 진행 속도가 나지 않아 막판엔 제 친구 Adam까지 끌어들였습니다. 그렇게 Adam이 합류한 첫 주말, Lynq, Adam, 그리고 저 이렇게 셋은 가장 최근까지의 깃[8] 레포지토리를 모조리 당겨와 가스비를 줄일 수 있는 방법들을 생각하느라 머리를 굴리고 또 굴리느라 아주 바쁘고도 재미있는 시간을 보냈습니다. 

 

보시다시피 우리의 궁극적인 목표는 가스비를 줄일 수 있는 데까지 줄여서 사용자가 더 저렴하게 민팅할 수 있게 하는 것이었는데, 그러던 와중 몇 가지 재미있는 방법을 발견할 수 있었습니다. 

 

지역 변수[9] 

대다수의 NFT 컨트랙트가 정확한 역할이 파악되지 않은 코드를 빌려와서는 심지어 수정이나 최적화 작업도 하지 않고, 그대로 사용하는 경우가 많습니다. 그중 가장 빈번하게 발생하는 문제는 바로 꼭 필요하지 않을 때에도 totalSupply() 기능을 사용하는 경우입니다. 

totalSupply() 함수

 

totalSupply() 함수를 사용할 때마다 사용자에게 비용을 청구하기 때문에, 가스비가 비싸질 수밖에 없는데요.

 

이 문제는 다음과 같이 해결할 수 있습니다. 

totalSupply() 함수

 

이렇게 간단한 코드 수정 한 번으로 가스비를 확 절감할 수 있었습니다. 그런데 여기서 한 가지 더!

 

조건문

조건문은 누구나 사용할 수 있지만, 제대로 조건문을 이해하고 사용하는 사람은 몇이나 될까요? 

아래 라인을 한 번 살펴보겠습니다. 

조건문

 

이 코드라인의 의도는 분명하지만, 사실 이 코드 라인은 너무 많은 기능을 담고 있습니다. 0개의 토큰을 민팅하려는 사용자는 사실상 없다고 보면 되기에, 이 부분을 빼버리면 대략 3-4 gwei의 가스비(총합한 값입니다.)를 절감할 수 있습니다. 

조건문

 

여기서 이하(≤)를 나타내는 부등호는사실상 두 가지 일을 처리해서 그만큼의 가스비를 발생시킵니다. 

 

- num < 20 ~4 gwei 

- num == 20 ~4 gwei

 

하지만 숫자 20을 21로 바꾸면 더 이상 등호와 비교할 필요도 없게 되고, 그러면 코드 라인은 이렇게 됩니다. 

조건문

 

그 당시 우리는 이토록 가스비를 줄이는 데 엄청나게 혈안이 되어 있었답니다. 

 

if 블록 정렬

Faticorns론칭 당시, Faticorns가 본딩 커브(Bonding curve)[10] 가격 책정 방식을 따르다 보니 이를 고정 가격 방식으로 대체하기 전에 가스비를 최적화하고자 많은 노력을 기울였습니다. 이 과정에서 아주 귀중한 교훈을 하나 얻게 되는데, 바로 블록 정렬이 정말 중요하다는 사실입니다. 

if 블록 정렬

 

위 코드에서 모든 초기 민팅자들(로우 아이디 사용자들)은 적정 레벨에 도달할 때까지 모든 If/else 함수를 비교해야 하고, 이 과정은 당연히 가스비를 유발합니다. 더 많은 사람들이 각자 위치를 더 빨리 찾을 수 있게 하려면 이 블록을 완전히 뒤집거나, 아니면 적어도 if/else 블록을 다시 제대로 배열하세요. 그러면 전반적으로 불필요한 가스비를 줄일 수 있게 됩니다. 지금 보니 Adam이 꽤나 중요한 사실을 발견했다는 건 부인할 수 없는 팩트인 듯하네요.

 

솔리디티 문법 - 두려움의 존재

이 주제는 범위가 너무 광범위하기에, 제가 배운 몇 가지 간단한 것들만 다뤄보겠습니다. 솔리디티 언어에서 0 미만인 숫자는 없고, 부동 소수점[11]도 없습니다. 만약 여러분이 계산한 값이 둘 중 어느 하나라도 포함하고 있다면, 거래가 충돌하거나 실패하게 됩니다. 

 

그리고 제가 알기로 많은 사람들이 safeMaths.sol라는 라이브러리를 사용한다고 알고 있는데요. 여기서 유일한 문제점은 safeMaths를 너무 과다하게 사용하면서 발생합니다. 아래의 경우에는 safeMaths를 쓸 필요가 없습니다. (혹시 제가 틀렸다면 말씀해 주세요.) 

솔리디티 문법

 

이렇게 safeMats를 사용하면 불필요한 가스비를 발생시키게 됩니다. 허나 제가 전문가는 아니기 때문에 한번 직접 서칭해 보시는 방법도 추천드립니다.

 

 

쿨캣 구축하기

Faticorns을 구축하는 동안 Lynq와 저는 Clon과 Evan과 협업하여 쿨캣 작업에 착수했습니다. 더 많은 경험을 쌓아서 나쁠 건 전혀 없으니까요. 

 

쿨캣 솔리디티 컨트랙트

컨트랙트에 부수적으로 추가된 사항은 전혀 없고, 그저 사용자들이 NFT 토큰을 민팅하면, 그때 제가 판매를 시작하거나 일시 중지할 수 있고, 가격과 baseUri를 변경할 수 있게 됩니다. 간단하죠? 컨트랙트는 여기서 확인하실 수 있습니다.

 

 

메타데이터 서버

아마 블라인드 민팅을 진행하는 수많은 NFT를 보셨을 텐데요. 블라인드 민팅은 사람들이 토큰을 민팅하면 후에 해당 토큰이 공개되는 방식입니다. 

 

블라인드 민팅은 아주 매력적으로 느껴질 수 있지만, 쿨캣은 배경색에 따라 그 희소가치가 정해집니다.

블라인드 민팅
오픈씨(OpenSea)에서 볼 수 있는 쿨캣 랜덤 스크린샷

 

우리는 사용자들이 민팅과 동시에 즉시 어떤 고양이를 민팅했는지 볼 수 있으면 좋겠다고 생각했어요. 마치 어릴 적 포켓몬 카드를 열자마자 내 카드가 어떤 카드인지 확인할 수 있었던 것처럼요. 그러기 위해서는 사전 민팅 메타데이터를 숨기고, 민팅 후 실제 메타데이터를 즉각적으로 보여줄 방법이 필요했습니다. 

 

몇 가지 방법들을 연구한 결과, 놀라울 정도로 아주 단순한 솔루션을 발견합니다. (최종 버전이 아닌 테스트 버전을 아래에 공유합니다.)

블라인드 민팅

 

이렇게 저는 웹 3를 사용한 거래가 잘 진행되는지 체크하고, 판매된 토큰 디렉터리에 해당 거래 파일이 존재하는지 체크합니다. 만약 파일이 누락되어 있으면 관련 파일을 디렉터리에 복사해 둡니다. 

 

또 이 코드는 5분 간격으로 웹3가 놓칠 가능성이 있는 파일을 캐치하도록 되어 있습니다. 심플한 코딩이기에, 후에 에러를 일으킬만한 복잡한 부분이 없이 깔끔하다는 게 장점이죠.

 

캐릭터 빌더

기존의 검증된 PHP를 사용해서 각각의 자산 이미지를 차곡차곡 쌓아 올려 다음과 같이 최종적으로 원했던 결과물을 얻었습니다. 

캐릭터 빌더

 

 

향후 계획

향후 쿨캣을 두고 여러 가지 프로젝트를 진행할 예정입니다. 그 가운데 한 가지는 바로 2세대 쿨캣을 위한 번식 기능을 제공하는 것이고요. 이 부분을 구체적으로 어떻게 진행할지는 끊임없이 논의 중입니다 현재 저희는 쿨캣 유니버스를 구축하는 작업을 중점적으로 하고 있습니다. 유니버스라 하면 쿨캣들이 모여사는 마을이나 도시가 되겠네요. 쿨캣 유니버스가 단단하게 자리 잡게 되면 사용자들에게 자연스럽게 소속감과 소유권을 심어줄 수 있을 거라고 기대하고 있어요. 

 

여기서 소유권에는 고양이의 이름을 바꿀 수 있는 것도 포함되는데, 이 부분은 다른 포스팅에서 더 자세히 다룰 수 있도록 하겠습니다. 한 마디 덧붙이자면, 우리는 쿨캣 사용자 커뮤니티의 요구사항에 항상 열린 마음으로 귀를 기울여요. 만약 사용자 커뮤니티에서 반대하는 사안이 있으면 그 부분을 검토해서 철회하기도 합니다.


[1] Solidity: 이더리움 등 블록체인 플랫폼에서 스마트 계약 작성과 구현에 사용되는 계약 지향 프로그래밍 언어

[2] NFT(Non-fungible token): 그림, 영상 등 디지털 아트 및 자산에 블록체인 기술로 만든 토큰을 꼬리표로 붙이는 것

[3] Minting: 디지털 아트 또는 자산을 대체 불가능 토큰으로 만드는 과정

[4] Rinkeby: 이더리움 테스트넷. 테스트넷은 실제 블록체인 네트워크에 적용시키기 전에 블록체인을 테스트하는 환경.

[5] Mainnet: 이더리움, 퀸덤, 네오 등의 기존 사용 플랫폼에서 나와 독립적으로 생태계를 구축하는 것

[6] Gwei: 이더리움의 최소 단위로, 이더리움을 전송할 때 드는 수수료 단위. 1 Gwei = 0.000000001 ETH

[7] Hardhat: 이더리움을 개발할 때 컴파일, 배포, 테스트를 모두 진행할 수 있는 개발 프레임워크

[8] Git: 컴퓨터 파일의 변경사항을 추적하고 여러 명의 사용자들 간에 해당 파일들의 작업을 조율하기 위한 분산 버전 관리 시스템, 또는 명령어

[9] Local variables: 프로그램 내 변수가 선언된 영역만 접근 가능한 영역으로 취하는 변수

[10] Bonding curve: 토큰의 가격이 정해진 곡선(Curve)에 따라 정해지는 방식

[11] 부동 소수점: 컴퓨터에서 실수를 표시하는 방법으로, 소수점의 위치를 고정시키지 않으며 가수와 지수를 사용하여 실수를 표현함.

댓글 0

요즘IT의 번역글들

이 프로필을 만든 저만 해도 영어가 서툴러 영어로 된 기사는 읽는 게 더딥니다. 그래서 준비했습니다. 읽어볼만한 해외 소식들을 번역해 전합니다. We are the world.

엑셀을 사용한 아름다운 데이터 시각화

디자인

여러분을 더 나은 플러터 개발자로 만들어줄 7가지 프로젝트

개발

모든 디자이너가 숙지해야 할 피그마 팁과 노하우

디자인

디자인 원칙과 디자인 가치, 그리고 디자이너

디자인

디자인, 산출물 그 이상을 넘어

디자인

이 회사는 디자인에 투자하고 있는 회사일까요?

디자인

애자일은 정말 디자인을 배제하나요?

디자인

평판 관리가 프리랜서 경력에 미치는 영향

프리랜싱

리액트 네이티브 개발자들이 겪는 가장 빈번한 5가지 문제와 해결책

개발

“솔직히 우리가 하는 것은 스크럼이 아닙니다!”

기획

데이터 시각화가 인류를 위기에서 구한 세 가지 역사적 사건

디자인

NFT의 장밋빛 미래는 사실일까?

기획

피그마 토큰으로 디자인 시스템 만들기

디자인

디자이너+개발자 = 슈퍼팀 만들기

기획

1인 개발자로서 테크 스타트업을 운영하며

기획

웹 디자이너가 PX대신 REM을 사용해야 하는 이유

디자인

100개의 스타트업을 멘토링하며 깨달은 성공의 비밀

기획

중화권 앱 UI가 영미권 앱 UI와 다른 점 알아보기

프로덕트

내가 테크 리더로 일하면서 얻은 8가지 교훈

기획

모두가 즐길 수 있는 디자인 검토 회의 만들기

디자인

프로덕트 매니저에서 프로덕트 마스터로

기획

10배 이상 뛰어난 개발자가 되는 법

개발

제품 디자인 관점에서 바라보는 NFT 아바타 열풍

디자인

에어비앤비: 대규모 iOS 앱 개발 생산성을 위해 바꾼 것들

개발

스포티파이: 맞춤형 플레이리스트 개발 비하인드 스토리

개발

프리랜서가 일하게 될 15가지 유형의 프로젝트

프리랜싱

슬랙: 제품 원칙을 통해 다시 태어난 알림 기능

프로덕트

페이팔: 실시간 그래프 데이터베이스 분석을 통해 사기를 방지하는 방법

개발

트위터: 수십억 개의 이벤트를 실시간 처리하기

개발

슬랙: 4가지 애자일 가치와 방법

기획

스퀘어: 모바일 우선을 넘어 웹에서 누리는 모바일앱 경험

디자인

스포티파이: 카피를 언어로 만드는 UX 라이팅

기획

마이크로소프트: 디자인의 미래를 위한 4가지 원칙

디자인

메타: AR/VR 경험까지 고려한 디자인 청사진

프로덕트

슬랙: 훌륭한 마케팅 카피를 위한 5가지 원칙

기획

2022년 UX/UI 디자인 트렌드

디자인

구글: 가변 폰트의 놀라운 활용법

디자인

에어비앤비: 위기 상황에서의 디자인 원칙 5가지

디자인

어떻게 두 명의 인턴이 수백만 개의 코드들을 보호할 수 있었나

개발

Lattice로 마이크로 프론트엔드를 구축하는 법

개발

웹 컴포넌트가 프론트엔드 프레임워크를 대신할까?

개발

당신이 NFT에 대해 알아야 할 모든 것

개발

우리에겐 이상하지만 개발자들에겐 일상인 일들

개발

Next.js 12에서 주목해야 할 5가지 변화

개발

스벨트 vs 리액트, 누가 더 뛰어날까?

개발

개발자를 위한 iOS 15의 새로운 기능

개발

내가 오픈소스를 싫어하는 이유

개발

프로덕트 매니지먼트 고객 여정 5단계

기획

클럽하우스의 인기는 모두 거품이었다?

프로덕트

데이터 기반 의사결정의 장점

기획

시각 디자인의 폐쇄성 법칙이란?

디자인

사용자 경험(UX) vs 서비스 디자인

기획

프로덕트 매니저는 하루 종일 무슨 일을 할까?

기획

제품 주도 성장은 어떻게 이루어지는가?

기획

UX를 망치지 않는 설득력 있는 배너 디자인

디자인

팝업(Pop-up)으로 불리는 것들에 대하여

디자인

드롭다운(Drop-down)으로 불리는 것들에 대하여

디자인

당신의 생각을 표현하는 새로운 이모지

디자인

가장 똑똑한 소프트웨어 엔지니어에게 배운 10가지 교훈

개발

성공적인 UX 프로젝트를 위한 가장 중요한 질문

디자인

2021년, UI 디자이너가 모바일 앱에서 흔히 저지르는 실수

디자인

IT 매니저가 되는 방법과 성공하기 위한 요소

기획

슬랙(Slack) 같은 앱을 만들려면 비용이 얼마나 들까?

개발

아웃소싱이 이토록 인기를 얻게 된 이유는?

아웃소싱

마케터가 UX 관련 역량을 키워야 하는 이유

기획

미니멀리즘 디자인의 핵심적인 요소들

디자인

새로운 소프트웨어 개발사가 필요하다는 7가지 신호

아웃소싱

2021년을 이끌어가는 프론트엔드 개발 트렌드 5가지

개발

PM을 성장시키는 학습 프레임워크

기획

UI 카피라이팅, 어떻게 써야 하나요?

기획

트렌드 예측: 경쟁에서 앞서는 방법

기획

제품 사고(product thinking)의 힘

기획

인하우스 vs 아웃소싱, 소프트웨어 개발 어떻게 하나요?

개발

그림을 못 그리는 사람도 쉽게 와이어프레임 그리는 방법

기획

스타트업 기업들에게 아웃소싱이 중요한 이유

아웃소싱

제품과 기능, 성공적으로 종료하는 방법 (下)

기획

제품과 기능, 성공적으로 종료하는 방법 (中)

기획

제품과 기능, 성공적으로 종료하는 방법 (上)

기획

UX 디자이너에게 반드시 필요한 12가지 스킬

디자인

패스워드 없는 세상이 오고 있다

개발

디자이너를 쉽게 잃는 방법 10가지

디자인

프론트엔드 코딩 작업에 영감을 줄 8가지 아이디어

개발

구글이 아웃소싱을 하는 이유: 아웃소싱 성공사례 5가지

아웃소싱

일 잘하는 PM이 되기 위한 로드맵 도구 5가지

기획

이제는 말할 수 있다! 아웃소싱에 대한 오해 11가지

아웃소싱

디자인 트렌드, 모던 미니멀 스타일의 UI 가이드

디자인

MVP 개발을 아웃소싱으로 해도 될까요?

개발

온보딩 효과를 높이는 '좋은' 귀차니즘 3가지

기획

게임처럼 즐겨라, 게임화 기법 TOP3

기획

시니어 소프트웨어 엔지니어는 어떻게 일할까?

개발

프로덕트 매니저가 글을 잘 써야 하는 이유

기획

2030년엔 사라질 수도 있는 프로그래밍 언어 5가지

개발

고객들이 언제나 옳은 것은 아니다

기획

유저 스토리는 무엇인가?

기획

고객 성공을 위한 14계명

기획

8px 그리드의 시대가 끝나고, 4px 그리드의 시대가 열릴까?

디자인

모바일 앱은 더 이상 스타트업에게 좋은 아이디어가 아니다

기획

과연 구글의 UX 강좌는 도움이 될까요?

디자인

프로덕트 매니저 여러분, ‘소비자의 요구사항 수집’을 그만두십시오

기획

고객 여정과 경험 지도의 차이점

기획

내가 AI 업계를 떠난 이유 5가지

기획

모달윈도우(팝업)를 디자인할 때 생각할 9가지 원칙

디자인

대기업 vs 중소기업, B2B SaaS 스타트업을 위한 시장은?

기획

내가 개발 인터뷰에서 면접자에게 감동한 이유

개발

HTTP의 새로운 메서드, 서치(SEARCH)에 대하여

개발

세상의 모든 프로덕트 디자이너를 위한 5가지 심리학 원칙

디자인

2021년 테스트 자동화 트렌드 리포트 (下)

개발

2021년 테스트 자동화 트렌드 리포트 (上)

개발

아마존과 스포티파이는 어떻게 사용자를 유지하고 측정할까?

기획

UX 디자이너라면 필수적으로 알아야 할 5가지 법칙

디자인

앵귤러 vs 리액트, 2021년의 승자는?

개발

2021년, SaaS 스타트업 시작을 위한 놀라운 아이디어 10가지

기획

디지털 제품 관리에서 B2B와 B2C 사이의 차이점은?

기획

빠르게 실행할 수 있는 ‘제품 요구사항 문서(PRD)’ 만들기

기획

더 나은 제품을 위한 프로덕트 메트릭스 가이드

기획

노 코드(No Code) 트렌드로 프로그래머들은 일자리를 빼앗길까?

개발

넷플릭스의 플랫폼: 코스모스(Cosmos)에 대하여

프로덕트

비즈니스와 애자일 조직은 어떻게 친해질 수 있을까요?

기획

효과적인 제품 전략 세우기: 다수의 전략적 트랙(MuST) 활용

기획

1년 만에 이메일 마케팅 효과를 극대화했던 방법

기획

솔루션 아키텍트를 위한 팁: 아키텍처 다이어그램의 5가지 유형

개발

새로운 맥 OS ‘빅서’에 대한 UX 디자이너의 생각

디자인

디자인 트렌드, 뉴모피즘의 정석

디자인

스스로 학습하는 UI/UX 디자이너가 되기 위한 2021년 로드맵, 3편

디자인

스스로 학습하는 UI/UX 디자이너가 되기 위한 2021년 로드맵, 2편

디자인

2021년 모바일 UX 트렌드 10가지

디자인

스스로 학습하는 UI/UX 디자이너가 되기 위한 2021년 로드맵, 1편

디자인

앱 설정 기능의 UX를 개선하는 효과적인 방법

디자인

다크모드 UI 디자인의 원칙

디자인

온라인 고객 경험을 개선하기 위한 5가지 방법

기획

신생 스타트업에서 일하는 프로덕트 매니저를 위한 현실적인 조언

기획

웹 개발자와 소프트웨어 개발자의 차이는 무엇인가요?

개발

랜딩 페이지 디자인을 개선하는 13가지 꿀팁

디자인

오프라인 비즈니스가 온라인에서 존재감을 가져야 하는 이유 5가지

기획

상향식 가격 책정 및 패키징 정책: 사용자 여정을 가이드로 활용하기

기획

B2B 제품의 UX, 그것은 숨겨진 영역인가요?

기획

상단 내비게이션 vs 사이드 내비게이션, 어느 것이 더 나을까?

디자인

자동완성 검색 기능 UX 설계를 위한 8가지 팁

디자인

프로덕트 매니저는 전문적인 IT 기술을 갖춰야 하나요?

기획

실리콘밸리 51개 기업들이 말하는 프로덕트 매니저의 역할 9가지

기획

아웃소싱에 대한 모든 것

아웃소싱

앱 디자인 가이드, 사람들이 즐겁게 사용할 수 있는 앱을 만드는 법

디자인

처음부터 완제품이 아니라 ‘MVP’를 만들어야 한다

기획

플러터 vs 리액트 네이티브 vs 네이티브, 성능이 더 우수한 것은?

개발

스타트업 프로덕트 매니저로 성장하는 법, 30-60-90일 플랜

기획

당신의 두뇌는 진보하고 있다: 성취감을 위한 3가지 전략

기획

디자이너들을 편하게 해주는 HTML/CSS 마법 10가지

디자인

코딩의 미래는 ‘노 코드(No Code)’이다

개발

내가 엔지니어링 매니저로 일하면서 저지른 실수들

개발

내가 롬 리서치(Roam Research)를 좋아하는 이유와 실제 사용법 (下)

기획

내가 롬 리서치(Roam Research)를 좋아하는 이유와 실제 사용법 (上)

기획

프로그레시브 웹 앱(PWA)이란 무엇이며, 왜 필요한가?

개발

PWA vs 네이티브 앱, 어떤 것을 선택해야 할까?

개발

UI 디자인에 여백을 활용하는 8가지 팁

디자인

마이크로소프트와 링크드인의 새로운 시도, 프리랜서 마켓에 도전장을 던지다

기획

토마스넷은 왜 가입자 수를 폭발적으로 늘려준 테스트 결과를 거부했을까?

기획

잘 팔리는 기업용 소프트웨어 디자인하기

디자인

파이어베이스(Firebase)란 무엇인가? 파이어베이스 심층 탐구 : 하편

개발

파이어베이스(Firebase)란 무엇인가? 파이어베이스 심층 탐구 : 중편

개발

파이어베이스(Firebase)란 무엇인가? 파이어베이스 심층 탐구 : 상편

개발

업워크(Upwork)가 조사한 요즘 가장 인기 좋은 개발 기술 15가지

개발

일자리 산업이 휴먼 클라우드(human cloud)에 적응하는 방법

기획

팬데믹 이후 세계에서의 디지털 가속화는 어떤 모습일까?

기획

같은 분야를 다룬 글들을 권해드려요.

요즘 인기있는 이야기들을 권해드려요.

일주일에 한 번!
전문가들의 IT 이야기를 전달해드려요.

[구독하기] 버튼을 누르면 개인정보 처리방침에 동의됩니다.

일주일에 한 번! 전문가들의 요즘IT 이야기를 전달해드려요.

[구독하기] 버튼을 누르면 개인정보 처리방침에 동의됩니다.