바이브 코딩…? 유용하게 하려면 최소한의 것은 알면서 써야 합니다.

요즘 다들 말을 하는 바이브 코딩… ai가 코드 짜주는 걸로 코딩이라고 하면서 바이브 코딩이니 뭐니 하고, 그걸로 그냥 누구나 개발할 수 있어요 하는데….

좀 낚였으면 좋겠습니다. 그래서 ai가 짜준 걸로 하다가 삽질 엄청하고 결국은 그냥 개발하는 거랑 같거나 더 많은 시간 낭비해서 개발 어렵다는 소리 좀 나와줬으면 좋겠어요. 저걸로 헛소리 하는 분들을 많이 봐서 요즘 좀 스트레스네요.

유튜브 같은데서 이렇게 하는 겁니다 하면서 하는 것들 보면, 진짜 작은… 작디 작은… 발톱의 때만한 거 자동으로 만들어주고 오~ 하는 거 많이 보입니다. 근데 그걸로 제대로 된 서비스 하나 둘 만들려고 하면 그게 감당이 되지 않게 되겠다는 걸 보면서 알겠는데, 주변에서도 요즘 자꾸 떠드네요. 그러면서 개발 쉽네 하는 분들도 있고요. 여러모로 긁는군요. 요즘은 개발이 아니라 컨설이 주 업무이지만, 저런 분들 보면 좀 많이 열받습니다.

바이브 코딩을 해서 좋은 사람은… 제 생각에는 없습니다. 시니어 이상인 분들은 바이브 코딩 보다는 페어 프로그래밍 상대가 ai가 되어줘서 더 빠르고 명확한 개발이 된다는 것은 확실합니다. 그만큼 ai가 작성한 코드 읽을 줄도, 그거 보고 논리 오류 있으면 바로 알아챌 수준의 시니어들이라면야 뭐, 그냥 키보드로 코드 노가다 하던 부분들 많이 줄어들어서 확실하게 좋죠. 경력이 오랜 분들도 마찬가지고요. 그나마 좋은 분들이라면 이정도의 분들이 자기 자리 유지하면서, 자기 실력 늘려가면서 계속 이용할껍니다.

근데 주니어 이하의 개발자들? 평생 주니어로 살래요 하시면 그냥 그렇게 바이브 코딩 잡고 사시면 됩니다. 진짜 본인 실력 죽을 껍니다. 이분들이 착각하시면 안되는 게, 그렇다고 ai 아예 쓰지 말라는 게 아니에요. 써서 생산성이 올라가는 건 좋은겁니다. 근데, 그렇다고 해서 문제 해결, 디버깅, 테스팅, 검증 이런 것들까지 해서 죄다 맡겨버리는 짓을 하게 되면 금방 까먹을껍니다. 여러분은 아직 자기 전공 내용조차 왜 중요한지도 모르는 분들이 많습니다. (중요한지 제대로 알면 솔직히 주니어 치고는 상위 1% 아닐까요..) 그런 상태에서 어느정도 문제를 해결하면서 확립해나가는 과정이 있어야 하는데, 그걸 ai한테 맡겨버리면 그냥 평생 그 자리에서만 계속 있게 될 겁니다. 시니어분들이라고 해서 더 잘 알뿐 시니어들도 거기서 만족하면 주니어 레벨로 나가리 되고 그렇게 치우되는게 일상인데 주니어 분들이 ai로 벌써 그러고 있을까봐 그럽니다.

자, 이제 마지막. 비전공자 출신 개발자들. 여러분 중에도 직업으로 개발자나 it 관련자분들이 계신 분들 많이 계십니다. 그런 거 알아요. 그런 분들껜, 계속해서 상기하라고 말씀드리고 싶어요. 이건 주니어분들에게도 통하는 내용인지라 그냥 같이 말할께요. 개발자들 계속 스터디 하는 거 놓치고 하면 그냥 그자리에서 머물고 올라가지도 않고 그러다가 그냥 개발자 때려치는 분들 너무 많이 봤습니다. 앞 문단의 나가리 된다는 거요. 여러분이 그렇게 되지 않기 위한 노력 많이 하는 거 압니다. 근데, 그런 상황을 ai가 더 가속화 시키네요. 안주하진 마세요.

