반응형
반응형

요즘은 모든 사람이 소프트웨어 코딩 방법을 배운다. 학교와 MOOC, 온라인 교육 사이트는 미래의 프로그래밍 고수에게 처음으로 가르칠 언어를 정해야 한다. 
  

전통의 하버드 대학과 같이 여전히 70년대의 C를 고수하는 기관도 있지만 많은 학교가 자바스크립트(JavaScript)와 파이썬(Python), 자바(Java) 사이를 오가고 있다. 하나는 모든 브라우저에 내장돼 있고, 다른 하나는 사화과학을 위한 최선의 선택이며, 나머지 하나는 수학적 사고를 즐기는 사람들이 선호하는 풍부한 형식의 언어다.

어느 언어가 최선의 선택일까? 다른 두 언어보다 확실히 우위인 언어가 있을까? 아니면 수많은 학생들을 고통 속으로 몰아넣는다는 면에서는 다 똑같은 언어일까? 자바, 파이썬 또는 자바스크립트를 배워야 할 가장 뚜렷한 이유들을 살펴보자.

고전의 대명사, 자바 
어스벤스드 플레이스먼트(Advanced Placement) 테스트에서는 오래 전, 자바가 아직 초기이고 폭발적으로 성장하던 시절에 테스트 과목으로 자바를 선택했다. 자바는 초창기 모두가 생각했던 것처럼 프로그래밍을 완전히 지배하는 수준의 위치까지는 이르지 못했지만 여전히 많은 웹사이트와 스마트폰의 중추로 남아 있다. 지지 기반이 확고한 언어를 선택하면 이미 우수한 개발 툴이 풍부하게 준비된 만큼 학생이 올라타기도 비교적 수월하다. 또한 공부하고 수정하고 확장할 수 있는 오픈소스 코드도 방대하다. 대세에 동참하면 적응하기 쉽다.

새로운 언어, 파이썬
파이썬 프로젝트는 거의 30년 전에 시작되었으니 사실 새로운 언어는 아니지만 새롭게 느껴지는 이유는 최근에서야 성공했기 때문이다. 파이썬이 틈새를 벗어나 일반 프로그래머들 사이에서 광범위하게 채택되기 시작한 것은 불과 얼마 전부터다. 

새로운 언어는 곧 파이썬을 도입하는 학교에서 새로운 강좌 계획을 수립하고 새로운 시험을 만들고 새로운 교육 자료를 개발해야 함을 의미한다. 펫츠닷컴(Pets.com)과 마이스페이스(MySpace)가 등장하는 1990년대의 오래된 자료는 쓸 수 없다. 새롭다는 것은 한 꺼풀 차이다. 어차피 어셈블리 코드의 if-then-else 의사 결정 구조를 숨기는 그럴듯한 구문이라는 면에서는 모든 언어가 마찬가지다.

모든 곳에 존재하는 자바스크립트 
자바스크립트는 브라우저에 있고, 브라우저는 데스크톱과 스마트폰, 그리고 온갖 곳에 있는 모든 키오스크의 근간이다. 지난 10년 동안 Node.js 웹 앱이 클라이언트와 서버 팜에서 모두 실행 가능한 “동질형 코드”를 작성하는 가장 인기 있는 수단이 되면서 자바스크립트가 웹 서버의 최전선을 점령했다. 자바스크립트의 나이는 사실상 자바와 동일함에도 서버 진영에서 자바스크립트의 강력함을 인지하기까지는 오랜 시간이 걸렸다. 자바스크립트는 오래된 언어인 동시에 새로운 언어이기도 하다.

자바는 형식 지정 언어다
시간을 들여 각 변수의 형식을 지정해야 한다는 점이 거슬릴지도 모르겠지만 사실 키 3개를 클릭해 코드에 “int”를 추가하는 데는 그리 오랜 시간이 걸리지 않는다. 그 보답으로 코드를 배포하기 전에 컴파일러가 즉시 코드를 이중 확인해서 실수를 찾아주는 편리한 기능을 이용할 수 있다. 

형식 지정(Type-checked) 언어는 개발자가 코드의 논리에 대해 더욱 엄격히 생각하도록 강요하는데, 이는 신참 프로그래머에게 중요한 교훈이 된다. 자바의 형식 구조는 버그를 줄이고 더 나은 코드를 구축하도록 이끈다.

파이썬은 형식 비지정 언어
형식 언어를 지지하는 사람은 좋은 코드를 쓰는 현명한 사람이다. 그러나 자신의 코드가 각 변수의 데이터 형식에 대한 부가적인 정보 없이도 충분히 매끄럽게 실행된다고 생각한다면 파이썬을 사용하면 된다. 데이터를 변수에 저장할 때 컴퓨터가 데이터의 형식을 알아낼 수 있는데, 개발자가 굳이 부가적인 작업을 해야 할 이유가 무엇인가?

자바스크립트는 둘 다 해당
자바스크립트 자체는 형식 비지정이지만 최근 자바스크립트 분야의 유력한 일부 구성원들이 타입스크립트(TypeScript)로 전환하고 있다. 타입스크립트는 자바스크립트의 확대집합으로, 원할 때 형식을 지정할 수 있는 기능을 제공한다. 물론 원하지 않을 때는 일반 자바스크립트도 문제없이 사용할 수 있다. 형식 확인의 느슨한 버전이다.

