아티클

yeji Kim

yeji Kim

대학생 학습 copilot 에딧 1주차 개발일지

1주차 개발일지

안녕하세요! 강의록/기출문제 기반 학습 copilot 에딧을 만드는 김예지입니다. 조금 늦은 1주차 개발 일지를 가져왔어요.

지난주에는

  1. 디자인 시스템을 만들었습니다. 아직 기초적인 UI라 별 건 없지만, 추후 일관된 디자인을 유지하면서도 수정이 용이할 수 있게 위젯들을 컴포넌트화하려 했어요. 테마 색상을 지정할 수 있는 소소한 기능도 넣었답니다.

  2. 서버, db와 연동하여 기본적인 CRUD 기능을 구현했습니다.

  3. PDF 뷰어를 만들고, 페이지를 로딩하거나 새로고침 버튼을 누를 때마다 OCR이 이뤄지도록 했어요. OCR 내용은 사용자가 수정하거나, 메모를 덧붙일 수도 있게 했습니다.

여기까지 만들고 보니, 어떻게 해야 강의록-교과서-기출 문제를 연결할 수 있을지 고민이 되더라구요. 양이 많기 때문에 정보들을 잘 ‘요약’하고, 이들을 잘 ‘연결‘하는 게 핵심이라는 생각이 들었습니다. (Summary&linking)

결국 한정된 자료(강의록과 교과서 pdf) 내에서 ’의미론적 검색‘을 구현하는 게 관건인 것 같습니다.(시험 문제의 발문이라는 쿼리에 대해 답이 될만한 내용을 찾아주는 것처럼요.) RAG나 searchGPT의 방법론을 많이 참고해야 할 것 같아요.

강의록과 기출 문제 기반으로만 잘 만들어둬도, 응용 가능성은 클 것 같습니다. 이번주에는 summary&linking 방법을 구상하고, 적용 직전까지 검증해보는 게 목표에요! 그 이후에는 남은 UI와 세부 기능을 구현하면 MVP는 완성할 수 있을 것 같습니다.

UI는 조금만 더 보완해서 가까운 시일에는 앱 스크린샷과 함께 가져오겠습니다! 감사합니다🙂

6
0
김우정

김우정

경쟁을 뛰어넘는 법

3.png

우리가 사는 자본주의 세상에는 경쟁의 달인들이 참 많습니다. 경쟁의 목적은 승리입니다. 그럼 궁극적인 목표는 무엇일까요? 흔히 경제적 자유를 이야기하지만, 사실 승리의 결과는 계급의 상승입니다. 법적으로 신분이 없는 사회에서 우리는 스스로 계급을 추앙하죠.

현대의 첫 번째 계급은 타고난 배경입니다. 우리가 선택할 수 없죠. 그래서 소위 흙수저 출신이 선택할 수 있는 두 번째 계급은 학벌입니다. 공부에 대한 취미가 있건 없건 명문대학에 진입하기 위해 청춘을 불태우죠. 이 무한 경쟁에서 자유로운 사람은 별로 없습니다. (댓글 링크에 계속)

1
1
손민지

손민지

이제 피그마 내려놓고 전단지 돌립니다

메이커 스프린트 1기가 끝난지도 벌써 두 달이 조금 넘었네요.

정말 우당당탕한 7,8월을 보냈는데요, 그동안 제품 만들고 팔(려고 노력)면서 느낀 점을 간단하게 소개합니다.

기회가 된다면 여러 편의 글에 나눠 하나씩 더 자세히 이야기하도록 하겠습니다.

  1. CRM? 버린다. 자동화? 버린다. 일단 얼굴보고 만나자.

    • CRM 찾기를 포기하고 시작된 카톡방 홍수 상태......가능하면 무조건 찾아뵙겠다고 하고, 미팅 후 단톡방부터 만듦. 메일 베이스의 기존 CRM은 우리 고객에게 적용할 수가 없음.....

  2. 전단지 직파의 효과가 은근 있다. 좀 부끄럽긴 한데 금방 익숙해진다.

    • 일단 발로 뛰는게 가장 응답률이 높다. 리소스를 많이 쓰더라도 사무실에 앉아서 기다리는 것보다 타율이 높음.

  3. Sales가 아니라 Help를 하자

    • 제품 사용하라고 하는 대신 6시간 동안 노션 셋업을 도와주고 옴.

    • 사실 우리가 뭘 help할 수 있을지 아직은 잘 모르겠다. 일단은 노션과 엑셀을 활용한 DT와 운영 컨설팅 정도.

    • 여전히 전환은 어렵지만 그래도 관계는 생긴다. 이 관계들을 어떻게 구매까지 끌고 나갈 수 있을까?

  4. 리드 타임의 존재를 뼈저리게 느끼는 중....

    • 스며들기(?)까지 시간이 많이 걸린다. 세일즈란 결국 스며드는 일인 걸까..?

  5. 고객들이 반응하는 것과 우리가 그들에게 필요할 것이라 여기는 것 사이에 갭이 꽤 크다. 생각보다 작은 것들로 만족하는데, 너무 작아서 우리는 그냥 스치고 지나가 버린다.

    • 그래서 고객을 만나고 오면 배의 시간을 할애해서 회고를 하라고 하나보다.

  6. 인바운드로 도입 문의가 오기까지는 최소 4번의 접촉이 필요한 것 같다.

    • 그래서 어떤 채널이 쓸모 없고 어떤 채널이 쓸모 있는지 인과 관계를 파악하기가 매우 까다롭다. 단번에 구매로 이어지는 마케팅 수단이라는 게 있을까? 일단 자주 접촉하는 것만이 유일한 방법이라고 생각….

    • 인바운드로 들어온 고객사 미팅에서 물어봤더니 1. 옛-날에 홈페이지 보고 2. 이번 업데이트 뉴스 보고 3. 인스타 DM 본 다음 4. 일주일 뒤 연락함….인스타 DM 효과 없다고 접으려고 했는데 다시 끌려왔다.

  7. 사용 의사를 내보여도, 실제로 회원 가입 안하고 회원 초대 안하고…사용은 더 안하고….어떻게 잡아다 붙잡아 놔야할까

    • 일단 실천하고 있는 방법은 릴리즈노트 주면서 왜 안쓰냐고 물어보기. 이때가 답장 제일 잘해주는 골든 타임임. 제품 개발 관련한 부분이던 유저 리서치건 이때 와다다다다 물어봐야함

    • 중요한 고객이면 자꾸 안부 묻는 척하면서 전화하기

    • 기능 개발에 필요한 유즈 케이스 카톡으로 물어보면서 안부 체크 (은근 답장 잘해줌)

    • 실내 배너랑 탁상 배너 등 혜택이나 상품 제작해서 보내준다고 하고 문제 상황 물어보기

  8. 박람회는 가장 저렴하게 Suspect를 확보할 수 있는 길이었다

    • 올해 초에 나간 박람회에서 4일동안 약 200건의 Suspect / Lead를 찾았다. 기간과 금액 대비 정말 저렴하다. 일단 얼굴을 바로 보고 설명할 수 있는게 엄청난 장점. 내년에 무조건 나간다 (근데 진짜 체력적으로 너무 힘들다…..근데 값지다……흑)

    • 업계 특성상 사장님 설득해봤자 소용없고 트레이너 개인을 설득해야 한다.

    • 근데 트레이너들은 관심이 없다….그래서 사장님 마음만 탄다…내 애도 탄다….뭐랄까 공부 못하는데 잘 할 마음도 없는 자식을 바라보는 학부모 느낌.

    • 센터에 관심있는 트레이너 1명을 뚫는 것이 중요하다. 피어 프레셔로 동료가 쓰면 사장님이 쓰라고 할 때보다 쓸 확률이 큰 것 같기도.

  9. 성공 후기를 모으는 것이 중요하다는 걸 늦게 알았다. 파트너 트레이너가 돈을 얼마나 벌었는지, 재구매가 얼마나 일어났는지 얼굴과 센터명 박힌 인터뷰 영상, 리뷰, 후기를 많이 많이 받아야 한다.

  10. 트레이너 시장 카르텔을 찾아서….

    1. MOU 맺고 인스타에 인증하고 트레이너 관련 교육 코스도 등록함.

    • 인스타 안하던 대표님 인스타 시작. 곧 카톡 프사도 바꿀 예정. 인간 개조 공장 스프린트.

    • 학연 지연 혈연 다 끌어다 써서 크고 작은 기회들을 만들고 잡아 채는 싸움인가보다.

  11. 트레이너는 교육과 마케팅에만 돈을 쓴다

    • 온라인 교육, 오프라인 세미나를 준비하고 있다. 상대적으로 제품에 관심 보일 확률이 큰 ‘교육 듣는’ 트레이너에게 접근하기 위한 방법.

  12. 직거래가 최고다.

    • 대기업 사내 헬스장 들어가려고 하다가 부러짐. 이해관계자가 여럿일 수록 어렵다. 일단 우리가 접촉해야 하는 트레이너 얼굴 한 번 보기가 말도 안되게 어려움. 신선한 야채를 저렴하게 사려면 농산물 직거래해야 하는 것처럼 직거래 해야한다.

  13. 병원, 비만 클리닉, 영양사… 고객 건강 관리가 필요한 조직에 다 연락해보려고 하는 중.

    1. 접촉면을 넓히는 것과 뾰족한 타겟에 집중하는 것 사이에서 균형 잡기가 참 어렵다. 트레이너에게만 집중적으로 세일즈해야하는 것 같기도 하고, 아닌 것 같기도 하고…..선택과 집중을 못하고 있는 건가? 우리 팀 주된 싸움 토픽 중 하나.

  14. 개척 영업을 하는 이유는 소개 영업의 소중함을 알기 위해서이다.

    • 보험왕 유튜브를 봤다. 개척 영업이라는 말을 처음으로 들었다. 그날을 기점으로 미팅나가는 틈틈이 전단지를 돌리고 있다. 소개 영업의 소중함을 느끼면서 주변 사람에게 더 적극적으로 연락해서 누구 소개시켜달라고 조르게 되는 효과가 있다.

요즘 심심하면 체험 PT를 받으러 다닙니다. 무료도 가고 돈 내고도 가요. (회당 2-3만원) 전단지 줄 때도 있고 안줄 때도 있습니다. 그러다 보면 트레이너들의 관심사를 진짜 이해하고 싶어지더라고요. 뭐가 고민이고 어떤 생각을 하고 사는지. 업무를 하면서 어떤 깨달음을 얻어 왔는지.

