반응형

1. 딥러닝이 가져온 AI의 변화

ChatGPT가 쏘아올린 AI의 열기가 뜨겁습니다.

과거에도 AI에 대한 관심이 높아졌던 시기가 여러번 있었습니다. 하지만 이러한 관심은 독감처럼 잠시 유행하다 지나가 버리곤 했습니다. 사람들이 갖고 있는 AI에 대한 기대치가 너무 높았던 것 일까요? 번번히 AI는 그것에 못미치는 성과를 보여주며 실망을 안겨주었습니다.
그러던 중 "딥마인드"라는 영국의 AI 회사에서 개발한 "알파고"가 등장 하였습니다. 알파고는 "이세돌"이라는 바둑계의 젊은 영웅을 4:1로 무찌르면서 엄청난 이슈가 되었습니다. 알파고는 딥러닝이라는 새로운 알고리즘으로 무장하고 인간 바둑계의 무림을 평정한 것이었죠. 그러나 사람들은 바둑이라는 한정된 카테고리이기 때문에 가능할 것이라고 생각 했습니다. 아직까지도 AI가 사람처럼 생각하고 상황에 적절한 답을 주는 것은 어려웠기 때문이었습니다.
그러나 최근 등장한 ChatGPT는 달랐습니다.
이 서비스가 보여주는 답변은 놀라움 그 자체였습니다. 일상의 대화에서 부터 시작해 다양한 분야의 깊이 있는 질문에도 양질의 답변을 내놓습니다. 심지어 철학적인 질문에도 답변을 내어 놓습니다.
ChatGPT에게 "삶의 의미는 무엇일까?"라는 질문을 한번 해보았습니다.
ChatGPT가 내놓은 삶의 의미에 대한 답변
초기 AI는 Rule 기반의 프로그램이었습니다. 하지만 사람이 모든 Rule을 만들수 없다는 한계가 있습니다. 이를 극복하기 위해 사람의 뇌를 흉내낸 인공 신경망이 나오게 되고, 이제 컴퓨터가 스스로 학습을 할 수 있는 환경이 만들어지게 되었습니다.
거기에 하드웨어의 발달, GPU와 같은 고속 컴퓨팅 기술의 발전이 더해짐으로 인해 AI의 처리 속도가 빨라지게 되었습니다.
ChatGPT는 초거대 언어 모델의 AI 챗봇입니다. 이는 최신 딥러닝 기술과 고속 컴퓨팅, 그리고 거대 자본을 등에 업고 탄생한 것입니다. 이제 AI는 단순한 유행이 아닌 새로운 시대의 혁명이 될 수 있는 여건이 마련된 것입니다.
 

2. AI의 발전이 가져올 개발자 세계의 변화

이런 AI의 발전이 개발자의 삶에는 어떠한 영향을 미칠까요?
이미 프로그래밍 분야에서도 AI를 이용한 기술의 발전이 있었고 대중화 되기 시작했습니다.
ChatGPT에게도 아래와 같이 코드를 요청할 수 있습니다.
ChatGPT가 만든 코드
Github의 Copilot을 이용하면 내가 작성하고 있는 코드의 맥락을 이해하고 다음 코드를 자동으로 추천해줍니다.
(copilot은 월1만원의 유료서비스입니다) 개발자는 추천 코드가 맞다면 tab키를 눌러 코드를 완성할 수 있고, 다른 추천 코드를 요청할 수도 있습니다. 이런 서비스를 이용하게되면 개발자가 실제로 코딩하는 양이 획기적으로 줄어들게 됩니다.
아래는 Copilot이 코드를 추천해 주는 모습입니다.
Copilot의 코드 추천 기능
이 두가지 서비스(ChatGPT, Copilot) 모두 OpenAI에서 개발한 서비스입니다.
이렇게 개발이 자동화 되면 우리는 좀 더 고차원적인 일을 할 수 있게 됩니다. 대신 우리는 AI에게 일을 시킬수 있는 능력이 필요합니다. 당연히 일을 잘 시키기 위해서는 AI를 잘 이해하는 High Performer가 되어야겠죠.
결국 미래에는 AI를 잘 이해하고 사용하는 개발자가 살아 남을 수 밖에 없을 것입니다.
우리가 학자들처럼 AI의 모든 논문을 이해하고 연구할 필요는 없습니다. 새로운 이론과 기술이 나오고 약간의 시간이 지나면 대중화되는 단계가 오게 됩니다. 우리는 이걸 잘 이용할 수 있으면 되는 것입니다.
2010년경 모바일로 전환되는 시기에 기회가 왔던것 처럼, 어쩌면 지금이 AI로 전환하는 최적의 시기이고 개발자에게는 또다른 기회가 될 것입니다.