학생은 논외입니다. 당장은 과제 만들기 쉽고 뭐 그럴 수 있겠습니다만, 제대로 공부하세요. 학생때 짜는 프로그램들 학생때는 어려워도 그렇게 어려운 거 아닙니다. 생각하면서 계속 생각하는 사고를 기르세요. 그게 ai를 잘 활용할 때 도움이 됩니다. 그걸 주니어때 잘 파악하면서 경험치도 계속 먹고 그러다가 시니어 되고 하시면 됩니다.

학생도, 전공자도, 직업이 개발자도 아닌 분들은 그냥 알아서 하세요. 제 선에서는 이렇게 하세요 할 수 있는 건 없습니다.

이렇게 적으니 꼰대같은 생각이네 하겠지만… 금방 훅하고 넘어가기 쉽겠다는 생각은 많이 합니다. 잘 쓰면서 본인 실력 올리는 베스트 같은 일이 계속해서 일어날 거라고는 생각하진 않습니다.

어느 세계던 간에 살아남기 위한 자기 단련을 게으르게 하면 그 순간 나가리됩니다.

p.s. 팀장 이상의 분들에게는 굳이 이야기 드리진 않겠습니다. 저보다도 보는 안목들이 더 있으실 분들도 많으시니 제가 더 뭐라 이야기 드리기 조심스럽군요. 근데 그분들도 왜 어떻게 좋은지와 안좋은지를 알지 못하면 그걸 자기네 팀에서 자기네 조직에서 잘 활용하도록 유도하는 게 어려울 수는 있습니다. 그러니 저런 이야기의 배경 정도는 알아두시는 게 좋습니다.

개인적으로는 conda 환경을 엄청 좋아합니다.

vitualenv나 pipenv를 이용하면 가볍고 편하게 이용할 수도 있지만, conda만큼의 유연성이 있냐고 물어보면…

그래서 그런가, 여러 언어나 라이브러리 조합을 짤 수 있는 conda를 개인적으로 좀 많이 좋아합니다.

회사에서 쓰기 힘들다 하면 conda-forge를 이용해서 커뮤니티 repo를 이용하면 pc에서 돌리는 것들 정도야 얼마든지 anaconda랑 겹치니깐 문제 없기도 하고요.

갑자기 든 잡담이었습니다.

PowerShell에서도 심볼릭 링크를 만들고 이용할 수 있습니다.

PowerShell에서 홈 폴더(C:\Users\kyuling)에 C:\Users\kyuling\Documents\work\project 폴더로 이동할 수 있는 방법으로 심볼릭 링크를 만들고 이용할 수 있습니다. 그렇게 하고싶다면, 다음과 같은 명령어를 사용하시면 됩니다.

단계별 방법:

  1. 심볼릭 링크 만들기: 홈 폴더인 C:\Users\kyuling에 심볼릭 링크를 만들고, 이 링크가 C:\Users\kyuling\Documents\work\project 폴더를 가리키도록 합니다. 예를 들어 forge라는 이름의 심볼릭 링크를 만들고 싶다면 아래와 같이 명령을 입력합니다.

    New-Item -ItemType SymbolicLink -Path "C:\Users\kyuling\project" -Target "C:\Users\kyuling\Documents\work\project"
  2. 심볼릭 링크로 바로 이동하기: 이제 C:\Users\kyuling\project라는 이름의 링크가 생성되었으면, PowerShell에서 다음 명령어로 해당 폴더로 바로 이동할 수 있습니다.


    cd C:\Users\kyuling\project

이렇게 하면, C:\Users\kyuling 폴더에서 project라는 이름으로 C:\Users\kyuling\Documents\work\project 폴더에 쉽게 접근할 수 있게 됩니다.

참고 사항:

  • 관리자 권한: 심볼릭 링크를 만들 때는 관리자 권한이 필요할 수 있으므로, PowerShell을 관리자 권한으로 실행해야 할 수도 있습니다.
  • 링크 이름: 원하는 이름으로 링크를 만들 수 있습니다. 예를 들어 project 대신 다른 이름을 사용할 수도 있습니다.

파워쉘을 이용하는 방법에 대해서는 생각보다 모르는 분들도 많고 해서 제가 가끔 이용하는 방식을 공유해봅니다.