자바, 디바이스의 강자
세계에서 가장 인기 있는 스마트폰 플랫폼은 안드로이드이며, 안드로이드는 자바를 기반으로 구축된 거대한 코드 스택이다. 그러나 스마트폰만큼 눈에 잘 띄지 않더라도 셋톱박스, 새로운 크롬북, 일부 데스크톱 역시 안드로이드 앱을 실행한다. 사촌지간인 자바와 C#이 윈도우 세계를 지배한다. 특정 하드웨어를 위한 애플리케이션을 만들려고 한다면 십중팔구는 자바가 최선의 선택이다.

파이썬, 데이터 과학의 강자
데이터를 다루는 소프트웨어를 만드는 경우 대부분 파이썬이 유리하다. 많은 과학자들이 파이썬의 간소한 구문에 매료되면서 전세계 연구소가 파이썬을 지지하는 기반이 됐다. 데이터 과학이 비즈니스 세계의 모든 계층을 장악하면서 파이썬도 그 뒤를 따르고 있다.

인터랙티브 문서를 만들고 공유하기 위한 최고의 발명품 중 하나인 주피터 노트북(Jupyter Notebook)은 다른 언어를 포용하기 전에 파이썬 커뮤니티부터 시작했으며 소프트웨어와 데이터, 그리고 설명 텍스트를 하나로 결합하기 위한 최선의 방법 중 하나다. 읽는 사람은 버튼만 누르면 데이터를 대상으로 소프트웨어를 실행할 수 있다.

자바스크립트, 웹의 강자
다른 플랫폼도 좋겠지만, 거의 모든 사람들이 세계와 연결하는 데 사용하는 절대적 포털은 여전히 웹 브라우저다. 웹 브라우저는 일반적으로 데스크톱과 스마트폰, 태블릿에서 가장 많이 사용되는 소프트웨어다. 자바스크립트는 로컬 클라이언트부터 시작했지만 그 영향력이 확대되고 Node.js 덕분에 개발자들이 클라이언트와 서버에서 동일한 코드를 더 쉽게 실행할 수 있게 되면서 독보적인 존재로 부상했다.

자바스크립트는 다른 언어가 주도하는 분야의 스택에도 진출했다. 많은 스마트폰 개발자들은 자바와 스위프트를 건너뛰고 자바스크립트를 사용해 크로스 플랫폼 앱을 만든다. 결국 네모난 브라우저 안에서 일어나는 일을 결정하는 것은 자바스크립트인 만큼 향후 대부분의 클릭과 키보드 입력에 대해 일어나는 일을 결정하는 것도 자바스크립트가 될 것이 거의 확실하다.

자바는 모든 것을 실행한다
파이썬 코드를 쓰는 경우 최종적으로는 자이썬(Jython)으로 실행될 가능성이 높다. 자이썬은 자바 가상 머신의 보편성을 활용하기 위해 자바로 작성된 파이썬 구현이다. 자바스크립트를 실행해야 하는 경우, 코드를 자바 바이트코드로 바꿔주는 리노(Rhino)를 사용하면 된다. 리노는 V8 엔진이 호환되지 않을 때 자바 가상 머신에서 자바스크립트를 실행하기 위해 여전히 많이 사용되는 방법이다.

이 두 언어만 JVM의 견고한 성능에 의존하는 것은 아니다. 스칼라(Scala), 클로저(Clojure), 코틀린(Kotlin)과 같은 많은 함수형 프로그래밍 언어 역시 마찬가지다. 덕분에 동일한 프로젝트에서 이들 JVM 기반 언어를 사용하고자 하는 경우 보다 간편하게 연결할 수 있다.

파이썬은 모든 곳에서 실행
파이썬은 다른 언어를 위한 에뮬레이터를 만들 때 가장 인기있는 언어는 아니지만 그렇다고 가장 기피하는 언어도 아니다. 여전히 많은 컴퓨터에서 손쉽게 파이썬을 찾을 수 있다. 파이썬을 만든 사람들은 항상 코드를 오픈소스로 배포했다. 또한 패키지도 여기저기에 많다. 

자바스크립트는 브라우저에서 실행
원래 브라우저의 알림 상자를 만들기 위해 만들어진 소박한 언어가 지금 많은 언어의 기반이라는 사실은 쉽게 믿어지지 않는다. 개발자는 사용자에게 도달하고자 한다. 사용자가 브라우저 안에 산다면 거기 도달하는 가장 빠른 방법은 자바스크립트로 코드를 실행할 방법을 찾는 것이다.

자바스크립트로 트랜스파일하는 커피스크립트(CoffeeScript), 라이브스크립트(LiveScript)와 같은 자바스크립트의 사촌만이 아니다. 리스프(Lisp), OCaml, 파스칼(Pascal)과 같은 언어도 자바스크립트로 변환해서 브라우저에서 실행할 수 있다. 파이썬은 주피터(Jupyter) 노트북과 같은 프로젝트의 브라우저에서 인기가 있으며, 구글 웹 툴킷과 같은 툴을 사용하면 자바도 자바스크립트로 변환할 수 있다.

자바의 강력한 IDE
이클립스(Eclipse), 넷빈스(NetBeans), 인텔리J(IntelliJ)는 최고의 통합 개발 환경으로 꼽힌다. 자바 커뮤니티에서 만들어져 오랜 시간동안 숙성을 거쳐 가장 충실히 지원되는 코드 작성 환경으로 자라났다. 코드 완성 및 코드 생성 알고리즘으로 소프트웨어를 온전히 다 쓸 수는 없지만 상당한 양의 코드를 대신 완성해준다. 이러한 다양한 보조 기능은 신규 개발자가 구문을 올바르게 작성하는 데 큰 도움이 된다.