고객들을 어렴풋이 유형짓고 이해하기까지는 생각보다 깊은 골짜기가 있네요. 조만간 트레이너 사이의 베스트 셀러나 전자책이라도 사서 봐야겠어요 허허

덤으로 트레이너 티어를 구분할 수 있게 됐습니다. 최근에 헬스장 등록해서 OT 받았는데, 트레이너 뽑기 운이 안좋아서 좀 실망했네요…..(하지만 제 엉덩이는 불탔습니다. 최근에 서핑을 시작했는데 강사님이 힙 쓰러스트 도움된다고 열심히 해봤습니다. 저 초보긴 한데 서핑 좋아하시는 분 있다면 알려주세요 같이 고성가요….)

13
4
Richard Lim

Richard Lim

📄데이터 이력서 자랑대회 (Feat. Notion)

데이터 커리어를 꿈꾸는 취준생부터, 현업에 있는 전문가까지

모두 참여할 수 있는 데이터 이력서 자랑대회에 여러분을 초대합니다 :)

데이터와 AI가 세상을 바꾸고 있는 지금,

현재 수많은 사람들이 자신만의 커리어를 새롭게 만들거나 재정의하고 있어요.

데이터 이력서 자랑대회는 데이터 및 AI 분야에서 진심으로 커리어를 쌓고자 하는 사람들이 서로의 경험을 공유하며 함께 성장하기 위해 시작되었어요.여러분의 커리어 여정을 통해 배운 점들, 겪은 도전들, 그리고 앞으로의 목표에 대해 이력서를 통해 마음껏 자랑해 주세요.

앞으로 일주일간 매일 하루에 한번씩 이력서 자랑대회 소식을 전해드릴게요.

참여하고 싶은 분들은 👇아래의 링크를 클릭해주세요.

데이터 이력서 자랑대회

데이터 커리어를 꿈꾸는 취준생부터 현업에 있는 전문가까지 모두 참여할 수 있어요!

2
0
박서진

박서진

때론 조용한 응원이 가장 큰 힘이 된다

image.png

어제 올린 메이커로그가 하루 만에 인기 탭에 올라가고, 폭발적인 반응을 얻었다.

(물론, 오랜만에 디스콰이엇을 다시 시작한 나의 입장에서만 그렇게 느낄지도..)
다들 사업을 시작하는 마음을 아셔서 그런지,
한마음 한뜻으로 응원해 주시는 느낌이 들어 정말 힘이 났다.

오늘은 세팅이 완료되자마자 빠르게 시작할 수 있도록 비즈니스 미팅들을 최대한 많이 잡느라
댄스 플랫폼 진행 상황에는 신경을 많이 쓰지 못했다. 하지만 든든한 개발자님이 혼자 UI/UX 공부까지 하시면서 알아서 잘 준비해 주신 덕분에 다른 사업 준비에 집중할 수 있었다.

그 결과, 다행히 고객사를 확보할 수 있었고, 빠른 시일 내에 성과를 낼 수 있을 것 같다.
또한, 함께 시너지를 낼 수 있는 마케팅 에이전시 사업도 추가로 고려 중이다.
마케팅 에이전시가 가장 전문성이 필요한 영역이었기에, 이 부분을 도와줄 분들도 찾고 있다.

비즈니스 미팅이 끝나자마자 정기 미팅을 진행했는데, 나의 목표가 팀원들에게는 다소 벅차게 느껴진 것 같아 걱정이 되었다. 생각해 보니, 나는 빠르게 세팅을 완료하고 더 큰 목표를 향해 나아가려 하지만, 이런 과정을 해본 적 없는 팀원들에게는 첫 시작조차 버거울 수 있다는 생각이 들었다.

결국 정기 미팅 후에 혼란스러워하던 한 팀원이 1:1 미팅을 요청했다.


아직 우리는 시작 단계에 있고,
모두 처음 경험하는 과정이니 충분히 그렇게 느낄 수 있다고 공감했다.

앞으로 내가 어떻게 해야 이런 고민을 덜어드릴 수 있을지 더욱 집중해야겠다는 생각이 들었다.

그래서 일을 더 쉽게 만들 방법론을 모색하고, 팀원들이 쉽게 따라 할 수 있는 가이드라인을 제시하는 방향으로 진행할 계획이다. 팀원들의 부담을 덜어주기 위해선 내가 더 공부하고 더 열심히 준비해야 한다. 하나라도 놓치지 않도록 정신 바짝 차리자.

6
0
Iron Sungchul Shin

Iron Sungchul Shin

혹시 여행 좋아하세요?

안녕하세요.

세시간전을 서비스하는 모먼트스튜디오 대표 신성철입니다.

오랜만에 디스콰이엇에 글을 올리네요.

여름 휴가시즌도 지났고, 여행을 다들 좋아하시고 하시고자 하실거라 생각해

간단한 설문조사 하나 부탁드리고자 합니다.

여러분들의 잠깐의 시간이 저희 서비스에 굉장히 도움이 될 것이고,

여러분들의 이야기가 저희 뿐만 아니라 여러분들의 여행에도 도움이 될 것이라 생각하여

누구보다 작은 진심이신 여러분들께 이렇게 시간을 내어주시길 부탁드립니다.

잠깐 시간을 내어서 설문 조사에 참여해주시면 더욱 멋진 서비스로 보답드리겠습니다.

설문 조사 링크 👇🏻👇🏻

슬램덩크.png

세시간전

여행 크리에이터들의 수익화를 위한 플랫폼

2
0
정영헌

정영헌

문제 정의를 넘어 "올바른 문제 해석 및 적합한 솔루션 제시"까지

안녕하세요, Product Lover 정영헌입니다.

지난 여름방학 중에 가장 인상깊었던 활동을 고르자면, 단연 아산나눔재단에서 진행한 ‘아산 두어스 대학생 창업 부트캠프’입니다.

저의 꿈은 “전 세계 사람들이 사랑하는 프로덕트를 만드는 것”입니다. 꿈에 한 발짝 더 다가가고자, 아산 두어스에 참가해 “글로벌 시장에서 외국인 사용자를 대상으로 PMF를 찾는 경험”을 하고 싶었습니다.

5주라는 짧은 프로그램 기간 동안 해외 사용자들을 대상으로 “문제 정의 → 가설 수립 → 액션 및 검증 → 결과”라는 플로우를 경험해볼 수 있었습니다.

가장 인상깊었던 순간은 “사용자 인터뷰에서 찾은 문제를 ‘정확히 해석’해 ‘미국시장의 특성과 문화를 고려한 솔루션을 도출’한 경험”입니다.

대표적 예시로, “한국에서 온 유학생은 문화 차이 때문에 취업 네트워킹 기회에서 소외되거나 놓침”이란 사용자 문제를, 처음에는 “네트워킹을 대체하는 구직자와 기업 간 AI 매칭 솔루션”으로 풀고자 했습니다.

하지만 이는 가장 중요한 점을 놓쳤는데,

바로 미국의 시장문화적 특성을 간과한 채, "네트워킹 기회에서 소외되거나 놓침”을 “네트워킹이 문제네? 그러면 네트워킹을 대체해버리면 되지 않을까?”라고 생각한 것입니다.

자료를 찾아본 결과, 미국 대학생의 78%가 네트워킹을 통해 취업한다는 통계를 발견했습니다. 네트워킹을 통한 서로에 대한 신뢰와 추천이 이미 문화로 자리잡은 미국에서 AI를 통한 매칭이 이를 대체할 것이란 솔루션 가설은 현실성이 너무 떨어져 보였습니다.

다시 말해 문제를 잘못 해석한 결과, “AI를 통한 매칭의 신뢰성 > 네트워킹을 통한 사람 대 사람으로서의 신뢰성”이라는 잘못된 전제를 솔루션에 포함시키게 된 것입니다.

문제를 현지의 시장문화적 특성을 고려한 후 올바르게 해석한 결과, 네트워킹을 대체하는 것이 아닌 “네트워킹에 필요한 초기 탐색 비용 절감을 도와주는 구직자와 기업 간 AI 매칭 플랫폼”을 솔루션으로 제시할 수 있었습니다.

솔루션의 기대효과로 “구직자는 자신이 원하는 기업의 직무를 쉽게 찾아 네트워킹을 시도할 수 있는 기회의 폭을 늘리고, 기업은 JD에 적합한 지원자 탐색에 대한 리소스 낭비를 줄일 수 있음”을 제시했습니다.

결과적으로, “시장과 문화적 특성을 살리면 솔루션을 통해 고객에게 제공하는 가치를 더 극대화할 수 있음”을 배웠습니다.

이번 아산 두어스에서 얻은 가장 큰 자산은 문제를 정의하는 것을 넘어 “문제를 올바르게 해석하고 이에 적합한 솔루션을 제시하는 법”을 배운 것입니다.

계속 끊임없이 도전하며 성장하겠습니다. 감사합니다 :)

아산두어스3.JPG
4
0
씨마스터300

씨마스터300

“UIKit이 좋아 SwiftUI가 좋아?”, “평소에? 아니면 오늘?” (수수 TCA + SwiftUI 적용기)

수수에서 경조금을 언제 받았는지 기록하세요!

안녕하세요. 옥수수 팀에서 iOS 개발을 담당하고 있는 정다함입니다. 이 글은 옥수수 iOS 팀이 SwiftUI + TCA를 적용하기까지의 고민과, 장단점에 대해서 설명하려고 합니다.

SwiftUI는 처음이라 (SwiftUI + TCA를 선택하기 까지)

1. 기술스택 정하기 == 첫 단추 끼우기

프로젝트에서 제일 중요한 순간이 있다면, 기술 스택을 정할 때입니다. 기술 스택에 따라서 사용하는 아키텍처나 디자인 패턴 등 복합적이고도 다양한 것들이 초기에 세팅했던 기술들에 의존성이 생깁니다. 그렇기 때문에 어떤 기술을 선택해야 하는지에 대해 충분한 고민과 팀원들과 상의를 해야 합니다.

image.png

SwiftUI 와 UIKit의 기술 선택에 있어서 어떤 기술을 선택할까에 대한 질문을 했을 때 아래와 같은 장단점들을 정리할 수 있었습니다.