이런 기회를 놓치지 않으시길 바랍니다.

반응형

'AI & ML' 카테고리의 다른 글

NestJS에서 ChatGPT API 사용하기  (0) 2023.04.29
반응형

다음은 이 글의 동영상 강의 링크입니다.
 
요즘은 많은 종류의 프로그래밍 언어들이 있습니다. 개발자가 되려고 할 때 어떤 언어를 선택해야 할지 고민을 많이 하게됩니다. 이럴때 어떻게 선택하면 좋을지와 추천 언어는 어떤것이 있는지 알아보겠습니다.
 
개발자의 종류는 다양하지만, 최근들어 일반적으로 Frontend와 Backend 개발자로 나누고 있습니다.
단어에서 주는 느낌처럼 사용자들이 직접 만나게 되는 부분을 Frontend, 그 뒤의 보이지 않는 부분을  Backend 라고 합니다.
 
그림과 같이 사람이 볼 수 있는 부분이 Frontend, 보이지 않는 부분이 Backend 라고 생각하면 됩니다.

카카오톡에 로그인 하는 예를 들어보면,
  1. 카톡 로그인 창이 보이는 부분이 Frontend입니다.
    여기에서 사용자는 아이디와 패스워드를 입력하고 로그인 버튼을 클릭합니다.
  2. 아이디/패스워드 정보가 Backend로 전달이 되어집니다.
    이것으로 Database를 검색하여 사용자 인증을 처리하고, 정상 사용자일 경우 친구 및 대화 목록을 가져와서 Frontend로 전달을 합니다.
  3. Frontend에서는 Backend에서 온 Data를 이용해서 대화목록 화면을 보여줍니다.

 

정리하면,
Frontend는 사용자에게 보여지는 화면을 주로 처리하는 프로그램을 개발하고,
Backend는 Frontend의 요청에 의해 비즈니스 로직을 처리하고, 데이터를 처리하고 Interface를 처리하는 프로그램을 개발합니다.
 
Frontend의 경우 앱과 웹으로 구분될 수 있습니다.
앱의 경우는 Android와 iOS 개발을 의미합니다.
  • Android는 과거 Java 언어를 사용하였으나 최근엔 Kotlin(코틀린)이라는 언어를 사용합니다.
  • iOS의 경우는 Swift(스위프트)를 사용합니다.
웹의 경우는 자바스크립트 프레임워크를 많이 사용합니다. 현재 많이 쓰이고 있는 것은 다음과 같습니다.
  • React
  • Vue
이 둘의 차이는 다음과 같습니다.
물론 웹의 경우는 html, css도 어느정도 알고 있어야 개발이 가능합니다.
 
Backend의 경우 최근 Java와 NodeJS를 많이 사용합니다.
백엔드의 경우 그 외에 Database는 기본적으로 알고 있어야 합니다.

 

이 외 다른 언어들은
  • Python의 경우는 배우기 쉬운 언어라 많이 사용하고 있습니다.
  • Python은 데이터 분석 영역에서도 많이 사용합니다.
  • Php의 경우는 wordpress라는 브로그 사이트를 만들 수 있는 오픈 소스를 등에 업고 많이 사용되고 있습니다.
  • 시스템적으로 빠른 성능이 필요할 경우는 C나 C++을 사용하는 곳도 있습니다.
 