워낙 인기가 있어서 다른 언어의 개발자들이 이 세 가지 IDE 내에서 코드를 실행할 방법을 고안했을 정도다.

파이썬의 클라우드
파이썬 언어가 처음 자리를 잡은 곳이 유닉스였음을 감안하면 리눅스 박스로 가득 찬 클라우드에 파이썬 코드가 풍부하게 사용되고 있다는 사실은 별로 놀랍지 않다. 주피터와 같은 최신 툴은 코드와 데이터, 설명을 하나로 묶어 연구 논문이 나오는 대로 사람들이 자신의 생각을 다른 사람들과 공유할 수 있게 해준다. 주피터 노트북은 정적 문서가 아니라 연구를 위한 인터랙티브 툴이다.

연구를 강화하기 위한 정밀한 파이썬용 툴도 개발되고 있다. 예를 들어 파이토치(PyTorch)는 코드와 데이터, 분석 알고리즘으로 구성되는 딥 러닝 툴킷이다. 데이터 과학의 미래는 이러한 환경이 지배하게 될 것이다.

자바스크립트의 JS피들
각각의 브라우저는 IDE 역할을 하기에 충분할 만큼 강력하다. 자바스크립트 코드를 다른 개발자와 공유할 수 있는 웹 사이트는 많은데, 이 가운데서도 JS피들(JSFiddle)이 가장 돋보인다. 웹페이지는 정적이지 않다. 코드를 조작하면서 웹페이지에서 이 코드가 실행되는 모습을 볼 수 있다. 덕분에 자바스크립트의 온갖 재미있는 구문을 간편하게 테스트할 수 있다.

하나를 배워도 좋고 모두 다 배워도 좋다
프로그래밍 세계는 타가수분(cross-pollinate)을 좋아한다. 여러 언어 사이를 왔다갔다하면서 구문을 제대로 유지하려면 혼란스러울 수 있지만 세 가지 언어 모두 큰 어려움 없이 프로젝트에 사용할 수 있다. 

데이터를 분석하는 자바 또는 자바스크립트 프로젝트는 파이썬으로 작성된 데이터 과학 라이브러리에 연결할 수 있다. 또는 파이썬 프로젝트에서 자바 또는 자바스크립트 코드를 호출할 수도 있다. 세 가지 언어를 서로 격리된 섬으로 생각할 필요가 없다.

 

https://www.itworld.co.kr/news/125598

반응형
반응형

클라우드 컴퓨팅, 모바일 개발, AI의 발전에도 전 세계 기업의 일상적인 비즈니스는 여전히 1990년대에 등장한 3가지 프로그래밍 언어를 기반으로 운영되고 있다. 거의 모든 언어 순위 조사에서 최상위를 차지하는 자바스크립트와 파이썬 그리고 자바다. 깃허브의 연례 옥토버스 현황(State of the Octoverse) 보고서를 보면, 2014년부터 매년 상위 4개 언어 중 3개를 이들 언어가 차지한다. 이들 프로그래밍 강자가 거의 30년 동안 개발자에게 최고의 선택지로 남으며 마땅한 경쟁자조차 없는 이유가 무엇일까?

 

자바스크립트(사용자 580만 명)

자바가 백엔드를 움직인다면, 자바스크립트(이름과는 달리 실제로는 자바와는 아무런 관련이 없다)는 애플리케이션의 프론트엔드를 구동한다. 웹 페이지의 모든 상호작용은 자바스크립트로 작성, 제어되며, 깃허브의 프로그래밍 언어 순위에서 10년 동안 1위를 차지하고 있다.

자바스크립트와 서버 측 짝꿍인 Node.js는 단순하면서도 다양한 용도로 쓸 수 있어 1995년 데뷔 직후부터 인기를 얻었다. 웹 페이지를 만드는 데 사용하는 언어인 HTML과 원활하게 작동하는 자바스크립트는 모바일 앱 개발이 등장하면서 웹 개발 표준으로 자리 잡았다. 현재는 구글부터 유튜브, 페이스북에 이르기까지 모든 곳에서 자바스크립트를 찾을 수 있으며, 세인트루이스 브라운스 야구팀 사이트부터 인기 있는 디자인 매터스 팟캐스트 사이트까지 놀라운 디자인 작업을 구현한다.
 

파이썬(사용자 520만 명)

스크립팅 언어인 파이썬의 강점은 쿼리 작성, 작업 자동화, 데이터 분석이다. 빅데이터와 분석 애플리케이션용 프로그래밍 언어로 최근 들어 인기가 급상승했지만, 의외로 파이썬은 1991년에 데뷔했다. 즉, 여기서 살펴보는 빅 3 언어 중 가장 오래됐다. 아마존, 넷플릭스, 스포티파이, 인스타그램의 애플리케이션은 모두 파이썬으로 작성됐다. 2019년 깃허브 보고서에서 자바를 제치고 2위를 차지했으며, 2022년에는 22.5%로 인기가 더 올라갔다.

파이썬은 일회성 범용 작업에는 탁월하지만, 반면 가장 큰 단점이 속도다. 밀리초가 중요한 실시간 작업이나 금융 거래를 지원하는 데는 자바에 미치지 못합니다. 그럼에도 여전히 소프트웨어 개발자가 가장 많이 선택하는 언어이자 기업이 가장 선호하는 기술이다.
 