UIKit 장점

  1. 오래된 프레임워크이다. 우리가 구현할 많은 코드들이 인터넷에 존재할 가능성이 농후하다.

  2. 자주 써왔고 프레임워크에 대한 관성과 직관이 있다.

UIKit 단점

  1. 이미 아는 기술이라 새로운 인사이트를 느끼지 못할 수도 있다.

  2. UIKit이 SwiftUI보다 View를 만드는데 느리다.


SwiftUI 장점

  1. UIKit보다 View 만들기 쉽고 빠르다.

  2. 새로운 프레임워크를 공부할 수 있다.

SwiftUI 단점

  1. 비교적 젊은 프레임워크이다. 우리가 직면하는 문제에 답을 찾기까지 오랜 시간이 걸릴 수 있다.

  2. 처음 배우는 프레임워크

  3. 어쩌면 UIKit보다 개발기간이 오래 걸릴 수 있다.


수수 앱의 특성상 안드로이드가 이미 출시된 상황입니다. “빠른 개발을 위해서 어떤 프레임워크를 써야 하는가?”에 대한 대답은 UIKit이었습니다. 당장이라도 내일 작업을 시작해야 했다면 UIKit을 적용하는 게 맞았습니다.

하지만 수수 팀은 SwiftUI에 대한 힘을 믿었습니다. 비록 시작 단계에서는 UIKit 보다 오래 걸려도 나중에 가면 SwiftUI가 그 진가를 발휘할 것이라 생각했습니다. 또한 프로젝트를 통해서 한 단계 더 지식을 배울 수 있다는 생각도 의견도 지배적이었습니다.

(UIKit으로 auto layout 잡기 너무 힘들어요...)

image.png

2. 엄마 저는 커서 “테스트 용이, 일관된 코드, 유지보수 용이”한 아키텍쳐가 될래요(Architecture 정하기)

세상에는 정말 많은 Architecture가 있습니다. MVC, MVVM, MVP, Clean Architecture... 등등.

아키텍처를 선택함에 있어서 유연한 코드 구조, 책임 분리 두 가지를 가장 크게 염두 하였습니다. 매시브 해지는 Domain Logic과 Service Logic을 어떻게 테스트하며 관리해야 할까라는 주제는, 많은 아키텍처들이 생겨난 이유입니다. 그 해답으로서 Clean Architecture와 TCA를 고민하였습니다. 둘의 각각의 장단점이 있었는데, TCA의 가장 큰 단점은 “러닝 커브”였습니다. 아무래도 SwiftUI와 TCA를 한 번에 적용하기 위해서는 공부가 많이 필요했습니다. 하지만 “TCA의 일관된 코드 작성”, “코드 작성의 강제성 부여” 이 두 가지가 가장 크게 다가왔습니다. 사람마다 작성하는 코드 스타일도 다른 것이 후에 다른 사람 코드를 읽었을 때 어지럼증을 유발합니다. 이를 TCA의 힘으로 강제성을 부여함으로써 일관된 코드 작성을 할 수 있다고 생각했습니다. 결론적으로 TCA를 적용하면, 모두가 비슷한 스타일과 방식으로 코드를 작성하게 될 것입니다. 따라서 유지 보수와 디버깅의 작업 강도가 낮아질 것이라 생각했습니다.



image.png

TCA로 일관된 코드 작성하기

1. Component 분리를 통한 코드 재활용성 높이기

개발을 하다 보면 썼던 Component를 재사용 하는 경우가 빈번합니다. 이는 단순히 누르는 버튼부터, 복잡한 기능을 수행하는 커스텀 버튼(유저가 직접 TextField를 입력하여 선택할 수 있는)까지 재사용되는 경우가 있습니다. 수수 프로젝트에서도 비슷한 경우가 있었습니다.

아래는 그 예입니다. 순서대로

  • 단일 버튼 선택, Custom TextField를 만들 수 있음.

  • 여러 개의 버튼을 선택할 수 있음

  • 중복 버튼 선택, Custom TextField를 만들 수 없음.

image.png

image.png

image.png

TCA는 이러한 반복되는 Component와 Generic을 활용하여 우아하게 처리할 수 있습니다. 보이는 비즈니스 로직의 요구사항은 추상화 하면 다음과 같습니다.

  • 공통사항

    • CustomTextField가 존재 가능

    • Item List는 Description을 통해서 사용자에게 정보를 표시

    • 선택된 버튼이 다시 선택될 경우 선택 해제

  • 단일 선택 타입

    • 버튼을 선택하지 않으면 다음 버튼이 비활성화

  • 복수 선택 타입

    • 버튼을 선택하지 않아도 다음 버튼 활성화

위와 같은 제약 사항들은 Reducer의 initial State을 통해서 맵핑할 수 있습니다. view를 그리기 위한 아이템들과, 선택했을 때 Parent Reducer State에게 Shared할 수 있도록 만듭니다.

public struct SSSelectableItemsReducer<Item: SSSelectableItemable> {

	// code ....
  public struct State {
  /// 생성자에 모든 변수들은 @Shared처리 되어서 부모에서 Shared로 선언되어야 합니다.
  /// - Parameters:
  ///   - items: defaults아이템들을 나타냅니다. 이는 SSSelectableItemable을 따라야 합니다.
  ///   - selectedID: 선택된 아이템들의 ID(Int)를 나타내는 Shared 변수 입니다.
  ///   - isCustomItem: 사용자 입력을 통한 새로운 아이템을 받을지 여부를 나타냅니다.
  ///   - multipleSelectionCount: 몇개의 아이템이 선택가능하게 만들어 줍니다.
  ///   - regexPatternString: Custom Item을 만들 시 RegexPattern을 입력받습니다.
  ///
  ///    isCustomItem을 Nil로 할 경우 "직접 입력" 버튼이 추가되지 않습니다.
	  public init(items: Shared<[Item]>, selectedID: Shared<[Int]>, isCustomItem: Shared<Item?>, multipleSelectionCount: Int = 1, regexPatternString: String? = nil) {
	    _items = items
	    _selectedID = selectedID
	    _isCustomItem = isCustomItem
	    self.multipleSelectionCount = multipleSelectionCount
	    self.regexPatternString = regexPatternString
	  }
	  // code ...
	}
	// code ....
}
public protocol SSSelectableItemable: Identifiable, Equatable {
  var title: String { get }
  var id: Int { get }

  /// 커스텀 아이템의 Title을 변경할 때 사용합니다.
  mutating func setTitle(_ val: String)
}


또한 View의 Action이 이뤄지는 행위 또한 간단하게 처리할 수 있습니다. 이미 선택된 버튼이라면 선택을 해제하고, MultipleSelection타입에 따라서 다양한 기능을 할 수 있게 합니다.

  case let .view(.tappedItem(id)):

    // 이미 선택된 버튼일 때
    if state.selectedID.contains(id) {
      state.selectedID = state.selectedID.filter { $0 != id }
      let curSelected = state.selectedID
      return .run { send in
        await send(.delegate(.selected(id: curSelected)))
      }
    }

    // 한개의 버튼을 선택하는 화면일 때
    else if state.multipleSelectionCount == 1 {
      state.selectedID = [id]
      let curSelection = state.selectedID
      return .send(.delegate(.selected(id: curSelection)))
    }

    // 여러개의 버튼을 선택할 수 있을 때
    return .send(.inner(.multipleSelection(id: id)))

  case let .inner(.multipleSelection(id)):
    if state.selectedID.count + 1 <= state.multipleSelectionCount {
      state.selectedID.append(id)
    }
    return .run { [ curSelection = state.selectedID] send in
      await send(.delegate(.selected(id: curSelection)))
    }

아래는 각각 초기값을 init할 때의 예시입니다. 각각 상황에 맞는 Custom View를 손쉽게 만들 수 있습니다.

// 한개의 버튼을 선택할 수 있을 때
createEnvelopeSelectionItems = .init(
  items: relationHelper.defaultRelations,
  selectedID: relationHelper.selectedID,
  isCustomItem: relationHelper.customRelation,
  multipleSelectionCount: 1,
  regexPatternString: RegexPatternString.relationship.regexString // "^[가-힣|a-z|A-Z| ]{1,10}$"
)
// 여러개의 버튼을 선택할 수 있을 때

 createEnvelopeSelectionItems = .init(
  items: additionalSectionHelper.defaultItems,
  selectedID: additionalSectionHelper.selectedID,
  isCustomItem: .init(nil),
  multipleSelectionCount: 20
)

2. 복잡한 흐름 제어하기

간혹 코드를 작성하다 어려운 문제를 맞닥뜨리는 경우가 종종 있습니다. 수수 팀의 경우 Button 형 TextField 서비스 로직을 만드는 데 곤욕을 겪었습니다. 수수 팀의 Button 형 TextField의 경우 다음과 같은 순서의 요구사항이 있었습니다.

image.png

  • Empty State

    • 사용자가 아무것도 누르지 않은 경우(TextField에 아무것도 쓰여지지 않은 경우)에 “직접입력” 표시

    • 만약 선택된 버튼이 있다면, 선택을 해제시켜야 함

  • Edit State

    • 현재 입력된 TextField를 지울 수 있는 Button 표시

    • 저장하여 SavedState로 바뀔 수 있게 함

    • 정규식을 통해 문자열 정책의 위배되는 경우 저장 버튼을 누르지 못하게 방지

  • Saved State

    • 편집 버튼을 통해서 Edit State으로 이동

    • “x” 버튼을 통해 EmptyState으로 이동

버튼에 다양한 상태들이 존재했고 버튼이 현재 사용자에게 보여주는 상태마다 처리해야 할 서비스 로직과 행동이 있었습니다. TCA에서는 이러한 다양한 상태와 분기를 손쉽게 처리할 수 있었습니다.

(1) EmptyState에서 버튼을 누를 경우의 Action들

EmptyState에서 버튼을 누를 경우 Custom Item들에 대해서 초기화에 관한 로직을 수행합니다.

화면 기록 2024-09-02 오후 11.09.38.gif

case .view(.tappedAddCustomTextField):
  return .send(.inner(.startAddCustomRelation))

case .inner(.startAddCustomRelation):
  state.selectedID = []
  state.isAddingNewItem = true
  state.customTitleText = ""
  state.customItemSaved = false
  return .none