8비트 마이크로 컨트롤러 1. 개요

최근 전자공학과 임베디드 시스템에 관심이 높아지면서 8비트 마이크로컨트롤러의 기본 개념과 활용법을 배우고자 하는 분들이 많아졌습니다. 오늘은 1일차 강의에서 다루는 개요 및 이론 내용을 중심으로, 가상 실습 환경(오픈소스 시뮬레이터)을 통해 배우게 될 핵심 포인트들을 소개합니다.

강의 개요

이 강의는 총 1주일 동안 진행되며, 실제 하드웨어 없이도 오픈소스 시뮬레이터를 통해 8비트 마이크로컨트롤러의 기본 원리와 프로그래밍 기법을 익힐 수 있도록 설계되었습니다. 오늘은 강의의 첫 날로, 기본적인 이론과 개념을 다루며 앞으로의 실습에 필요한 기초 지식을 마련하는 시간입니다.

8비트 마이크로컨트롤러란?

역사와 응용 사례

  • 역사적 배경:
    8비트 마이크로컨트롤러는 1970~80년대에 시작되어, 오늘날까지 다양한 전자제품에 널리 사용되고 있습니다. 간단하면서도 효율적인 구조 덕분에 가전제품, 자동차, 산업 기기 등 여러 분야에서 응용되고 있습니다.
  • 응용 분야:
    • 가전제품 제어 (예: 리모컨, 전자레인지)
    • 산업 자동화 시스템
    • 소형 로봇 및 DIY 프로젝트

장단점 및 활용

  • 장점:
    • 경제성: 비용 효율적이고 저전력 소모로 다양한 응용이 가능합니다.
    • 단순성: 학습이 용이하며, 기본 제어 로직 구현에 적합합니다.
  • 단점:
    • 연산 능력 제한: 복잡한 연산이나 대용량 데이터 처리에는 한계가 있습니다.
    • 메모리 제한: 제한된 메모리와 주변장치 지원으로 인해 고급 기능 구현에 제약이 있을 수 있습니다.

마이크로컨트롤러 아키텍처 기초

주요 구성 요소

  • CPU:
    모든 데이터 처리와 명령 실행을 담당하는 핵심 부품입니다.
  • 메모리:
    프로그램 저장용 플래시 메모리와 데이터 저장용 RAM이 포함됩니다.
  • I/O 포트:
    센서, 액추에이터 등 외부 장치와 데이터를 주고받는 역할을 합니다.

이러한 기본 요소들을 이해하는 것은 이후 실습과 프로젝트 진행 시 매우 중요한 기반이 됩니다.

시뮬레이터의 설치 및 간단한 예제는 다음 글에 계속합니다.

8비트 마이크로 컨트롤러 0. 시작

내가 아는 범위내에서 가장 기본적인 내용들을 적어보려고 합니다. 정말 간단하게. 그것도 개발자들이 쉽게 할 수 있도록….

왜? 이걸 안해본 사람들이 너무 많아요. ㅠㅠ

임베디드 관련 이야기 할 수도 없는 사람들이 많고, 이런 베이스도 없이 임베디드 한다는 게 말이 안되는 거 같습니다. 그래서 정리 할 겸 간단하게 해보려고 합니다.

하드웨어도 될 수 있으면 이용 안하고 시뮬레이터를 이용하는 방식으로 가려고 합니다. 오픈소스 시뮬레이터로 실습할 건데, 그건 제가 실습 내용도 다 찍어서 조금씩 올릴 예정입니다.

기무춍상 004 – 잇쇼니 오사케노미마스카를 시전합니다.

진짜 기무춍상은 어디서 배워서 오는 걸까요…
레퍼토리들이 이렇게 똑같으면 진짜 무섭습니다.

일본 와서 연애 하는 분들 많은 거 압니다. 일본 여성분들과 잘 사귀다가 결혼하는 경우도 많고요. 뭐 외국에서 외국인과 사귀고 그러는 거 좋죠. 연애하는 걸로 뭐라 그러는 것도 아니고요. 근데 그런 분들은 제가 지금 욕을 하는 기무춍상 같은 부류가 아닙니다. 당연하죠. 기무춍상이 아닌 분들은 한국에서도 잘 사람 사귀는데 문제 없었을 분들입니다.