자바(사용자 320만 명)

자바는 대부분의 엔터프라이즈 애플리케이션의 기본 프로그래밍 아키텍처다. 인증, 스토리지, 배송 등에 로직과 인텔리전스를 제공하는 등 보이지 않는 곳에서 많은 작업을 수행한다. 아줄(Azul)의 자바 현황 조사 보고서에 따르면, 압도적인 98%의 기업이 소프트웨어 애플리케이션 또는 인프라에서 자바를 사용하고 있다. 이들 중 57%는 자바가 대부분 애플리케이션(60% 이상)의 근간이라고 답했다.

자바는 잘 정립된 언어일 뿐만 아니라 '플라이휠' 효과로 되어 지속적인 인기를 얻고 있다. 자바로 애플리케이션을 만드는 것은 빠르고 쉬우며, 자바로 구축된 애플리케이션이 많을수록 개발 프로세스가 더 단순하고 빨라진다. 일반적으로 애플리케이션은 처음부터 코딩하는 경우는 거의 없다. 특정 기능과 기능을 구현하기 위해 다양한 기술을 조합해 만든다. 자바의 진정한 장점은 수많은 프레임워크, 라이브러리, 오픈소스 자료를 통해 모든 구성 요소가 실전에서 테스트를 거쳤다는 사실이다. 덕분에 개발자는 이런 조합이 잘 작동한다는 것을 신뢰하고 빠르게 애플리케이션을 만들 수 있다.

자바가 인기 언어 상위권에 머무는 이유는 단지 역사적인 힘뿐만이 아니다. 자바는 6개월마다 중요한 기능  업데이트를 제공하며, 분기별로 사소한 개선 사항, 버그 수정, 보안 업데이트가 포함된 릴리스가 나온다. 또한 새로운 기술에 유연하게 적응할 수 있다. 최신 버전인 자바 22는 대형 언어 모델과 생성형 AI를 엔터프라이즈 애플리케이션에 적용하는 데 사용될 가능성이 높다.
 

인기는 계속된다

물론 이들 언어에도 한계가 있다. 가트너 부사장 겸 리서치 디렉터인 린다 아이비 로서는 "(이들 언어로 만들어진) 엔터프라이즈 소프트웨어는 오랜 기간 일종의 지원 기능으로 인식됐다. 혁신이 부족하고, 잘 만들어진 애플리케이션 전략의 이점을 누리는 데 오랜 시간이 걸린다"라고 지적했다. 숙련된 개발자가 부족하고 IT 예산이 빠듯한 상황에서 기업이 당장 문제가 되지 않는 오래된 소프트웨어를 빠르게 수정하지 않는 것이 이해되는 측면도 있다.

언어 측면에서 보면, 오늘날 소프트웨어 개발의 기본 구성 요소인 자바, 파이썬, 자바스크립트를 뒤집을 만한 추진력과 힘을 가진 다른 프로그래밍 언어는 아직 등장하지 않았다. 이들 3가지 언어는 현재 디지털 비즈니스 운영 방식에 필수적인 요소이며 앞으로도 당분간 이 자리를 계속 유지할 것으로 보인다.

 

https://www.itworld.co.kr/news/338433

 

JSㆍ파이썬ㆍ자바가 기업 IT를 지배하는 이유

클라우드 컴퓨팅, 모바일 개발, AI의 발전에도 전 세계 기업의 일상적인 비즈니스는 여전히 1990년대에 등장한 3가지 프로그래밍 언어를 기반으

www.itworld.co.kr

 

반응형
반응형

 

애자일 원칙 

Agile Principles(애자일 12가지 원칙)

 

https://medium.com/hgmin/agile-principles-%EC%95%A0%EC%9E%90%EC%9D%BC-12%EA%B0%80%EC%A7%80-%EC%9B%90%EC%B9%99-d3f386bd9839

 

Agile Principles(애자일 12가지 원칙)

고객과 시장의 변화에 빠르게 대처하며 Agile하게 일하기 위한 12가지 원칙에 대해서 소개합니다.

medium.com

 

Agile은 일을 빠르게 하기 위해서가 아니라, 고객과 시장의 변화에 빠르게 대처하기 위한 방법입니다. Agile하게 일하기 위한 12가지 원칙에 대해서 소개합니다.

초기에 확정된 일을 그대로 한다면 Waterfall이 더 나은 방법일 수 있지만, 초기부터 동작되는 소프트웨어를 만들어 시장에 적용/학습/개선하기 위해서는 Agile 방식이 더 나은 방법입니다.

Agile Manifesto(선언문)

  • Individuals and interactions over processes and tools
  • Working software over comprehensive documentation
  • Customer collaboration over contract negotiation
  • Responding to change over following a plan

Agile Principles(원칙)

Agile 선언문을 따르기 위한 12가지 원칙들

https://www.visual-paradigm.com/scrum/agile-manifesto-and-agile-principles/

반응형
반응형

https://devdocs.io/

 

DevDocs

Fast, offline, and free documentation browser for developers. Search 100+ docs in one web app including HTML, CSS, JavaScript, PHP, Ruby, Python, Go, C, C++, and many more.

devdocs.io