(2) EditState에서 버튼을 누를 경우의 Action들

TextField가 바뀌었을 때 regex를 검사하고 이것이 맞는지 Regex에 부합하는지 아닌지 확인합니다. 또한 SaveButton을 누를 경우 Save State로 전환합니다.
화면 기록 2024-09-02 오후 11.13.15.gif

case let .view(.changeTextField(text)):
  state.customTitleText = text
  if let regexString = state.regexPatternString,
     let regexPattern = try? Regex(regexString) {
    return !text.contains(regexPattern) ?
      .send(.delegate(.invalidText(text))) : .none
  }
  return .none

        
case .view(.tappedTextFieldSaveAndEditButton):
  state.customItemSaved.tog      gle()
  state.isCustomItem?.setTitle(state.customTitleText)
  return .none

(3) Save State에서 서비스 로직

저장 상태에서 Edit상태로 바꿀 수 있고, 또한 저장 상태에서 Default State로 넘어갈 수 있습니다.

화면 기록 2024-09-02 오후 11.14.55.gif

 case .view(.tappedTextFieldSaveAndEditButton):
  state.customItemSaved.toggle()
  state.isCustomItem?.setTitle(state.customTitleText)
  return .none
 
case .view(.tappedTextFieldCloseButton):
	state.customTitleText = ""
	if state.customItemSaved {
		state.isAddingNewItem = false
	}
	return .none

3. 다른 컴포넌트와 조합하기 쉬움

다른 컴포넌트와 Compositional하게 배치할 수 있다는 장점입니다. 수수는 TextFeild에서 10글자를 넘게 되면, Toast를 전달합니다. Parent reducer가 상기의 SUSUSeletableView와 ToastView를 연결하는 것은 정말 간단합니다. 위의 SUSUSelectableReducer는 TextField가 정규식에 맞지 않은 경우 delegateAction으로 정규식이 부합하지 않는다는 Action을 보냅니다. 이를 그림으로 그려보면 다음과 같습니다.

image.png

Show toast 를 하기 위해서 scopee된 SelectableRedcuer의 delegateAction을 처리해주면 됩니다.