문제는 이넘의 기무춍상들인데… IT 하는 사람들이라고 해서 음침하거나 그런 사람들이 있는 건 아니지만, 그중에 유난히 그런 사람들이 자기는 한국인이니깐 어찌 먹히겠지 하는 그런 마인드로 각종 민폐짓을 하는 경우가 좀 있나봅니다. 대표적인 것이 아예 나무위키 같은 곳에도 박제된 잇쇼니 오사케 노무까? 같은 것부터 시작해서 결혼활동(콘카츠, 결정사 등등)에서도 참여해서 이상한 짓 하고 나오는 거 같습니다.

더더욱 문제되는 것이 있다면, 그들의 사고나 활동에는 자국 혐오 같은 이상한 사상도 깔려있기 때문에 더더욱 나라 망신을 부추기는 짓도 서슴없이 합니다. 이들은 한국 취업이 진짜 어려워서 해외를 다방면으로 취업을 알아본 게 아니라 일본 취업이 쉽다고 도피성으로 온 경우가 많으니깐요.

한국에서 잘 안되서 도망치는 거, 어디서도 안됩니다. 그리고 그건 연애도 마찬가지입니다.

만약 본인이 연애하고 결혼했다고요? 콩깍지 떼고 잘 확인해보세요. 지금 무슨 삶을 사는지. (근데 기무춍상들은 그럴 일 없다에 500엔 겁니다.)

기무춍상 003 – 기무춍상은 실력이 있다고 착각을 할 뿐, 5년이고 10년이고 실력이 늘지 않습니다.

일본 it 취업에서 제일 뭣같은 것이… 일본인들 기준으로, 신입은 진짜 기본만 하고 와도 우와~ 소리 듣는다는 겁니다. 그걸 회사에서 열심히 키우고 같이 시키고 해나가면서 만들어갑니다. (블랙기업 제외합니다.) 이공계에 처음부터 it를, 프로그래밍을 할 줄 아는 애들은 다른 코스입니다만 그런 경우가 아니라면 대게 그런 케이스가 많습니다.

근데 한국에서 국비교육 받아서 일본 오거나 그런 경우에 대다수가 교육 비중이

일본어 < IT

일 정도로 IT를 더 많이 가르칩니다. 일본어는 JLPT 기준으로 N3만 되어도 되니 어쩌니 합니다. 그렇게 해서 연계된 기업들과 취업을 시키려 하는데, 그 기업들도 일본어 낮아도 된다 하는 쪽은 거의 100% it 관련 질문, 프로그래밍 질문 엄청 시킵니다. 한국 중소기업에서 시킬 정도는 다 시켜요.

그러다 보니 자기들은 실력으로 합격한 거라고 이야기 합니다. 일본어는 N3인데 말이죠.

그렇게 해서 일본으로 넘어옵니다. 당연히 배운지 얼마 안되었으니 말 하면 어느정도 알아 듣습니다. 당연히 그런 거 알아듣는지 아닌지 보는 회사를 면접봐서 가는 거였으니깐요.

그렇게 일본어 어정쩡하게 되고, 실력은 그만한 곳에서 좀 하다보니 나 it 일 할 수 있어~ 하고 있어~ ㅇㅇ. 내가 몇년차 사람들하고 잘 해~ 하지만….

그런쪽 일은 생각보다 누가 와서 해도 되는 일인 경우가 많거나, 아니면 그냥 돌아가기만 하면 된다거나 하는 그런 일들이었던 것입니다. 진짜 핵심은 다른데서 개발하거나, 스타트업들이 따로 만들거나, 컨설팅을 받거나 그러고 있었거든요.

자, 그럼 이렇게 된 기무춍상은 어떻게 되는 걸까요?

어정쩡한 일본어 실력 + 그냥 고만고만한 채 시간만 몇년 먹음 = 제자리걸음

잡다하게 많이 할 줄 아는 것이 생겨서 실력이 는 거 아니냐고 하는 건 말이죠… 그냥 지식량 많은 다른 누군가가 한두번 배우면 배울 수 있는 거에요.

이렇게 기무춍상이 생깁니다. 그리고 이런 업계인들 생각보다 많이 양산되다가 한국 돌아갔다고 들었습니다.