DevDocs는 여러 API 문서를 빠르고 체계적이며 검색 가능한 인터페이스로 결합합니다. 시작하기 전에 알아야 할 사항은 다음과 같습니다.

  1. 기본 설정을 열어 더 많은 문서를 활성화하고 UI를 맞춤설정하세요.
  2. 마우스를 사용할 필요가 없습니다. 키보드 단축키 목록을 참조하세요 .
  3. 검색은 퍼지 일치를 지원합니다(예: "bgcp"는 "Background-clip"을 나타냄).
  4. 특정 문서를 검색하려면 해당 이름(또는 약어)을 입력한 다음 Tab을 누르세요.
  5. 브라우저의 주소 표시줄을 사용하여 검색할 수 있습니다. 방법을 알아보세요 .
  6. DevDocs는 오프라인 , 모바일에서 작동하며 웹 앱으로 설치할 수 있습니다.
  7. 최신 뉴스를 보려면 @DevDocs를 팔로우하세요 .
  8. DevDocs는 무료이며 오픈 소스 입니다 . 
  9. 코딩이 처음이라면 freeCodeCamp의 오픈 소스 커리큘럼을 확인하세요 .

반응형
반응형

난독증 환자는 학창 시절 공부하는 데 어려움을 겪으면서
이를 보상하기 위해 다른 능력을 개발하기 위해 노력한다.
난독증을 지닌 창업가는 문서를 읽고 작성하는 능력은 부족하지만
그 대신 대화 능력, 창의성, 분석력, 공간지각 능력들이 뛰어나다.
특히 어린 시절부터 자신의 약점을 잘 알기 때문에
다른 사람을 믿고 일부 업무를 위임하는 능력이 뛰어나다.
- 줄리 로건, 런던 시티 대학 교수


이어지는 내용입니다. ‘난독증이 있는 사람이 이끄는 기업은
다른 기업에 비해 2배 정도 빨리 성장했고,
2-3개 이상의 기업을 동시에 경영할 가능성 또한 두 배 높았다.
난독증을 갖고서도 성공한 사람들은 학습장애를 극복하기 위해
도움을 청하는 데 익숙했는데, 사업가에겐 이것이 매우 중요하다.
권위를 기꺼이 위임할 수 있다는 것은 난독증이 있는 사람들에게 엄청난 이점이 된다.’

반응형
반응형

개발 배우기가 정말 어려운 이유  https://www.thinkful.com/blog/why-learning-to-code-is-so-damn-hard/

 

Why Learning to Code is So Damn Hard | Thinkful

What every beginner absolutely needs to know about the journey ahead.

www.thinkful.com



무료 코딩학습사이트에서 코딩을 몇 개월 배우고, 
이것도 조금 배우고, 저것도 조금 배우다가 결국 거의 모든 온라인 강좌는 다 들어본 정도가 되어도 
마지막에 개발자로 취업하기엔 어려움이 있다. 


1단계: 강의로 학습하며 솟아나는 자신감

코딩은 누구나 배워야 한다고 요즘 얘기합니다. 
덕분에 코딩에 대한 진입장벽도 많이 낮아졌고, 생각보다 그렇게 어렵지 않다는 사실을 보여주기도 합니다. 
codecademy 나 생활코딩 같은 웹사이트에서 얻을 수 있는 많은 학습자료 덕분에 
우리 모두가 코딩을 배울 수 있다 수준이 아니라 개발자가 될 수 있다는 자신감을 얻울 수 있게 되었죠. 
결국 문제는 학습에 대한 공포가 아니라 지나친 수준의 기대와 환상이 되어버린 것입니다. 

입문자를 위한 자료들은 대부분 무시무시한 변수와 조건문을 거쳐 기초단계의 프로그래밍 문법을 학습하도록 잘 지도해줍니다. 
마치 어린이가 횡단보도를 잘 지나가도록 가르쳐주는 것과 같다랄까요? 
마치 게임처럼 하나를 배우면 자신감은 하늘을 치솟게 됩니다. 다 할 수 있을겉만 같아. 난 이미 개발자라고!

하지만 한여름 밤의 꿈과 같은 단계에 있다고 할 수 있습니다. 마치 반환점을 돈 것 같이 느껴지지만, 
먼 여행길에서 아주 조금 와 있는 것에 불과합니다. 시작에 불과하다구요...



개발 학습의 일반적인 4단계을 봅시다.

1. 강의로 학습하며 자신감이 솟아나는 단계 (The Hand Holding Honeymoon) : 재미와 즐거움으로 가득찬 단계입니다. 조금 어려워는 보이지만, 자료가 잘 정리되어 있고 지원이 빵빵하기에 여러분은 잘 해낼 수 있을 겁니다. 기본적인 문법을 배우고 높은 수준의 성취도를 느낄 것입니다.

2. 혼돈의 카오스 (The Cliff of Confusion) : 강의를 다 봤고 강좌를 모두 수료하고 난 뒤에 느끼는 단계입니다. 생각보다 모든 것이 어렵고 고통스럽다는 사실을 자각하게 됩니다. 아직 스스로 무언가를 할 수 있는 단계가 아니라고 생각이 들 것입니다. 계속 디버깅을 하고 있고 여러분 스스로 무언가를 위해서 어찌저찌 시도해보고 있긴 하지만, 다른 사람들에게 어떻게 질문해야 잘 물어봤다고 할 수 있을 지 명확하지 않은 단계입니다.

3. 절망 한 가운데에 놓임 (The Desert of Despair) : 아주 지리밀렬하고 지루한 단계입니다. 새로운 길 하나하나가 옳은 것처럼 보이지만 나 자신은 원을 그리듯 제자리 걸음입니다. 어려움을 이겨낼 수 있는 자료를 찾아 계속 돌아다닙니다. 마치 사막에서 어디에 홀린 마냥, 사람들의 열광 속에서 신기루에 빠지지 않도록 조심하세요. 자칫하다간 잘못된 길에 빠지고 말 것입니다.