@Reducer
struct ParentReducer { 

var body: some ReducerOf<Self> { 
Reduce{ state, action in 
switch action { 
//...
  case let .createEnvelopeSelectionItems(.delegate(.invalidText(text))):
    return ToastRegexManager.isShowToastByName(text) ?
      .send(.scope(.toast(.showToastMessage("경조사 명은 10글자까지만 입력 가능해요")))) : .none
// ....
}

개발해 보고 나서 느끼는 TCA 총평

장점

  • 코드 재사용률 상승(컴포넌트를 잘 만들었을 경우)

  • 일관된 코드 작성(협업 시 가독성 증가)

  • 유지보수 용이

  • 유닛테스트 작성 용이

단점

  • 보일러 플레이트 코드 증가(Button이 누르는 동작 하나 만드는 것에 새로운 Action case 도입 등…)

  • 높은 러닝 커브 (버전이 업그레이드되면서 많은 것들이 바뀌어서 옛날 자료가 많음)

  • 정해진 형식을 “무조건” 따라야 함

  • 자주 바뀌는 버전(버전을 올릴 시 migration guide를 참조하여 해결해야 함)

제가 경험해 본 TCA의 장단점을 요약하자면 다음과 같았습니다. TCA가 모든 SwiftUI의 아키텍쳐의 필수 사항은 아니지만, 일관된 코드작성과 코드 재사용률 관점에서는 메리트가 뛰어나다고 생각합니다. 이를 통해 빠른 개발도 가능했던 것 같습니다.

iOS코드가 보고 싶다면?

SwiftUI + TCA를 활용하여 SUSU가 어떻게 만들어졌는지 상세하게 알고 싶다면, 아래 GitHub을 확인해주세요!

➡️ 수수(SUSU)가 궁금할 땐

앱스토어

구글 플레이스토어

인스타 (@team.oksusu)

➡️ 이전 메이커로그 보러가기

💌경조사비, 너로 정했다!💌

수수의 What을 찾아서💰

사이드 프로젝트에서 MVI 써본 썰

Android에서 iOS(같은) DatePicker 만들어버리기

돈이 없다.. 그래서 우리는 Reactive를 선택했다. (극한의 가성비)

수수 SUSU

경조사비 관리 기록 장부 서비스

11
10
윤민석

윤민석

Mincho 프로젝트의 이번주 #6 - 작가님..9800자 쪽지보냈습니다!!

이전 글에서 문서화 작업을 하고 있다고 말씀드리고 소식이 잠시 끊겼었습니다.

이제 배포를 하기위해 문서화 작업들을 주로 하고 있어요.

  • README 파일들을 작성

  • dev.to 같은 외국 블로그에 소개하기 위한 글

  • Vanilla Extract의 커뮤니티에 소개하기 위한 글

그도 그럴만한게 저는 다른 프로젝트를 보아도 문서화에 공을 엄청나게 들이는 편입니다.

이번 프로젝트도 마찬가지입니다.

근데 제가 봐도 양과 들어간 지식의 양이 엄청나게 넓고 디테일해요...

image.png

아무래도 디자인, CSS, 각종 웹환경과 방법론, 구현체등등 글에서 다루어야 하는 내용 자체가 많다보니 제가 봐도 어색하고 퇴고가 반드시 필요하다 느꼈습니다.

그래서 다양한 곳을 통해 베타리딩을 실행하고, 피드백을 받았는데요.

EasyLogic Studio나 Flitter의 개발자님들처럼 프론트에 대한 많은 고민을 하시던 분들이 많으셔서 유용했습니다.

그리고 그 중에는 정말 감동적인 리뷰(9800자 쪽지)도 있었습니다.

제가 부족하다 느끼는 부분들을 하나하나 다 훑어주시는 엄청난 글 구성 능력자..!

image.png

사실 양이 너무 많아서 저도 대부분의 리뷰가 옳다고 느끼면서도 반영을 하지는 못했는데요.

발표자료에 쓸때도 유용한 피드백이라 레퍼런스로 계속 써도 좋겠다는 생각이 들었습니다.

이렇게 적극적인 독자분을 만날 수 있는건 행운인 것 같네요.

흠흠.. 저도 디콰 여러분에게 사소한팁을 하나 풀어보겠습니다!!

LLM을 이용해 글을 평가하고 싶을때 이렇게 해보세요.

다음 글을 읽고, 박평식처럼 평론을 해줘.

Screenshot 2024-09-01 at 01-59-09 Phind - ## 1. What is CSS in JS CSS in JS is a technique that allows you to write CSS styles directly within your JavaScript(or TypeScript) code. Instead of creating separate CSS files you can define styles along[...].png

박평식님이 별 7개라면..나름 괜찮죠??

혹시 뼈가 뿌러지고 싶을정도로 솔직한 답변을 받고 싶다면?

"신랄하게"를 넣어보십시오.

다음 글을 읽고, 박평식 스타일로 신랄하게 평론을 해줘.

저는 괜히 해봤다가 가루가 되버려서 올리지 않겠습니다 =3=3

그럼 다음주는 디콰 줌 미팅을 주제로 만나요.

- 끝 -

Mincho

디자인시스템을 위한 CSS in JS 프레임워크

2
0
마이크로팩토리

마이크로팩토리

앱 개발은 큰 틀부터, 디테일은 나중에 수정

나무가 아니라 숲 부터 보자

앱을 의뢰받아 만들다보면 특히 초기 메이커 분들은 전체적인 부분보다 디자인을 변경한다거나 픽셀을 변경하거나 하는 디테일한 부분에 집중하시는 편인거 같습니다. 아무래도 익숙하지 않고 난이도가 있다보니 그런거 같아요.

그러다보니 앱 플로우가 전체적으로 이상해질때도 있고, 누락되거나 커뮤니케이션 미스로 인한 재작업 등으로 인하여 완성도가 조금 아쉽거나 작업 시간이 길어지는 일들이 생기더라구요. 물론 의사소통에 공을 들여 최대한 해결하려고 하지만 100프로 만족을 드리긴 쉽지 않은거 같아요.

하지만 해결되는데 도울 수 있다면 모두가 이득이라는 생각이 들었습니다. 물론 근본적인 해결책도 아니고 큰 도움이 안 되겠지만, 제가 앱을 만들때 초기에 큰 틀을 잡을때 흐름을 정리해봤어요. 참고하시거나 다른 좋은 방법을 찾아서 만족스러운 결과물을 받았으면 좋겠습니다. 피드백도 환영해요! 

바탕 작업

이미 출시된 앱들 중에서 카테고리 상관 없이 편하다고 소문난 토스, 쿠팡 같은 앱들을 최대한 써보며 연구합니다. 전체적인 것들 (화면 플로우, 액션 등에서 유저 편의성과 설득성 등) 위주로 여러 사항들을 수집하며 좋은 점, 안 좋은 점, 아쉬운 점, 보완점 등을 생각해요.

요구사항 정리하기

기존에 요구사항을 정리해요 혼자 작업하는 경우에는 최대한 간단히 작업하지만 의뢰거나 다른 사람과 함께 작업하는 경우 요구사항을 대화를 하며 다시 확인하고 작성하거나 재정리 해요

제가 예전에 실무에서 만들어놓은 요구 사항을 정리해 작성한 게 있는데 반응이 좋으면 추가로 컨텐츠로 제작해서 올리겠습니다

데이터 기반으로 생각하기 (초급자는 비추천)

요구 사항을 토대로 주요 화면들의 데이터 구조를 간단히 정의하며 각 데이터가 어떤 식으로 만들어지고 이루어져있는지 생각하거나 별도로 남깁니다

갑자기 왠 데이터냐 하는 의문이 드시겠지만 사실 앱은 데이터로 이루어져 있어요 그렇다보니 데이터 기반으로 앱을 생각하는게 논리 구조상 가장 좋다고 생각합니다 물론 생각하기 어렵다거나 너무 복잡하다면 생략하셔도 좋고 개발자나 GPT 에 피드백 받으며 작업해도 좋아요

에를 들어 단순히 로그인 기능이 필수인 게시판 앱을 만들어본다고 가정해볼께요 각 게시글은 필수적으로 유저의 데이터가 포함되어야 합니다 그러면 게시판에 글을 쓰려면 유저 데이터가 먼저 등록되고 관리되어야겠죠?  이런 식으로 각 데이터가 어떤 식으로 꼬리를 물고 있는지 생각합니다.

페이지 작업

필요한 화면들을 페이지화 해요. 꼭 필요한 정보들은 보여주게 하고 필요 이상의 것들이나 필요 없다고 느껴지는 것들은 별도의 화면 구성으로 빼거나 생략하고 필수적인 화면 플로우에서 제외시킵니다.

예를 들어 상품 페이지가 있고 해당 상품 페이지에 자유롭게 넣을 수 있는 상품 설명이 있다고 가정해볼게요. 

상품 설명이 자유롭다 보니 이미지도 들어가고 텍스트도 들어가서 엄청 길 수도 있겠죠? 그런 상품 설명이 장바구니 페이지나 결제 페이지 같은 상품 데이터가 나오는 페이지에 전부 나온다면 어떨까요? 매 화면마다 꽉꽉 차서 사용성이 떨어질거에요. 

그래서 상품 상세 페이지 외에는 상품 설명이 나오지 않게 합니다. 상품 설명을 보여주는게 필요하다면 ’상세 보기‘ 같은 버튼을 만든 뒤 터치 시 상품 설명같은 상품에 부가적인 나오는 정보들이 나오는 상품 상세 페이지로 이동시켜줘요

요소 배치

화면의 각 요소의 위치를 더욱 잡아줘요. 

한 페이지에도 데이터 기반의 여러 요소가 있습니다. 같은 범주거나 이웃해야 하는 요소는 모이게 하고 다른 범주거나 이웃하지 않아야 하는 요소는 떨어트려요. 그리고 기존의 앱들이 어떻게 배치한 건지 최대한 참고하여 크게 다르지 않게 합니다. 기존 앱들과 크게 다르지 않게 하여 유저들에게 익숙함을 줘서 피로하지 않게 하기 위함이에요. 물론 기획에 따라 새로움을 계속 줘야하는 경우는 예외입니다.

예를 들어 게시판 기능을 구현한다고 하면 글에 대한 정보, 글쓴이의 정보, 댓글의 정보, 댓글을 쓴 사람의 정보 등으로 나눠질거 같아요. 제목은 제일 먼저 배치한 뒤 닉네임, 프로필 사진 등의 글쓴이의 정보, 글쓴 시간, 글의 내용, 댓글 섹션, 댓글의 내용과 댓글을 쓴 유저의 정보 등을 기존의 앱들을 참고하고 필요한 정보는 모으거나 떨어트려줍니다. 

상호 작용

각 요소들의 상호작용을 생각해요. 어디를 누르면 어떻게 반응한다 라는 것을 최대한 직관적이고 편리하게 합니다. 

예를 들어 어떤 요소(버튼이나 아이템)을 누르면 다른 페이지로 이동한다던지, 상,중, 하단에 모달 창이 뜬다 던지 하는 것들입니다. 

일반적으로 앱이 크게 복잡하거나 특이한게 없다면 각 요소 터치 시 페이지 이동을 위주로 편의성과 설득력을 생각하는 편 이에요.

예를 들어 게시판 앱의 경우 글쓴이의 유저 정보를 모아놓은 섹션이 있다면 해당 정보를 터치 시 글쓴이 정보 페이지로 이동시켜요. 글쓴이의 유저 정보, 글쓴이가 쓴 글, 댓글 리스트를 보여주는 페이지를 구성하여 보여줍니다.

3
0
[삭제된 사용자]

UI 디자인: 새로움과 익숙함 사이의 고민

📸 감성 사진을 쉽고, 자연스럽게

‘퓨리즘 (purithm)’은 일상 사진을 자연스럽고 감성적인 사진으로 만들어주는 필터 앱인데요.

기획자, 디자이너, 개발자로 구성된 저희 팀은 2개월간 퓨리즘 이용자들이 예쁜 사진을 더 쉽게 탐색할 수 있는 방법을 고민했어요.

이번 글에서는 디자이너인 제가 퓨리즘의 사용성을 높이기 위해 고민했던 부분을 공유하려고 합니다!😊

🎨 필터 앱을 만들게 된 계기

기획자 한나

저는 평소에 예쁜 필터를 찾아 각종 sns와 필터 앱을 돌아다니는 필터 유목민이었어요. 필터 작가마다 보정 스타일이 달라 구경하는 재미가 쏠쏠했지만, 원하는 필터를 찾아 이곳저곳을 헤매는 게 번거로웠죠. 그래서 '필터 모음집'이라는 아이디어를 떠올렸습니다! 필터 작가들의 작품을 한 공간에서 모아볼 수 있게 하는거죠. 이 초기 아이디어를 바탕으로 ‘IT 개발 동아리, CMC’ 에서 기획 발표를 했고, 저와 뜻이 맞는 디자이너, 개발자들과 ‘퓨리즘’을 만들게 되었답니다. 현재 출시된 버전은 MVP 단계로, 팀원들이 직접 필터 작가가 되어 20개 이상의 예쁜 필터를 만들었어요. 앞으로는 기능 개선과 함께 다양한 필터를 꾸준히 업데이트 할 예정이에요!

여기까지 퓨리즘의 기획 배경입니다!

정리하자면, 퓨리즘의 핵심 가치는 ‘필터의 다양성’이에요.

디자이너인 저는 이 가치를 사용자들에게 전달하기 위해 여러 디자인 챌린지 과정을 거쳤는데요🧐

그중 [필터 상세페이지 개선] 과정을 소개해 드릴게요.

🖼️ 필터의 매력을 더 잘 보여주는 상세 페이지 UI

1. 기존 필터 앱의 상세 페이지 UI, 이게 최선일까?

설문조사를 통해 필터 이용자들이 텍스트 정보(후기, 필터 소개글)보다는 이미지 정보(원본 사진 비교, 예시 사진 보기)에 집중한다는 사실을 알게 되었어요.

스크린샷 2024-09-02 오후 5.52.47.png

이에 따라 이미지에 집중할 수 있는 상세 페이지 UI를 고민했죠.

대부분의 필터 앱은 사진과 텍스트를 번갈아 보여주는 '세로 스크롤' 형태의 UI를 사용하고 있는데요.

하지만 저는 기존의 세로 스크롤 UI(👇)가 정말 최선인지 의문이 들었어요🧐🧐

스크린샷 2024-09-02 오후 7.15.19.png

2. 일상에서 아이디어 찾기

더 나은 방법을 고민하던 중, 아이폰의 기본 사진첩에서 영감을 얻었습니다.

[사진을 페이지에 가득 채우는 방식]이었죠.👇

스크린샷 2024-09-02 오후 6.36.56.png

필터 소개글이나 후기와 같은 부가적인 정보는 따로 두고, 사진 자체에만 집중하게 만들었어요.

또한 인터랙션 기능을 통해 보정 전후 사진을 비교하거나 필터가 적용된 예시 사진들을 쉽게 볼 수 있도록 했습니다.

3. 가설 검증을 위한 A/B 테스트

가설

핸드폰의 기본 사진첩처럼

[사진을 페이지에 가득 채워 보여준다면]

이미지 정보를 더 쉽게 탐색할 수 있을 것이다.

하지만 걱정되는 부분도 있었어요.

‘사진 위주의 UI를 보고 필터에 대한 정보가 부족하다고 느끼지는 않을까?’

‘사용자들이 인터랙션 기능을 쉽게 사용할 수 있을까?’

제가 세운 가설을 검증하기 위해 A/B 테스트를 시행했어요.

첫 번째는 제가 만든 새로운 UI, 두 번째는 기존 필터 앱과 비슷한 세로 스크롤 형태의 UI에요.

스크린샷 2024-09-02 오후 6.33.45.png

결과적으로 첫 번째 UI가 더 많은 투표를 받았어요!!👍

첫 번째를 뽑은 이유로는 ‘사진을 크게 볼 수 있어서 좋아요, 보정 전후 비교를 쉽게 할 수 있어 좋아요’ 등이 있었어요. 특히 ‘원본 비교 기능’에 긍정적인 반응을 보였답니다.

그리고 ‘필터 정보가 부족하다고 느끼진 않을까?’라는 우려는 다행히 기우에 불과했어요.

오히려 두 번째 UI를 보며 ‘글은 어차피 안 읽어요, 글이 오히려 사진 탐색을 방해하는 것 같아요’ 등의 피드백을 했어요.

4. 사용자 피드백 바탕으로 디자인 개선하기

A/B 테스트를 통해 가설 검증에 성공했지만, 보완할 점이 산더미였어요🫠

그중 가장 큰 페인포인트는 사용자들이 인터랙션 기능에 익숙하지 않다는 것이었어요.

상하로 스와이프하면 필터가 적용된 예시사진들을 볼 수 있도록 했는데요.

왼쪽에 인디케이터 컴포넌트를 넣으면 당연히 상하 스와이프 기능을 인지할 거라고 생각했는데, 그게 아니었어요.

그래서 페이지네이션 컴포넌트를 상단에 배치해 스와이프 기능을 더 쉽게 인지할 수 있도록 했어요.

가독성도 함께 개선했어요.
사진을 크게 보여주다 보니 텍스트 요소들을 둘 여백이 부족했어요.

그래서 사진 위에 텍스트를 배치하고 shadow로 가독성을 보완했는데요.
하지만 사용자들은 사진 위에 텍스트가 있다는 것을 바로 인지하지 못하더라구요. (히트맵에도 터치가 아예 없는게 보이죠?👇😂)
그래서 불필요한 정보(‘맑은 날에 어울려요’와 같은 필터 설명 문구)를 빼고 그 자리에 후기와 작가의 필터소개글을 배치했어요.

스크린샷 2024-09-02 오후 6.12.08.png

📝 레슨런

1. 새로움과 익숙함의 밸런스 맞추기

새로운 경험을 제공하려는 노력은 중요하지만, 익숙함을 무시해서는 안 된다는걸 배웠어요.

예를 들어, 사진에 집중할 수 있는 UI를 만들면서도, 사용자들이 정보와 기능에 쉽게 접근할 수 있도록 직관적인 컴포넌트를 사용하거나 정보를 적절하게 그룹핑하는 것이죠.

이처럼 새로운 디자인을 사용자 경험에 자연스럽게 녹아들게 하는 것이 중요함을 알았습니다!

2. 검증을 통해 확신 얻기

검증되지 않은 디자인은 위험을 수반할 수 있지만, 이를 피드백과 테스트를 통해 보완할 수 있었어요.

A/B 테스트를 통해 새로운 UI가 사용자들에게 긍정적으로 받아들여질지 확인했으며, 이 과정에서 얻은 피드백을 반영해 디자인을 더욱 개선할 수 있었습니다.

테스트를 반복하고 데이터를 기반으로 판단함으로써 디자인에 대한 확신을 키울 수 있었어요.

📈 퓨리즘의 개선 계획

기본부터 챙기기

현재는 사용자가 필터 보정값을 일일이 적용해야 하는데요👇

스크린샷 2024-09-02 오후 6.39.48.png

퓨리즘의 첫 데모데이에서 방문객들이 이 점을 가장 불편하게 여기는 것을 발견했어요.

이런 번거로움이 사용자에게 큰 허들이 된다는걸 저희 팀 모두가 동의하고 있답니다😂

그래서 앞으로는 사용자들이 앱 내에서 자신의 사진에 필터를 바로 적용할 수 있도록 할 예정이에요!

퓨리즘의 업데이트 기대해주세요!📸🫧🫧

자세한 디자인 과정이 궁금하다면?👇

4
5
Nocoder

Nocoder

[전달완료, 마감] AI 자동화 사례 50개 공유해요!

인원초과로 마감합니다!

아직 못 받으신 분들은 노코더 뉴스레터를 참고해주세요!

10분 투자해서 앞으로 (같은) 일하지 마세요!

제목 추가 (13).png

AI를 가장 잘 활용하는 방법은 무엇일까에 대해서 고민을 많이 했어요.

누구나 AI로 돈을 벌 수 있다는 것은 확신할 수 없었지만,

누구나 AI를 이용해서 시간을 벌 수 있을 것이라는 확신을 얻을 수 있었어요.

이번에는 개발자든, 개발자가 아니든, 직장인이든, 프리랜서든 활용할 수 있는 자동화 사례 모음집을 공유드릴게요!

자동화 워크플로우, 필요한 도구들, 몇몇 데모까지 담았습니다.

  1. 이 포스트를 업보트해주세요.

  2. 댓글에 "노코더 메이커 클럽"이라고 남겨주세요.

다음 주 월요일까지 전달드릴게요!

우리 모두 AI에게 일시키고 시간을 벌어봐요 :)

54
75
완주손

완주손

너무 많은 데이터.. 원하는 파일 찾는 게 너무 힘들다면?

여러분은 필요한 자료가 있을 때 어떻게 찾으세요?

아무리 파일을 잘 정리해도, 필요한 자료가 생겼을 때 바로 찾기란 쉽지 않은 일입니다.

특히 윈도우는 기본 파일 탐색기가 로딩도 길고, 원하는 정보를 찾기 어렵기 때문에 효율이 떨어지는 경우가 많습니다.

image.pngWindows 파일 탐색 너무 불편..

저는 이런 문제를 해결하기 위해 Windows 무료 앱인 'Everything'을 이용합니다.

Everything

Everything은 컴퓨터에 있는 데이터를 효과적으로 검색하고 관리할 수 있는 툴입니다.

image.png(저는 Everything을 ctrl+alt+space에 매핑해두고, mac의 spotlight처럼 활용하고 있습니다)

Everything을 설치하면 MFT의 변경사항을 실시간으로 모니터링 하여,

파일 및 폴더를 수정하거나 추가할 때 즉시 업데이트 됩니다.

덕분에 방대한 데이터도 즉시 검색이 가능합니다.

👀 Everything 장점 정리

✅ 인덱싱에 의존하는 기본 검색과 달리, 검색 결과가 매우 즉각적이다.

✅ 최소한의 리소스를 사용하여 컴퓨터 성능에 영향을 주지 않는다.

✅ 무료로 사용 가능하다.


저도 Everything을 쓰고 훨씬 업무 효율이 좋아졌습니다.

하지만 여전히 해결되지 않은 부분이 하나 있습니다.

다양한 작업을 하다 보면 여러 저장소에 데이터가 흩어져 있는 경우가 많습니다.

이로 인해 필요한 자료가 어디에 있는지 헷갈릴 때가 많습니다.

메일이었나? 노션? Teams? Slack? Loop..?

이런 경우에는 각각의 플랫폼을 따로 검색해야 하다 보니,

쓸데없이 시간을 많이 뺏기게 되었습니다. 파일이 어디에 있는지 찾기도 어렵고요.

image.png입사 초반에 가장 많이 했던 고민 Top 1

실제 직장인 업무 시간의 25%를 파일과 콘텐츠를 찾는데 사용한다고 합니다.

출처: McKinsey 2013, The social economy: Unlocking value and productivity through social technologies USA- Yankelovich, Skelly, & White, Inc. Source: Adobe, International Labor Organization; U.S Bureau of Labor Statistics; Business Software Alliance

이 문제만 해결해도 업무 효율이 크게 개선될 수 있다고 판단했습니다.

자료를 찾는 데 소모되는 시간을 줄이면, 더 중요한 일에 집중할 수 있는 시간이 늘어나기 때문입니다.

그래서 저희 팀은 ‘Optain’으로 이 문제를 해결하고자 합니다.

Optain은 사용하면 여러 플랫폼에 분산된 자료를 한 번에 검색할 수 있어, 시간을 절약하고 업무 효율을 크게 높일 수 있습니다.

Optain

image.png위의 이미지와 같이 원하는 프로그램을 연동시켜주면,

image.png로컬 데이터와 클라우드 데이터, 메일 등을 한 번에 검색할 수 있습니다.

쉽게 말해 ’Everything + 클라우드 데이터‘라고 생각하시면 됩니다.

Optain은 현재 Waitlist를 모집하고 있습니다.

관심 있으신 분들은 아래 웹사이트에서 Waitlist 등록해주시면 감사하겠습니다.

(Waitlist를 등록해주시면 Beta 버전이 나왔을 때, 빠르게 알려드리도록 하겠습니다)

데이터와 자료를 많이 다루시는 분들이라면 Optain이 특히 유용하실 거라 생각합니다.

특히, 디스콰이엇 이용하시는 분들은 많은 데이터와 자료를 다루실 거라 생각하여,

꼭 여러분의 소중한 의견과 솔직한 피드백을 듣고 싶습니다.

커피챗을 주셔도 되고 댓글을 남겨주셔도 됩니다.

무엇이든 남겨주시면 성심성의껏 답변드리겠습니다.

감사합니다!

3
0
김경환

김경환

스케줄러 앱 글로벌 피처드 소식 🌏

thumbnail.jpg

작은 앱 '스케줄러'가 최근 캐나다 앱스토어에 피처드(오늘의 앱 선정)된 것에 이어 인도, 태국 등에도 피처드가 되었습니다 🙌 10개국 이상에서 노출이 크게 늘어나서 정확히 어느 나라에 피처드가 된 것인지 파악이 되지는 않지만, 노출 규모로 보았을 때 캐나다, 인도, 태국에서 피처드가 된 것으로 보입니다 🌈

8월 25일부터 31일까지 100만에 가깝게(96.5만) 노출되었고, 그에 따라 다운로드도 늘어났습니다. 우리나라를 제외한 다른 나라에서는 아직 리뷰도 없고 언어도 한국어와 영어만 지원하기 때문에 다운로드 전환이 상당히 낮은 편이지만, 세계 여러 나라에 대표 작은 앱인 '스케줄러'를 조금이나마 알릴 수 있게 돼 대단히 기쁩니다 😎

이번 앱스토어 피처드 덕분에 당분간은 '작은 앱'을 알리는 일보다 '작은 앱'을 개선하고 사용자 님들께 필요한 기능을 디자인 & 개발하는 일에 집중할 수 있게 된 것이 가장 좋네요! 응원해주신 동료 분들께 언제나 감사드립니다 🙏

막바지 더위에 언제나 건강 잘 챙기시고, 

행복한 한 주 보내시길 바라겠습니다! 😊✨

-

-

-

'미리 알림'부터 '애플 기본 캘린더'까지 쉽게 연동.

12가지 위젯.

아이폰, 아이패드, 맥 달력 앱 스케줄러 📆

https://apps.apple.com/kr/app/id6467635137

-

-

- 

💡 '작은 앱 프로젝트'의 미션 

전 세계 사람들에게 '필요한 기능'만 제공하는 '작은 앱' 생태계를 제공한다.

4
0
프롬리

프롬리

프롬리가 더욱 강력해졌어요! 🚀 무료로 AI 글작성, 콘텐츠 생성을 시작하세요!

안녕하세요.

나만의 AI 콘텐츠 작성 플랫폼 프롬리입니다:)

요번 업데이트로 더욱 강력해진 프롬리를 소개할께요! ✨

[UI/UX 개선]

스크린샷 2024-09-02 오전 8.37.07.png

프롬리의 메인 및 네비게이션의 UI/UX가 개선되었어요.

더 쉽고, 직관적으로 사용할 수 있도록 변경된 프롬리를 만나보세요:)