결론을 말씀 드리면
  • 요즘 개발자로 취업을 하기 좋은 언어를 추천하라고 하면,
  • 당연히 Javascript 기반의 언어입니다. 백엔드와 프론트엔드를 모두 커버할 수 있기 때문이죠.(Full Stack)
  • 먼저 frontend/backend를 결정하시고
  • frontend일 경우는 react, vue 중에서 하나를
  • backend일 경우는 nodejs, java 중에서 하나를 선택하시는 것을 추천드립니다.

반응형
반응형

다음은 이 글의 영상 버전입니다.

https://youtu.be/5SlcbnUpkIw

 

이 글은 개발자의 길을 막 시작하셨거나, 새롭게 가시려는 분들을 위해 작성한 글입니다.

개발자라는 직업을 갖기 전에 어떤 고민들을 해보아야 할지를 이야기 합니다.

 

1. 적성에 맞을까?

직업으로서의 개발자는 평생토록 매일 8시간씩 자리에 앉아 컴퓨터를 들여다 보아야 하는 일입니다. 이렇게 오랜 시간 일을 하려면 이것이 내 적성에 맞는가를 가장 먼저 고려해 보아야 합니다. 자리에 진득하게 앉아 오래도록 코딩을 하더라도 일이 재미있게 느껴져야지만 개발자의 길을 갈 수 있습니다. 몇개월 공부하면서 이 일이 힘들게만 느껴진다면 다시 한번 진지하게 고민을 해보아야 합니다. 저는 오래도록 이 일을 했지만, 개발하는 것이 재미있다고 느껴져서 아직까지도 꾸준히 이 일을 할 수 있는 것 같습니다.

한발 더 나아가 이 일에 대한 애정과 열정이 있을때, 내가 이 일을 더 잘하기 위한 시간을 투자하게 되고, 그럴때 더 일을 잘 할 수 있게 되는 것이죠.


다음은 어떤 책에서 발췌한 글입니다. 어떤 일을 잘 하기 위한 진리라고 할 수 있죠.

 

영화속 해커는 키보드를 몇번 두드리면 마법의 문이 열리는 듯한 일들이 일어나곤 합니다. 하지만 현실속의 개발자는 이것과는 거리가 멀죠.

개발자들이 매일 하는 것은 코딩, 테스트, 코딩, 테스트의 반복입니다. 심지어 개발하고 있는 것이 잘 풀리지 않아, 몇일 동안 골머리를 앓기도 합니다. 하지만 이것을 어떻게든 해내야만 하는게 현실의 개발자입니다. 이런 끈기야 말로 개발자가 갖추어야 할 자질이기도 합니다.

 

개발자는 배움의 끈을 놓을 수 없는 직업입니다. 다시말해 평생을 배우고 또 배워야 합니다. 따라서 수동적인 배움이 아닌 열정을 가지고 배울 수 있어야만 이 일을 더 잘 해 낼 수 있습니다.

 

이런 어려움에도 불구하고 개발자는 매우 가치있고 멋진 일입니다. 무엇보다 일의 성취감이 높고, 많은 사람들과 잘 융합되어 질때 엄청난 시너지를 발휘하며 즐겁게 일할 수 있는 직업입니다. 또 요즘은 개발자들에 대한 처우가 점점 좋아지고 있는 추세입니다. 복지는 물론 연봉도 높은 일자리들이 많이 생기고 있고, 앞으로는 더욱 그럴 것입니다.

 

2. 비전공자도 개발자가 될 수 있나요?

당연합니다. 전공은 그다지 중요하지 않습니다. 

개발자에게 가장 중요한 것은 기술력입니다. 하지만 그것만큼 중요한 것이 커뮤니케이션과 협업 능력입니다. 대부분의 소프트웨어는 누군가의 필요에 의해 만들어지기 때문에, 그 맥락을 정확히 이해하기 위해선 소통이 너무나도 중요합니다. 