4. 놀라운 성장 (The Upswing of Awesome) : 사막 속에서 결국 길을 찾아내고야 말았습니다. 어떻게 개발해야 하는 지에 대한 이해가 생겼을 때입니다.

여전히 여러분의 코드는 여전히 어디엔가 갇혀진 느낌이고 깨지기가 쉽습니다. 다만, 여러분은 아무튼 작동한다는 사실에서 자신감을 얻게 되지요. 유용한 몇몇 패턴에 익숙해지고, 친구들은 여러분이 만든 화면이 엄청 대단하다고 느끼구요. 하지만 코드를 정작 까 보는 것에 여전히 두려워하고, 자신있게 내세울 수 있는 수준의 코드(production-ready)를 짜는 방법에 대해 결국 찾지 못한 상태입니다. 어떻게 해야 실제 취업이 요구하는 수준까지의 기술 격차(gap)을 줄일 수 있을까요.


2단계: 혼돈의 카오스
여러분은 지금 1단계에 있습니다. 강의를 통해 자신감을 얻고 있는 단계죠. 코딩 문제들도 하나씩 풀고, 뱃지도 얻고 여러분의 자신감은 무럭무럭 자라나고 있습니다. 나쁘지 않은데, 왜 코딩 배우기가 어렵다고 저렇게 난리지? 이렇게 생각하신다면 여러분은 자신감의 끝을 달리시고 있는 겁니다. 조심하셔야 합니다.. 이제 많은 초심자들을 좌절시킨 절벽으로 떨어지고 있으니까요. 이 절벽에 다다르는 순간은 바로 아무런 힌트나 예제 코드, 브라우저 상에서 돌아가던 학습용 에디터가 사라지고, 그 대신 텍스트 편집기를 열어서 처음부터 모든 것을 다시 짜야할 때 벌어집니다.
 

튜토리얼을 따라하면서 조금 더 버틸 수 있을 지도 모르겠습니다. 하지만 땅을 포기하지 않는 자가 하늘에 다다를 수는 없는 법이죠. 아무 것도 없는 텍스트 파일 하나에서 말 그대로 '마법'을 일으켜야만 할 지도 모릅니다 (...) 이렇게 느껴지신다면 여러분은 2단계에 도달한 셈이 됩니다. 자신감은 땅으로 꺼지고, 혼돈의 카오스를 맛보게 되는 것이지요.

아무튼 계속 코딩을 하긴 합니다. 스스로 자신만의 길을 만들고 대충 돌아가기는 하는데 뭔가 빠진 것 같은 느낌입니다. 버그 잡으려고 고생하다보면, 스타쉽 트루퍼스라는 영화가 마치 상냥하고 친절한 것처럼 느껴집니다. 구글링 어쩌다 한 번 잘해서 버그 하나 잡았지만, 할 수 있는 게 겨우 검색 하나 두들겨 보는 것 뿐이라는 생각에 자신감은 땅으로 떨어집니다.

사실 이 단계는 교육자로서나 산업에 종사하고 있는 사람들로서나 모두에게 고통을 줍니다. 우리는 개발이 모두에게 딱 맞지는 않더라도, 공부하시는 여러분만큼은 꼭 이겨내셨으면 좋겠어요. 왜냐하면 정말 안될 것 같은 경우도 엄청난 성공사례가 되기도 하기 때문이거든요.

모든 교육기간이 끝났습니다. 절벽에서 밀려나 이제는 정말로 날아야만 할 때, 가능성이 있는 친구들이 날개를 펴는 방법을 배우지 못한 채 좌절의 나락에서 맴돌고 있는 모습을 많이 보게 됩니다. 정말로 무서운 것은 아직 제대로 시작도 못해봤다는 것입니다. 혼돈의 카오스를 겪게 되는 2단계는 아직도 너무 초기 단계입니다. 정말 많은 수의 버그를 잡아보세요. 그 때 여러분은 반드시 2단계를 끝낼 수 있을 겁니다. 여러분은 아직 시작에 불과하십니다.

진정으로 개발자로써 커리어를 만들어나갈 준비가 된 사람들은, 이 혼돈의 카오스 단계에서 살아남는 것이 새로운 인생의 반환점이 됩니다. 개발에 올인해야지 하고 생각하는 것이지요. 많은 사람들은 여기서 떨어져 나갑니다. 하지만, 여러분은 이제 절망 한 가운데에 놓이게 될 것입니다.

