레이블이 소프트웨어 설계인 게시물을 표시합니다. 모든 게시물 표시
레이블이 소프트웨어 설계인 게시물을 표시합니다. 모든 게시물 표시

VS Code, Android Stuido, IntelliJ, Xcode, Eclipse.... 제일 무난한 개발 툴은 뭘까? 1편

 통합된 개발 환경 (IDE)는 거의 모든 개발자들이 모니터에서 항상 보는 도구다.


 직관적이고, 가볍고, 확장성과 대중성이 높으며, 오류(전엔 작업하다 블루스크린 뜨면 뒷통수 잡았었다...) 없이, 장시간 동안 편안하게 작업 할 수 있도록 신중하게 선택해야 한다.

 여기서 가장 중요한 요소는 확장성과 대중성이다.

 어디서든 쉽게 정보를 얻을 수 있어야 하고 사용방법을 익히기 쉬우며, plug-in, add-on, extension같은 확장 모듈을 통해 기능을 쉽게 추가 가능하면 더욱 더 좋다. 또 대중성이 있다는건 누군가가 내가 필요한 확장 기능을 만들어 둔 확률이 높다는 것을 뜻한다.


개발 사이클 - 출처 마이크로소프트
개발 사이클 - 출처 Microsoft Ignite

 이 과정을 통해 프로그램이 개발되며, 요즘 IDE들은 Code에서부터 Test까지 제공하는 것이 보통이다. 릴리즈 버전의 Build나 Deployment는 수동으로 직접 손이 가는 부분이 많고 Version control이나 협업같은 부분은 Github를 많이 사용 하고 있으니 이를 제외한 부분이 실질적으로 IDE가 하는 역할이라 할 수 있을 것이다.


 솔직히 실무에서 잘 안써봤던 IDE가 낯선 나에겐 어떤 것들이 많이 사용하는 지 정보가 필요했다.

언어 순위 - 출처 pypl.github.io - Google Trend 데이터 취합

IDE 순위 - 출처 pypl.github.io - Google Trend 데이터 취합

DB 순위 - 출처 pypl.github.io - Google Trend 데이터 취합


 웹이나 모바일 앱 개발에 관심을 뒀던 나에게는 좀 이해가 가지 않는 순위들 도 몇 있지만, 용도를 가리지 않은 전세계의 트렌드라고 하니 그려려니 했다.

 언어의 순위가 Python이 1위인 이유는 요즘 AI 개발에 대부분 사용중이기 때문이고, Java는 x86 플랫폼 외에도 쓰이는 경우가 많기 때문으로 제외하면 JavaScript와 TypeScript, PHP가 실질적으로 웹 플랫폼에서 유의미한 순서이고, 그 중 모바일 앱 개발은 Javascript와 TypeScript가 대세라 볼 수 있겠다.

 IDE의 경우에도 마찬가지 Visual Studio의 압도적인 점유율은 모바일 앱 개발뿐만이 아니라 윈도우즈 어플리케이션(요즘은 앱이라 부른다던데....) 개발에도 쓰임이 아닐까?

 그렇다면 결국 1위는 Visual Studio Code, 그 다음이 Android Studio, Eclipse가 될것이다.

 다만 확장성에 있어서 Visual Studio Code는 수많은 확장팩으로 여러가지 언어들의 편의성을 지원해주는 커뮤니티가 형성되어 있어 Kotlin과 Java를 주로 지원하는 Android Studio보다는 훨씬 대중성 있다 생각할 수 있다.

 데이터베이스(DB)도 마찬가지로 대기업과 중견기업에서 수없이 검증되고 자바와 궁합좋은 Oracle, 마이크로소프트에서 제공하는 SQL Server는 비용문제로 제외하고, MySQL와 PostgreSQL가 1,2위라고 할 수 있을 것이다. Firebase와 Supabase약진은 MySQL의 점유율을 뺏어온 것이 아닐까 싶은 개인적으로 추측된다. 혹은 Oracle이 흡수 했거나.


 많은 데이터를 살펴보진 않았지만 이것저것 살펴보고, 검색엔진 결과를 살펴보다보면 내 결론은 이미 나와버렸다. Javascript나 TypeScript 베이스에 Visual Studio Code, 데이터 베이스는 사용 용도와 규모에 따라  MySQL이나 Mongo, Firebase, 초소형 Embedded용으로는 Sqlite정도다.


이제 뭘로 만들어야 할지 결정 했으니, 2편에선 실제로 내가 고른 IDE를 소개하도록 하겠다.


바이브 코딩 - 허망한 꿈은 아닌가?

요즘 보는 유튜브에서 보는 영상들이 바뀌어서 컨텐츠의 카테고리가 달라져 버렸다. 

자주보던 영상들은 점점 안보이고, 온통 AI, AI, AI..... 

'10분만에 만드는 앱'
'코딩 필요 없이 만드는 나만의 앱'
'따라하기만 하면 되는 어쩌고 저쩌고.......'

온갖 어그로성 영상들이 대부분이고, 진짜 정보는 그 10~20분 영상안에 1~2분 정도뿐이다.

과연 개발자로서의 위상은 어떻게 변해왔는지 간단하게 개인적인 경험에 비춰 설명해 보겠다.

경제 위기로 모두가 힘들때, 나는 입시준비 하느라 세상이 어떻게 돌아가는지도 몰랐다.
중학교때는 온라인 커뮤니티와 삼국지, 머드(MUD) 게임에, 고등학교 부터는 스타와 와우라는 블리자드가 내 인생을 집어 삼켜져서 일지도 모른다.