한 인터뷰에서 스티브잡스는 이런 말을 했습니다.

"One of the keys to Apple is Apple's an incredibly collaborative company."

"애플의 핵심 요소중 하나는 애플이 놀랍도록 협력적인 회사라는 것이다."

세계 최고의 기술력을 가진 회사 애플에서도 협력을 무엇보다 중요한 가치로 여긴다고 말합니다.

 

개발자는 개발팀에 소속되어서 동료들과 호흡을 맞춰 일합니다. 또 기획자, 디자이너들과도 긴밀하게 협력을 해야지만 제대로 된 품질의 아웃풋을 만들 수 있습니다. 거기에 사용자를 고려하고 마케팅적인 부분도 생각을 해야하기 때문에 많은 팀들과 긴밀한 협력을 유지해야만 합니다.

 

3. 관객이 아닌 플레이어

요즘은 유튜브를 통해 개발을 배우시는 분들이 많습니다. 좋은 컨텐츠도 많고 그 만큼 예전에 비해 개발을 쉽게 접할 수 있게 되었습니다. 하지만 동영상으로 개발을 배울 때 주의해야 할 것이 있습니다. 바로 눈으로 코딩을 하는 것이 아닌, 손으로 코딩을 하도록 해야합니다. 우리가 많은 축구 경기를 봄으로써 게임에 대한 이해도가 높아질 수는 있지만, 실제로 자신이 축구장에 가서 공을 차는 것은 다른 차원의 문제입니다. 따라서 영상을 통해 코딩을 배우더라도 반드시 자신의 손으로 직접 코딩을 해보고, 자신의 부족한 것들을 꾸준히 채워가는 작업을 해야합니다.

 

4. 기술보다는 미션이 중요

배달의 민족은 음식점과 소비자를 연결하는 앱을 만들었습니다. 초기 배달의 민족은 길에서 전단지를 주워 전화를 통해 연결해 주는 것 부터 시작을 했습니다. 그 후에 시스템을 만들어 자동화 시켰습니다. 이것은 어떤 미션을 해결하기 위해 필요한 기술을 구현하는 것이 중요하다는 의미입니다. 단순 개발 기술만으로는 의미있는 변화가 생기지 않습니다.

따라서 우리는 미션을 수행하기 위한 기술들을 고민하고, 연구하여 해결해 나가는 것이 필요합니다.

 

5. 프로젝트를 통해서 배우기

기술적인 것을 배우는 데 그치지 말고, 그것들을 활용해서 할 수 있는 프로젝트를 수행하는 것이 기술을 가장 빨리 배울 수 있는 방법입니다.

프로젝트는 곧 실전이기 때문에 훨씬 더 복잡한 기술적인 문제들에 부딪힐 수 있습니다. 이런 어려움들을 극복하는 것이 실전 감각을 키우는 가장 빠른 방법입니다.

프로젝트는 혼자서 수행할 수도 있고, 많은 인원이 같이 할 수도 있습니다. 혼자가 아닌 프로젝트에서는 협력하는 법도 자연스레 배울 기회를 얻게 됩니다.

 

6. 과정을 행복하게

똑같은 길을 가더라도 주변 사람들과 같이 웃으며 가는 사람이 있고, 먼저 가려고 다툼을 일으키는 사람이 있습니다. 결과가 모든 과정을 무시할 수는 없습니다.

 

에머슨이라는 작가는 "무엇이 성공인가"라는 글을 통해 성공을 다음과 같이 표현 했습니다.

성공은 큰 일을 이뤄내는 것보다,

주변 사람들과 행복하게 지내는것,

자기일에서 만족감을 느낄 수 있는 것,

누군가에게 조금이라도 도움을 주는 삶을 사는 것을 통해 만날 수 있는 것입니다.

 

이런 것들을 고민하고 잘 기억하셔서 여러분의 도전이 꼭 성공하시길 바랍니다.

 

 

반응형

+ Recent posts