학습 여정에 중요한 포인트 두 가지가 있어요.

 첫 번째 단계와 나머지 단계의 차이점이 뭐라고 생각하시나요? 왜 2단계가 1단계보다 더욱 끔찍하고 무시무시한가요? 이 차이를 이해한다면, 학습에 어려움을 겪는 것이 여러분 자기자신의 문제점이 아니라는 사실을 깨닫게 될 것입니다
 
 포인트 1: 학습 자료가 얼마나 풍부한가 (Resource Density)
   여러분을 코딩의 세계로 이끌어 줄 자료는 정말 수 없이 많이 있습니다. 구글에 영어로 "Learn to Code" 라고 검색해보세요. 정말 양질의 자료가 너무너무 많이 나옵니다. 솔직하게 말해서 정말 좋습니다. 이렇게나 코딩을 학습하기에 좋았던 적도 없었거든요.
   
   하지만 그 뒤의 단계로 갈 수록 학습 자료들이 정말 빠른 속도로 부족해집니다. 초심자에서 중급자로 넘어간 사람들은 쉽게 공감할 수 있을 것입니다. 여러분이 처음 코딩을 배워야겠다고 마음을 먹은 순간을 생각해보세요. 여러분이 다른 사람의 지도와 안내 없이 스스로 무언가를 만들다가 질문을 해야 하는 상황에 처음으로 놓였을 때를 생각해보세요. 학습 자료의 차이를 쉬이 실감할 수 있을 것입니다.

   학습자료는 소위 3단계에 진입하게 되는 시기, 즉 학습해야 하는 지식이 많아질 수록 급격하게 부족해집니다. 이것이 제가 3단계를 "좌절의 계곡" 이라고 이름을 붙인 이유입니다. 이 단계를 지나면 검색을 통해 필요한 것을 찾는 것이 습관이 되고, 기술 블로그나 컨퍼런스 발표자료와 같이 기술 자료를 학습하면서 업무를 할 수 있게 됩니다. 어떤 질문을 던져야 할 지를 이해할 수 있게 되는 것도 있겠습니다.

   아래의 도표는 각 단계마다 학습자료의 양이 어떻게 변화하냐를 보여주는 것입니다. 선이 두꺼울 수록 더 많은 자료가 있다는 것으로 이해하면 됩니다.


 포인트 2: 학습할 지식의 범위 (Scope of Knowledge)
    학습을 처음 시작할 때 알아야 하는 것은 사실 그리 많지 않습니다. 개발을 배우는 목적이 무엇이든, 어떠한 언어로 학습하든 for 반복문, 조건문과 같은 기본적인 프로그래밍 문법을 익히는 것은 너무 당연한 일입니다. 처음 시작할 때에는 뭔가 대단한 기초지식을 배우는 것이 아니기에 학습할 지식의 범위가 넓지는 않습니다.

    기초 단계에서 벗어나게 되면 여러분이 배워야 하는 지식의 범위가 엄청나게 넓어짐을 실감할 수 있을 것입니다. 그리고 배워야 하는 것들도 점점 어려워집니다. 에러를 이해해야 하고 언제 이 코드를 써야 하는 지 알아야 하고 어떻게 사용하는 지 알아야 합니다. 사실 질문에 명확한 답이 없다는 것이 차이점입니다. 혼돈의 카오스죠.

    이제 3단계로 갑니다. 지식의 범위는 더 넓어집니다. 여러분은 어떠한 툴을 사용할 지를 알고 이해해야 하구요, 어떤 언어를 배워야 하는 지도 알아야 하구요, CS지식도 있어야 하구요, 모듈화에 대해서도 알아야 하구요, 객체지향에 대해서도 알아야 하구요, 좋은 코드 스타일이 뭔지에 대해서도 고민해봐야 하구요, 어떻게 질문을 던져야 하는 지에 대해서도 배워야 하구요. (정말 몇 가지만 이야기한 것입니다.) 구글링을 해봐도 무슨 두더지 잡기 게임하는 것만 같고 모르는 내용에 압도되기 십상이고 대체 무슨 소리인지 모르겠지만 다 보기는 해야 할 것 같고 막 그렇습니다.


계속 성장하는 방법
여정은 정말 빡세보이고 힘들어보입니다. 솔직히 말하면 종종 그렇습니다. 중요한 것은 여러분이 어느 상태에 있는 지 아는 것입니다. 특히 여러분이 혼자 공부한다면 더욱이 그렇습니다. 하지만 꼭 그럴 필요는 없습니다. 대부분의 경우에 적용할 수 있는 팁들이 있기 때문이지요. 코딩을 배우는 것은 사람들이 생각하는 것만큼 쉽지는 않지만, 절망할 것처럼 그렇게 깊이 어려운 것도 아닙니다. 여기서는 올바른 방법으로 갈 수 있는 팁에 대해 설명해보도록 하겠습니다.

1단계에서 살아남는 방법
정말 많은 종류의 학습 컨텐츠가 있습니다. 코딩에 대해 쉽게 입문할 수 있도록 해줍니다. 두 가지 팁을 꼭 명심하도록 하세요.



1. 여러 다양한 컨텐츠로 시작해보세요. 어떻게 배우는 것이 여러분에게 딱 맞는 방법인지 학습하 수 있을 것이고, 어떤 프로젝트가 흥미로운 지 발견할 수도 있을 것입니다. Khan Academy의 챌린지나 생활코딩의 WEB 강좌, 또는 노마드 코더의 클론코딩, 커넥트재단의 부스트코스, 인프런 강좌, 스터디파이 등이 될 수 있을 것입니다. 처음 시작할 때는 열린 마음을 가지되, 무엇을 꼭 배워야 한다느니 하는 소리에는 신경쓰지 않으셔도 됩니다. 기초 단계에서는 어짜피 다 비슷하거든요.



2. 여러분과 잘 맞다고 생각드는 컨텐츠 하나를 골라보세요. 그리고 그 컨텐츠 하나에 집중하세요. 처음부터 끝까지 다 들어보세요. 기초 스크립트와 앱 등 모든 기본 지식을 끝까지 다 들어보시고, 스스로 만들어보는 연습을 하세요.