프롬리 사용하러 가기->

[이메일, 인스타그램 피드 AI 콘텐츠 작성 추가]

스크린샷 2024-09-02 오전 9.33.07.png



이메일과 인스타그램 피드 작성을 위한 AI 콘텐츠 작성이 추가되었어요!

이제 프롬리에서 이메일과 인스타그램 피드를 자동적으로 생성해보세요:)

프롬리에서 AI 콘텐츠 작성하기->

[AI 키워드 도구 추가]

스크린샷 2024-09-02 오전 9.34.51.png

실시간 인기 키워드를 한 눈에 알아볼 수 있도록, AI 키워드 도구가 추가되었어요!

검색어 트렌드를 한 눈에 살펴보고 인사이트를 얻으세요!

검색어 트렌드 파악하기->


이 밖에도 블로그 · 기사 및 보고서 · 문서 작성 성능이 개선되었으며, 블로그 · 기사 썸네일 이미지 생성 및 AI 이미지 생성 요청시 이미지 생성 성능이 개선되었답니다!

사용자 요청에 더 적합한 콘텐츠를 작성 할 수 있도록 업데이트 되었다는 점!

지금 회원가입시 무료로 프롬리를 이용해볼 수 있어요!

7일 무제한 요금제 무료체험도 있다는 점!