어찌저찌 대학교는 입학했고, 더 공부하긴 죽기보다 싫었다. (지금도 휴학중이다... 몇십년째..)

그런 내게도 끊임없이 도파민을 주는 존재가 있었으니 컴퓨터 그 자체였다.
어쩌다가 간 용산 컴퓨터 상가에서 한두시간을 우두커니 모니터를 보면서 참 신기하고 재밌다고 느꼈다.

 그리고 고등학교때 하라는 공부는 안하고 어셈블리나 C, 노턴 시리즈 책들, 기타 4주 완성, 21일 완성 등의 자극적인 내용의 책들이 시커멓게 되도록 읽기만 했다. 읽기만.... 내 독해력이 문제인지, 번역문장의 문제인지.... 지금은 확실히 알겠지만 그때 당시에는 머리에 들어오지 않았다.

 그 당시 컴퓨터 프로그램의 문법은 IF와 FOR, 함수는 필요한 만큼만 알고 있다면 웬만한건 만들 수 있다고 생각했다. 물론 그 이후로 알고리즘과 패턴에 관한 책을 읽고 내 무지함에 깊은 자괴감을 느끼긴 했지만 말이다.

 요컨데, 휴학한 뒤 경제가 힘들어 모든 사람들이 취직이 힘들때 프로그래머로서 직업을 구하기 시작했다. 근데 이게 웬걸.... 잡X리아에 글을 올리자 마자 순식간에 수십통의 전화가 오는 것이 아닌가?

 내가 다룰수 있던 건 고작 HTML, Javascript, 포토샵 정도인데 말이다.
그렇게 심각하게 소질없고 재능없는 디자인이란 세계로 먼저 빠져들었다......가 금방 나왔다.

 그 이후 한창 주가를 올리고 있던 PHP에 손을 대고 진짜 프로그래머(그 당시에는 스크립트언어로 컴파일도 안되는거라 진짜라고 하기엔 좀 민망하다)로서 코딩을 하기 시작했다. 그 당시에는 IDE(통합개발환경)란 개념도 거의 없었던 때라 Editplus로 직접 손 코딩하는게 다였다. 가끔 VI를 쓰긴 했지만 나에겐 참 어려운 에디터였다.

 그렇게 10년가까운 생활을 PHP와 함께 했다. 가끔 다른 언어를 하기도 했지만 언어 하나를 거의 숙달하는 경지에 오르면 다른건 그냥 문법과 그 언어의 특징적인 부분을 잘 참고만 하면 웬만한 언어는 일주일 내에 개발할 수 있을 정도로 썼다. 물론, 그렇다고 해서 시행착오가 없지는 않다. PHP와 특징이 확연히 다르고 잘 모르는 개념은 온갖 오류들과 실패를 맛봐야 했기 때문이다.

 그 당시의 인터넷 프론트엔드 개발자는 두 부류정도로 크게 나뉜거 같다. 정부나 민간기업의 SI와 쇼핑몰이나 게임사이트의 신규기능 추가, 유지보수 정도로....

 그 당시 병역특례로 군대를 안가려고 발버둥치던 나로서는 선택의 여지가 별로 없었다. 항상 시간에 쫓기고 하루도 지나지 않아 스펙을 바꾸던 SI 개발 업체에 들어가야 했고, 결국 군대는 피했지만 건강을 잃었다. 

 모순적이게도 어릴적 컴퓨터에서 뿜어나오는 도파민에 쩔어있던 내게 새로운 기술, 새로운 기능, 새로운 코드들이 없는 회사는 매력적으로 다가오지 않았고, 프리랜서로 전향한다.


 이때부터 슬슬 IDE가 눈에 들어오기 시작했다. 특히 이클립스....
 자바로 작업할 일도 간혹 있었기에 이클립스의 편리한 기능들은 참 새롭게 다가왔다.


.
.
.


 말이 길었다. 짧게 말하자면 바이브 코딩은 AI에게 코더로서의 역할을 넘기고 개발자는 아키텍쳐의 영역으로 넘어가는 길이다. 근데 그 아키텍쳐가 프로그래밍을 해본적이 없다???
 외국계 Y모 회사에 계약직으로 일할 무렵 그 당시 아시아에 아키텍쳐는 단 두명 있었다. 프로그래밍 실력을 둘째 치고라도, 개발언어의 특징을 정확히 알고 시스템, 데이터베이스 설계, 퍼포먼스, 리스크 매니지먼트까지 회사와 클라이언트의 니즈를 정확하게 꿰뚫고 핵심을 알고 있어야 비로서 아키텍쳐란 타이틀이 달렸던걸로 기억한다.

 최근 한달 가량 나도 바이브코딩이란걸 해보고 있지만, 녹녹하지 않다.
과연 과거의 소프트웨어 설계 경험이나 DB, 네트워크, 튜닝등의 경험이 없었다면??

 아마 내 첫 모바일 앱의 개발은 두배이상 지체 되었을 것 같다. 아니면 중도에 포기했거나...



 바이브 코딩은 당신께서 생각하는 앱 개발이 기존에 구현했던 프로그램을 짧은 시간안에 쉽게 제작하게 해줄 수 있을지는 모르나, 무슨 언어로 어떤 데이터를 어떤식으로 제공하는지 조차 모른다면 관련된 '얇은' 책이나 E-Book으로 사전지식을 얻어두는 것이 좋다.

 특히 AI 프롬프트 쓰는 방법(대화하는 방법)은 꼭 익혀두자.