2단계에서 살아남는 방법
거의 대부분의 사람들이 2단계를 겪을 것입니다. 왜냐하면 개발자가 되는 방법은 직접 개발을 하는 것이기 때문이죠. 여러분은 튜토리얼을 해보면서 직접 자신이 만들었다고 생각할 지도 모릅니다. 하지만 튜토리얼 따위를 몰아내는 것은 아주 필수적인 일입니다. 튜토리얼은 처음에는 좋지만 이제 스스로 걸음마도 좀 해봐야죠. 그래야 진짜 세계를 볼 수 있습니다.



여러분 스스로 만들기 위한 세 가지 팁을 명심하도록 하세요.

1. 다른 사람들과 함께 하세요. 아무리 초보더라도 두 명이서 함께 페어를 할 때 불가능해 보이는 에러도 디버깅할 수 있답니다.

2. 다른 사람의 코드를 읽으세요. 좋은 패턴에 익숙해지도록 하세요. 다른 사람들이 어떠한 의도로 코드를 작성했는지 파악하려고 노력하세요. 책을 읽지 않고 소설가가 될 수 있나요? 자그마한 문제 하나하나에 귀를 기울이고, 다른 사람이 이를 어떻게 해결했는지 관심을 기울이도록 하세요.

3. 자그마한 것으로 시작하고 계속해서 만들어보세요. 미래에 내가 만들어 볼 큰 프로젝트에 관심 가질 수도 있겠습니다만, 지금은 당장 디버깅에 익숙해지고 자그마한 문제를 해결할 수 있는 능력을 길러야 합니다. 이 과정은 정말 필수적으로 하셔야 합니다.



3단계에서 살아남는 방법
디버깅에 익숙해지면, 여러분의 가장 큰 문제는 학습할 거리들이 아주 많아진다는 점입니다. 이걸 대체 언제 다 공부하고 있나요. 이 경우에 여러분은 자신만의 굳은 믿음과 올바른 길에 대한 전진이 필요한 때입니다. 가끔 사막에서 신기루가 나타나서 빨리 스킬을 얻을 수 있는 방법을 알려주겠노라고 여러분을 홀릴 수도 있겠습니다만, 여기에 속아넘어가면 정말 시간만 낭비하게 될 것입니다.



1. 분명한 목표를 가지세요. 무엇을 이루고 싶은가요? 목표가 없다면 관심이 있는 모든 것에 이리저리 기웃대다가 아무 것도 안 될 것입니다. 여유 부릴 시간이 있으면 공부를 하세요.

2. 분명한 길을 걸으세요. 여러분의 목표로 인도해줄 것이고, 그 곳이 맞다는 사실을 확신시켜 줄 것입니다. 각종 마케팅 슬로건에 속지 않고, 여러분 나름대로 깊이 파고들 수 있게 될 것입니다. 다양한 강좌 웹사이트나 소개자료집, 기술 책 앞에서 "이것이 나의 목표 달성에 있어 꼭 필요한 일인지" 판단할 수 있게 될 것입니다.

3. 집중하셔야 합니다. 여러분이 코딩에 관심이 있다는 것은 여러분은 아마 다른 모든 것에 관심이 있을 거라는 뜻입니다. 코딩이 어려워진다면 금방 질려 다른 거 하지 마시고 여기에 오로지 집중하도록 하세요.



여러분이 나름의 길을 찾고 여기에 오롯이 집중할 수 있을 때, 여러분은 몇 개월, 몇 년 동안 각종 열풍과 환상에 속아 넘어가지 않고 다음 단계로 넘어갈 수 있을 것입니다.



4단계에서 살아남는 방법
사실 여기가 제일 어려운 부분입니다. 앱을 개발할 수 있게 되었지만 정말 진정한 개발자가 되고 싶으실 것입니다. 이 과정을 지나고 취업에 다다르기 위해서는 다음의 과정을 거치셔야 합니다.



1. 모범 사례를 찾아 따라해보세요. 해결책과 베스트 프렉티스의 차이점에 대해 이해하실 수 있어야 합니다. 베스트 프렉티스, 즉 모범사레는 여러분이 스스로 하던 것과 어딘가 차이가 있을 것이구요. 실제 회사환경과 코드 수준차이가 있을 것입니다.

2. 여러분의 상황을 계속해서 점검해보세요. 여러분은 계속 중간중간에 모르는 내용으로 구멍 뚫린 것 때문에 미끄러진 경험이 있을 것입니다. 내가 알지도 몰랐던 지식들 때문이기도 하구요. 이것들을 점검하고 고쳐나가야만 합니다.

3. 하기 싫어했던 것을 공부하세요. 평소에 자주 다뤄지지는 않지만 회사에 업무를 수행하기 위해서는 매우 중요한 것들 말입니다. 테스트 하는 것이나 데이터 모델링, 구조 짜기, 배포하기 같은 것은 지루할 지 모르지만 좋은 개발자가 되기 위해서는 매우 중요한 것들입니다.



사실 제일 중요한 것은 피드백을 얻는 것입니다. 스스로 학습하는 것이 최고라고 믿는 학생들은 읽기 쉬운 코드, 모듈화가 잘 된 코드, 유지보수 하기 쉬운 코드와 같이 업무 환경에서 중요한 요소들에 대한 고민을 해본 적이 없을 것입니다. 여러분 스스로의 환경에 계속 도전할 수 있는 누군가와 함께 일해 볼 필요가 있습니다. 계속 난처한 질문을 던져달라고 요구하시고, 이를 통해 여러분의 부족한 지식을 메꿔두세요.

 

 

https://brunch.co.kr/@jypthemiracle/14

반응형

+ Recent posts