지금 프롬리에서 글작성 및 콘텐츠 작성을 시작해보세요:)

프롬리

나만의 AI 콘텐츠 작성 플랫폼 프롬리로 쉽고 빠르게 콘텐츠를 작성해보세요.

3
4
레오

레오

traxion 컨퍼런스 스피커 모집

안녕하세요, 여러분!

traxion 개발자 커뮤니티에서 다가오는 컨퍼런스를 위한 스피커를 모집합니다.

여러분의 지식과 경험을 공유할 수 있는 멋진 기회입니다!

행사 개요

• 일시: 9월 21일 11:00~16:00

• 인원: 50~80명

• 장소: 서울 은평구 통일로 62길7 서울기록원 컨퍼런스룸

• 주제: 주니어 개발자를 위한 커리어 디벨롭 전략(다른 주제도 자유롭게 제안해주세요!!)

스피커 모집 안내 주제: 최신 기술 트렌드, 개발 경험, 프로젝트 사례 등

• 발표 시간: 30분

• Q&A 시간: 10분

• 대상: 모든 경력의 개발자 (주니어 2명, 시니어 3명)

주요 일정

• 지원 마감: 9월 7일

• 선발 결과 발표: 9월 10일

• 컨퍼런스 일자: 9월 21일

지원 방법 https://tally.so/r/3lLXzp

위 링크를 통해 지원해주세요!

여러분의 지식과 경험이 다른 개발자들에게 큰 영감이 될 수 있습니다.

문의사항은 010-3946-4420 으로 연락 주시기 바랍니다.

2
0
김우정

김우정

인공지능 활용 숏폼대본 창작 무료 워크숍

1.jpg

인공지능 숏폼대본 작가양성을 위한 1Day 워크숍을 개최합니다.

본 과정은 글로벌 숏폼 드라마 제작사와의 협업으로 운영되는 파트너십 과정입니다. 숏폼 드라마 작가를 지망하는 분들을 대상으로 무료로 진행되며, 지원서를 검토하여 선발합니다.

1차 10명을 선발하여 1Day 워크숍을 진행하며, 워크숍에서 실제로 제작하는 숏폼 드라마 대본을 집필할 작가를 최종 선발할 예정입니다. 자세한 내용은 링크를 참고하시기 바랍니다.

자세한 내용은 댓글의 링크를 참고하세요. 고맙습니다.

1
1
유예리

유예리

[2일 후 마감! 기술 웨비나] PostgreSQL로 대용량 데이터 살펴보고, 친구추천으로 선물 받아가세요!

안녕하세요! 9월 4일 수요일 오후 2시, PostgreSQL로 대용량 데이터 살펴보기란 주제로 한 웨비나가 실시합니다.

본 웨비나에 친구를 초대하면 초대된 인원수에 따라 치킨세트 및 스타벅스 쿠폰을 지급하오니 많은 관심과 참여 부탁드려요!

_upload_06c5242570577004f021c08b58dd0159.jpg

0
0
Hayden

Hayden

우리 제품의 '팬'을 만드는 3가지 방법

이전 글 보기
마케팅 불변의 법칙 ⓪ : 디지털 마케팅의 핵심, 측정

마케팅 불변의 법칙 ① : 답은 제품이 아니라 고객에게 있다
마케팅 불변의 법칙 ② : 마케팅은 제품이 아니라 인식의 싸움이다
마케팅 불변의 법칙 ③ : 신규 고객보다 기존 고객에 집중하라

마케팅 불변의 법칙 ④ : 팬을 만들어라


안녕하세요. 마케터 헤이든입니다.

이번 글에서는 마케팅 불변의 법칙 중에서 네 번째 법칙, 

팬을 만들어라 

라는 주제에 대해 알아보겠습니다.

오늘 글에서는 다음 포인트를 얻어가실 수 있습니다.  

- 에어비앤비가 고객을 울릴 정도로 감동시킨 방법

- 제품의 ‘끝인상'까지 신경쓰고 있나요?

- 당신이 들어야 하는 한 마디, “이거 안 쓰면 손해야!”

지난 번 글에서 말씀드렸듯이, 

스타트업과 스몰브랜드에게는 신규 고객 유치보다 기존 고객을 감동시키는 게 더 중요합니다.

우리는 한정된 자원을 잘 배분하여서 선택과 집중을 해야 하며,

초기 브랜드일수록 잠재 고객보다는 기존 고객에 집중해야 합니다.

그 이유에 대해서 핵심적인 이유는 바로, 

기존 고객을 감동시키면 기존 고객이 팬이 되어서 주변에 추천을 하기 때문에 

자동으로 신규 고객 유치가 이뤄진다고 말씀드렸죠.

고객이 우리 제품을 스스로 마케팅 홍보 해주도록 만들어야 하는 겁니다.

“가치가 매우 커진 회사들은 광신적인 초기 사용자들을 확보했었죠. 그런 사용자들은 매우 오랫동안 당신 곁을 지키며 헌신합니다. 무엇보다 친구들에게 당신 제품을 열심히 자랑해주죠.” - 샘 올트먼, 오픈AI CEO

올트만이 YCombinator 대표이던 시절 투자사에게 가장 강조했던 것도 '팬 만들기'였다

초기 스타트업과 스몰브랜드 마케팅의 핵심은 바로 팬을 만드는 것이 전부라고 해도 과언이 아닙니다.

 

바꿔 말하면, 팬을 만들었느냐, 열성적인 팬이 생기고 있느냐가 이 브랜드의 존속 가능성을 점친다고도 말할 수 있습니다.

“1000명의 잠재고객보다 1명의 팬이 더 중요하다" - 세스 고딘


“100만명의 고객보다 100명의 팬이 더 중요하다" - 리드 호프먼

실제로 초기 스타트업에 투자하는 얼리스테이지 VC들은 팬이 있는지 여부를 보는 경우가 많습니다.

투자를 검토할 때 재방문율, 재구매율, 추천 관련 지표는 거의 필수적으로 본다고 보시면 되고,

“이 제품이 없어지면 저는 정말 곤란해질 거예요!”라고 말하는 열성적인 팬들이 있다면 

투자를 받는 건 물론이고 기업가치도 올라갑니다.

그러면 팬은 어떻게 만들 수 있을까요?

이것 하나만 명심하세요.

고객의 문제를 더할 나위 없이 확실히 해결하세요.

너무 뻔한 얘기죠?

자, 뻔한 얘기 말고 우리가 실제로 수행할 액션 플랜을 알려드리겠습니다.

고객의 문제를 확실히 해결하기 위해 우리가 신경써야할 점은 세 가지입니다.

첫째, 고객이 우리 제품을 왜 구매했는지를 정확하게 알아보세요.

둘째, 고객이 들어올 때부터 나갈 때까지 전체 여정에서 모두 만족시키세요.

셋째, 다른 사람에게 “이거 안 쓰면 손해야!”라고 말하게 만드세요.

에어비앤비 창업자가 고객을 울린 이유

우선 첫 번째, 고객이 우리 제품을 왜 구매했는지를 정확하게 알아보셔야 합니다.

제품을 구매한 고객에게 연락을 취해서 “저희 제품 왜 사셨어요?”라고 물어본 적 있으신가요?

강연에서 이 질문을 드리면, 생각보다 이런 고객 인터뷰를 진행하지 않는 회사가 많다는 사실을 알 수 있어요. 

사실 제품을 구매한 분에게 굳이 연락해서 말씀을 여쭙기가 어렵긴 하죠. 번거로워 하실 것 같기도 하고, 우리 스스로 귀찮기도 해요. 다른 할 일도 많은데, 굳이? 판매가 이뤄지고 있는데, 그럼 된 거 아닌가? CS랑 리뷰 관리만 잘 하면 되는 거 아닌가? 그런 생각이 들어요.

그러나, 지난 번 글에 이어서 다시 한 번 강조하고 또 강조드리고 싶은 건, 

우리는 기존 고객에게 집중해야 하고 기존 고객이 팬이 되도록 만들어야 합니다.

그러려면 우리 제품을 구매한 기존 고객에게 연락을 취해서, 우리 제품을 왜 구매하셨는지 물어봐야 해요. 

이제 막 시작한 신생 브랜드에게 고객 인터뷰보다 중요한 건 없다고 해도 과언이 아닙니다.

이번 챕터 제목, 기억하시죠. 마케팅 불변의 법칙입니다. 

어플이든 인공지능이든, 미용실이든 식당이든 다 똑같아요. 

새로 문을 열었다면, 제 발로 찾아온 고객님이 계시다면, 

어떻게 알고 오셨냐고, 만족스러우시냐고, 우리가 개선할 점은 없겠냐고, 꼭 물어봐야 합니다. 

그리고 고객의 목소리에서 우리의 개선점을 찾아야 합니다.

많은 회사가 제품을 뇌피셜로 개선합니다.

대표님이 봤을 때 이런 점이 마음에 안 들어서, 뭔가 디자인이 별로여서, 어플 화면에 이거 버튼 위치가 별로 같아서, 우리 스스로나 우리 주변 사람들이 뇌피셜로 말하는 얘기에 휘둘려서 제품에 반영하는 경우가 정말 정말 많지요.

그러나 제품 개선은 고객의 목소리로 해야 합니다. 우리 제품을 돈 내고 사용해보신 고객님께, 

제품이 어떠셨는지 어떤 부분을 개선하면 좋을지 물어보고 또 물어봐야 합니다.

그러면 어떻게 될까요? 

서비스가 고객의 목소리를 반영해 바람직하게 개선되고, 또 그 고객님은 우리의 팬이 됩니다. 

사람은 누구나 자신의 이야기에 귀기울여 주는 걸 좋아합니다. 

내 이야기에 진심으로 귀기울이고 심지어 그로 인해 무언가 변화까지 일어난다면, 누구나 거기에 마음이 움직이고 뭔가를 더 해주고 싶어지게 돼요. 고객 인터뷰는 고객을 귀찮게 하는 게 아니라 고객을 감동시키는 비결인 것이죠.

에어비앤비 창업자 브라이언 체스키는 사업 초반에 고객을 만나는 데 절반 이상의 시간을 할애했어요.