기무춍상 002 – 일본에서의 스타트가 살짝 어긋난 건 바꿀 수 있습니다. 근데 그들은 그러지 않습니다.

일본it로 취업 막 들어왔을 때, 자기가 간 회사가 블랙인지 아닌지에 대한 판단은 좀 늦어도 됩니다. 근데 중요한건 거기에서 잘 어울리면서 일을 할 수 있냐 아니냐부터 시작해야 합니다. 가뜩이나 it 하겠다고 하던 분들중에는 배울때는 재밌게 배웠다가도 실제로 회사에서 일로 하면서 아 아니구나 하고 돌아가는 분들도 많으니깐요. 게다가 해외에서 일한다? 더더욱 높은 벽부터 부딧히고 시작하는 겁니다.

그래서 생각 이상으로 제대로 알지 못하고 취업해서 블랙기업에서 시작했더라도 본인 하기에 따라서는 여러모로 길을 다시 모색해서 더 좋은 회사로 가기 위해 계속 뭔가를 하거나 할 수 있습니다. 제가 아는 분이 취업 컨설팅 이야기 하는데 들어보면 진짜 아무것도 안되어있는데 무작정 왔다가 제2신졸 전직하고 그러는 케이스도 많다고 하더군요. 그런데 전직을 위한 과정에서도 그들은 벽을 느낀다고 합니다.

일본 취업을 제대로 알아보지 않고 그냥 취업연계 같은 걸로 들어온 기무춍 레벨에서는 일본 내에서의 전직 시스템을 이해하는 것이 거의 불가능하더군요. 경력 1년 내외면 거의 제2신졸이라고 해서 졸업 후 1,2년 이내의 사람들을 신입처럼 다시 시작시켜주는 제도로 재취업을 노리는 쪽이 정답입니다. 기업들도 그렇게 하고 실제로 1,2년 정도의 그걸 경력으로 인정을 안해줘요. 근데 기무춍 같은 애들은 이미 블랙으로 들어와서 착취당할 예정이었기 때문에 비자도 짧습니다. (그냥 기본 1년짜리 받고 오는 듯 하더군요) 그럼 비자 갱신부터 하고 나서 알아봐야 할 일을 이런 저런 거 다 부정당하고 할 거 많이 부딧힌다고 해서 씩씩거리기 시작합니다. 미치는 거죠.

근데 이정도는 그냥 살짝 어긋난 거라고 봐야 합니다. 내 국가도 아닌 곳에서의 생활이니깐요. 허들 더 어려운 거 맞습니다. 실제로 제2신졸로 잘 되는 케이스도 적지 않고요. 어쩌다가 다른 걸로 잘 자리잡고 살기도 하고요. 케바케가 많은데.. 그들은 그런 걸 못합니다. 그러다가 돈 까먹고 한국 가는 거죠. 게다가 실력이 제대로 있는 것도 아니니 한국 가서도 힘들꺼고요. (실력이 없는 것은 이유를 알려드리겠습니다.)

만약 본인이 뭔가 좀 꼬인 거 같다. 그래도 객관적으로… 최대한 객관적으로 보면서 어떻게 앞으로 살아갈지 고민하고 해서 수정할 수 있는 방향을 찾아보면 뭔가 방법이 있기 마련입니다.

scrcpy – 안드로이드 화면 미러 프로그램

회사에서 사전 단계의 기술 검증을 위한 개발을 진행하느라, 안드로이드 네이티브를 만지고 있다.

그 와중에, 지금 이용하려는 산업 기기는 usb 포트가 너무 부족하다. 그래서 이걸 무선 미러로 보려고 하는데… 당연히 유료 프로그램 안쓴다 난. 될 수 있으면 오픈소스 선에서 해결되면 좋다.

그럴 때 찾아낸 것이 바로 scrcpy 

github에 자세한 사용법이 나와있고, adb로 원격 연결 하는 방법 안다면 금방 쓸 수 있다.

네트워크를 당연하게 이용하는 솔루션이라서 당연히 tcp/ip 되는 환경이고, 나처럼 특정한 기기에서 디버그용 usb나 다른 버스 포트가 모자랄 경우에 쓰면 좋다.

안드로이드 네이티브는 너무 오랜만이라 이거 되게 기억 안나서 힘들어 죽겠다. ㅠㅠ