그는 에어비앤비에 집을 내놓은 호스트들에게 “사진 작가를 보내서 집 사진을 멋있게 찍어주겠다"고 연락해 미팅을 잡았죠. 사실 그 사진 작가는 본인이었어요.

그는 고객을 만나고 다니면서 고객들이 에어비앤비를 사용하는 이유와 피드백을 인터뷰했고, 자신이 생각하는 것보다 에어비앤비에 더 관심이 많고 좋아하며 진정으로 피드백을 해주고 싶어한다는 걸 알게 됐어요. 그는 아예 고객 집에 하룻밤 묵으면서 고객 인터뷰를 하곤 했죠.

브라이언 체스키는 사업 초반에 단 한 명의 고객이라도 ‘완전하게 감동시키기’ 위해 최선을 다했어요.

그는 고객 1명의 휴가 계획을 전부 다 짜주고 여행 사진까지 찍어주는 서비스를 제공했고, 픽사 출신 스토리보드 작가까지 동원해서 마치 영화를 찍는 것처럼 여행 스케줄을 짜서 고객을 감동시켰다고 해요. 

이 서비스를 받은 고객은 아이처럼 울면서 “내 인생 최고의 여행이었어요!”라고 말했다고 합니다.

여러분은 우리 제품 사용자를 이 정도 수준으로 만족시키고 있나요?

Brian Chesky

제품의 첫인상부터 끝인상까지 모두 신경써야 한다

고객을 감동시키는 두 번째 방법은, 고객의 전체 여정을 모두 파악하고 고객 여정의 시작부터 끝까지 고객이 좋은 경험을 하도록 신경쓰라는 것입니다. 

고객 여정이라는 표현을 처음 들어보는 분들도 계실 거예요. 영어로는 Customer Journey라고 해요. 

우리가 어떠한 제품을 인지하고 구매하는 데에는 하나의 여정이 있습니다. 

고객 여정을 정의하는 방법은 업종마다 제품마다 정말 다양합니다!

각자 속해있는 시장, 업종에 관한 Customer Journey Map을 리서치해보시길 바라요.

이처럼 고객이 우리 제품을 알게 되고 구매하는 데까지는 생각보다 여러 단계의 여정이 있습니다. 구매한 이후에도 재방문하거나 또는 완전히 이탈하기까지 또 여정이 있죠.

우리가 고객을 감동시키려면 이 전체 여정을 알아야 합니다.

우리 고객이 우리를 어디서 알게 되고 어디를 통해 들어오며, 들어와서 뭘 살펴보고, 어떤 경쟁 제품이랑 우리를 비교해보고, 결국 우리를 구매하는 이유는 무엇이며, 구매하려다가 망설인다면 그 이유는 또 뭐고, 구매했는데 재방문하지 않는다면 그건 또 왜 그럴까, 재구매했다면 왜 재구매했을까, 그렇다면 돌아오지 않는 분들을 돌아오게 하려면 뭘 해야할까,

이런 고민을 할 수 있는 게 고객 여정 분석입니다.

우리는 이렇게 고객 여정을 분석해야 합니다.

그리고 고객 여정 전반에서 고객을 감동시켜야 합니다. 그래야 팬이 생깁니다.

제품의 첫 인상이 중요하다는 말, 들어보셨나요?

사람에게 첫 인상이 결국 전부야, 이런 얘기를 하곤 하죠. 브랜드도 마찬가지입니다. 브랜딩에서 첫인상이 정말 정말 중요합니다.

그런데 혹시, 제품의 끝인상도 중요하다는 말도 들어보셨나요?

고객의 경험이 중요해진 요즘 마케팅에서는 제품의 첫인상만큼 끝인상도 중요하다고들 말해요. 

고객이 제품을 구매하든 구매하지 않든 떠나갈 때 어떤 인상을 남겨주느냐가 중요하다는 거죠. 그래야 돌아올지 말지가 달라지니까요.

이처럼 우리는 고객이 우리를 알게 되고 우리한테 들어오고, 떠나고 돌아오는 이 전체 여정을 이해하고 분석하면서 마케팅 전략을 세울 필요가 있습니다.

이것이 팬을 만드는 첫 걸음입니다.

앞서 말씀드렸던 것처럼 초기 고객을 인터뷰해서 그 내용으로 고객 여정 전반을 개선해나가는 것, 이것이 팬을 만드는 두 번째 비결입니다.

더 큰 가치를 제공하라

마지막으로, 팬을 만드는 세 번째 비결, 고객이 다른 사람에게 

이거 안 쓰면 손해야! 라고 말하게 해야 합니다.

이건 무슨 얘기냐면, 가격 이상의 가치를 베풀어야 한다는 뜻입니다.

제품의 가치란 무엇일까요? 

한 마디로 정의하기 어렵지만, 마케팅 쪽에서는 [ 가치 = 편익 - 비용 ] 이라고 정의하곤 합니다.

고객이 얻는 편익이 비용보다 클 때 고객이 느끼는 가치가 커집니다.

어, 돈 낸 거보다 더 만족스럽네. 충족스럽네. 혜자네. 이렇게 되는 것이죠.

반대로 비용이 편익보다 크면, 가치가 적습니다. 뭐야 손해네, 다신 안 써. 이렇게 되죠.

고객에게 비용이란 가장 큰 건 가격입니다. 사실 고객의 비용에는 시간, 노력도 들어가요. 고객이 뭔가 문제나 불편을 해소하기 위해 제품을 탐색하는 시간, 제품을 구매하기 위해 이동하거나 대기하며 들이는 시간 등등 시간과 노력도 중요한 비용이죠. 그러나 여기선 거기까지 살펴보진 않겠습니다.

단순히 비용 = 가격 이라고 쳐볼게요.

그러면 우리는 고객에게 더 많은 가치를 선사하기 위해서 어떻게 해야 할까요?

가격을 낮추거나, 또는, 가격 이상의 편익을 드려야 하겠죠.

구체적인 방법은 제품마다, 시장마다, 업종마다 다를 거 같아요.

그러나 확실한 건, 가격보다 훨씬 큰 가치를 느낄 때 고객은 팬이 됩니다. 그리고 주변에 추천하게 돼요.

사람은 좋은 걸 경험하면 좋아하는 사람들과 함께 공유하고 싶어집니다. 

우리는 우리 제품을 그렇게 만들어야 하죠.

그러나 이게 쉽지 않은 이유가 있죠. 우리가 영리 기업으로써 수익을 추구해야 하기 때문이에요.

특히 경영자 입장에서는, 가격보다 더 큰 가치를 제공하자는 것에 쉽게 동의하지 못하실 수 있습니다.

가뜩이나 초기 회사라서 어려운데, 퍼주듯 장사하라는 말야? 누구 좋으라고? 이런 생각이 드실 수 있어요.

물론 재무적으로 지속 가능하지 못 하거나 심각한 손해를 입을 만큼 퍼주면 안 되겠죠. 실제로 IT 쪽에서도 초반에 투자 유치한 돈으로 퍼주듯 혜택을 베풀면서 손해 보며 장사하다가 망하는 경우가 너무 많아요. 

이건 경영과 재무의 관점에서 따로 고민해봐야할 문제예요. 마케팅 역시 비용 이상의 효율을 거두는 것이 대전제 중의 대전제입니다. 우리는 모든 기업활동에서 ROI를 따져봐야할 거예요.

그러나 마케팅 관점에서, 초반에 팬을 만들기 위해 비용 이상의 가치를 선사하라는 건 변함없는 불변의 법칙이에요.

가격을 낮추지 않아도 됩니다. 편익을 늘리면 되겠지요. 

고객이 느끼는 가치를 뭘 더 드릴 수 있을까, 우리가 어떤 서비스를 더 제공할 수 있을까, 

이런 걸 끊임없이 고민하고 실행해보면 됩니다.

너무 어렵게만 생각하지는 말아주세요. 고객 응대를 친절하게 하는 것만으로도, 고객에게 싹싹하게 웃으면서 인사하는 것만으로도 고객은 감동하고 감정적인 편익을 느낍니다. 

다시 한 번 강조하자면, 초기 제품 마케팅에서 결국 가장 중요한 핵심은 팬을 만드는 것이라고 해도 절대 과언이 아닙니다.

어떻게 하면 팬을 만들 수 있을까를 계속 고민해보세요.

그리고 그 다음 스텝으로 가장 중요한 것!!!

우리 제품에 감동하는 ‘코어 그룹'을 찾으세요.

어느 그룹에서 팬이 생기는지 찾아내세요.

우리 제품에 열광하는 팬들 사이에는 어떤 공통점이 있는지 집요하게 분석하세요.

실험하고, 실패하고, 개선하세요.

초기 스타트업이 집중해야할 일은 목표 시장을 찾아내서 제품을 만드는 것, 그뿐이다. - 토머스 아이젠만

오늘 글에서는 마케팅 불변의 법칙 중에서도 가장 중요하다고 할 수 있는 팬을 만드는 방법에 대해 알아보았습니다.

고객님께 왜 우리 제품 구매하셨는지 꼭 물어보고 제품 개선에 반영하기,

고객이 들어오고 나가는 첫인상부터 끝인상까지 모두 살피면서 감동 줄 포인트 고민해보기,

고객님께 가격 이상의 편익을 선사해서 주변 사람에게 추천하게 만들기. 

이 세가지를 꼭 기억해주세요.

오늘 글이 마음에 드셨다면, 아래 과제를 한 번 해보세요.

1번, 챗GPT와 함께 우리 제품의 전체 고객 여정을 그려보세요.

2번, 이번 주에는 기존 고객 인터뷰를 5명만 꼭 해보세요.

사실 VC나 그로스 컨설턴트들은 "일주일 안에 고객 인터뷰 50명 하기, 100명 하기" 이런 걸 과제로 냅니다.

각 잡고 제대로 고객 인터뷰를 하려면 최소 20명 이상 하는 것이 좋습니다.

그러나 이 글을 읽고 처음으로 '아, 고객 인터뷰 한 번 해볼까?'라는 마음이 드신 분이라면, 우선은 5명만 해보아도 충분한 인사이트를 얻으실 수 있을 겁니다.

고객 인터뷰를 하는 회사는, 하지 않는 회사를 이길 수밖에 없습니다.

그러면 다음 글에서는 마지막 마케팅 불변의 법칙에 대해 얘기해보겠습니다.

읽어주셔서 감사드립니다.

7
0