코딩 배우기: 여정을 위한 지혜와 도구
게시 됨: 2022-03-11프로그래밍은 훌륭한 기술입니다. 이것은 개인적으로나 직업적으로나 매우 보람 있는 일이며, 건설하고 땜질하고 발명할 수 있는 능력을 제공합니다. 이는 상당한 급여, 원하는 시간과 장소에서 일할 수 있는 자유, 또는 위의 모든 것과 같은 큰 혜택과 함께 모든 종류의 경력 경로에 대한 문을 열 수 있습니다.
다양한 배경을 가진 점점 더 많은 사람들이 코딩을 배우기로 결정한 것은 놀라운 일이 아닙니다. 그러나 이 작업을 수행하는 모든 사람은 곧 불편한 현실에 직면하게 됩니다. 프로그래밍을 배우는 것은 어렵다는 것입니다.
복잡하고 혼란스럽습니다. 처음에는 많은 코딩이 이해가 되지 않습니다. 예상과 달리 "이해할 수 없다"는 느낌은 여정이 진행되는 동안 계속 줄어들지 않아 한 번 밝은 눈을 가진 초보자가 희망이 없고 길을 잃고 포기할 준비가 된 것처럼 느낄 수 있습니다.
이야기의 교훈은 다음과 같습니다. 준비하십시오. 프로그래머 천국으로 가는 길은 멀고 처음부터 올바른 마음가짐 없이는 금방 매력을 잃을 수 있습니다.
이 기사에서는 여정에서 무엇을 기대해야 하는지, 가장 잘 진행하는 방법, 그 과정에서 도움이 될 수 있는 도구 및 리소스에 대한 지침을 제공하려고 합니다.
뭘 기대 할까
어쩌면 당연할 수도 있지만, 가장 먼저 머리를 감아야 할 것은 프로그래밍의 핵심이 기술 분야라는 것입니다. 가장 초기에 배우는 기술은 많은 "정확함"과 "정확함"을 필요로 하며 모서리를 자르려고 하면 아무 소용이 없습니다. 절차 논리와 같이 수학처럼 느껴질 수 있는 많은 것뿐만 아니라 최소한 약간의 수학도 배워야 합니다.
요점은 프로그래밍의 기초를 배우려면 많은 집중과 연습이 필요하다는 것입니다. 그러나 기술이 있는 사람과 그렇지 않은 사람을 막론하고 셀 수 없이 많은 사람들이 여러분보다 먼저 이 여정을 마쳤으므로 낙담하지 마십시오. 앞으로 살펴보겠지만, 귀하와 같은 사람들이 이 과정을 최대한 쉽게 할 수 있도록 도와주는 풍부한 리소스가 있습니다.
프로그래밍을 위한 학습 곡선은 처음에 가장 가파르다. 프로그래밍 언어의 다양한 부분(표현식, 변수, 데이터 유형, 연산자, 루프, 조건문, 함수, 클래스)과 컴퓨터의 코드가 사용할 시간 및 메모리 공간(복잡성). 처음에는 작동하지 않는 많은 코드를 작성하게 되므로 모든 프로그래머의 존재에 대한 골칫거리인 디버깅에 동의해야 합니다.
코드 작성 방법을 배운 후에는 강력한 코드 작성 방법을 배울 수 있습니다. 코드를 효율적이고 읽고 이해하기 쉽고 확장하기 쉽게 만드는 것은 예술이며 지속적으로 발전하고 있습니다. 다양한 소프트웨어 철학을 탐구하기 시작할 수 있으며 단순히 "코더"에서 "소프트웨어 설계자"가 될 수 있습니다. 이 또한 많은 시간과 연습이 필요한 과정이지만, 더 잘 할수록 더 많은 기회를 찾을 수 있을 것입니다.
코딩을 배우는 방법
프로그래밍 낙원으로 가는 여정은 사람마다 다르지만 모든 여행자가 혜택을 받을 수 있는 몇 가지 좋은 원칙이 있습니다. 이제 막 시작하는 경우 권장하는 기본 프로세스는 다음과 같습니다.
1. 목적지 선택: 언어 선택, 모든 언어 선택
코딩 학습에 대해 진지하게 생각하고 있다면 선택한 언어는 그다지 중요하지 않습니다. 대부분의 인기 있는 프로그래밍 언어는 동일한 기본 개념을 공유하며, 모국어 프로그래밍에 익숙해지면 처음보다 새로운 언어를 선택하는 것이 더 쉬울 것입니다. 대학 학위 프로그램 또는 이와 유사한 프로그램을 통해 학습하는 경우 귀하의 언어가 선택될 것입니다.
어쨌든 장기적으로 무엇을 하고 싶은지 정확히 알지 못한다면 학습 용이성, 습득한 지식의 다양성, 풍부한 장기 직업 간의 균형을 유지하는 5개 언어만 고려해볼 것을 권장합니다. 잠재 고객: Ruby , JavaScript , Python , C 및 Java .
다음은 결정에 도움이 되는 각각에 대한 몇 가지 일반적인 참고 사항입니다.
통역 언어
해석 언어는 시작하기가 더 쉽습니다 . 소스 코드가 작성되는 즉시 실행할 수 있기 때문입니다. 대조적으로, 컴파일된 언어는 코드 작성과 실행 사이에 추가 단계가 필요합니다.
결과적으로 인터프리터 언어 는 더 빠른 코딩을 허용 하지만 컴퓨터 리소스를 효율적으로 사용하지 않으며 버그가 감지되지 않고 넘어가기 쉽습니다 . 성능이 우선시되지 않는 애플리케이션에 가장 적합합니다. 이러한 언어는 웹 개발에 매우 인기가 있습니다. 사실, 그 중 하나인 JavaScript는 웹 브라우저에서 직접 실행할 수 있는 유일한 언어로, 가장 수익성 있는 언어 중 하나로 빠르게 부상하는 데 기여했습니다.
언어 | 장점 | 단점 | 일반적으로 사용되는 |
루비 |
|
|
|
자바스크립트 |
|
|
|
파이썬 |
|
|
|
컴파일된 언어
코드가 컴파일 되면 실행되기 전에 사람이 읽을 수 있는 코드에서 최적화된 기계 코드로 변환됩니다. 결과는 해석된 언어보다 훨씬 빠르고 효율적으로 실행 됩니다. 이 작업을 수행하는 컴파일러는 작업의 일부로 코딩된 모든 것이 "이치에 맞는지" 확인해야 하며 결과적으로 해석 언어가 취약한 많은 유형의 버그를 식별하고 예방할 수 있습니다 .
이러한 이유로 이러한 언어에서는 실수나 잘못된 코드를 피하기가 더 어렵습니다. 그들은 여러분이 "내부에서" 실제로 무슨 일이 일어나고 있는지 더 깊이 이해하도록 강요할 것이며 컴퓨터가 실제로 어떻게 작동하는지에 대해 훨씬 더 많이 배우게 될 것 입니다. 가격은 이러한 언어가 더 노동 집약적 이며 일반적으로 초보자 가 배우기 더 어렵다는 것 입니다.
컴파일된 언어는 제한된 리소스 제한이 있는 하드웨어에서 실행될 수 있는 임베디드 응용 프로그램과 작은 버그라도 큰 피해를 줄 수 있는 크고 복잡한 응용 프로그램을 포함하여 성능과 안정성이 필요한 응용 프로그램에 사용됩니다.
언어 | 장점 | 단점 | 일반적으로 사용되는 |
씨 |
|
|
|
자바 |
|
|
|
HTML 및 CSS: 프로그래밍 언어 아님
존재했던 거의 모든 웹페이지에 사용된 HTML과 CSS는 프로그래밍 언어가 아닙니다 . 그것들은 어떻게 보여야 하고 무엇을 포함해야 하는지 정의하는 데 사용되는 표현 언어이지만 어떻게 행동해야 하는지는 정의하지 않습니다. 그럼에도 불구하고, 그것들은 선택하기가 훨씬 쉽고 올바르게 입력하는 방법을 가르쳐주기 때문에 시작하기에 좋은 곳일 수 있습니다. 또한 웹 개발을 계획하고 있다면 어쨌든 언젠가는 배워야 할 것입니다.
2. 작게 시작하라
학습에는 시간이 걸리고 흡수할 내용이 많습니다. 첫날에 완전한 애플리케이션을 빌드하려고 하면 제대로 작동하지 않습니다. 좌절하지 않으려면 작고 간단한 문제를 해결하는 것부터 시작하여 점차 나아지십시오.
예를 들어, 전통적으로 새로운 언어를 배울 때 작성되는 첫 번째 프로그램은 단순히 "Hello World"라는 단어를 화면에 출력하는 "Hello World" 프로그램입니다. 대부분의 언어에서 더 간단한 프로그램을 작성하는 것은 거의 불가능하며 이 프로그램은 실제로 거의 사용되지 않습니다. 그러나 여전히 언어의 기본적인 부분이 많이 포함되어 있으므로 언어를 입력하는 방법을 소개하는 데 적합합니다.
여기에서 일부 숫자를 더하거나 빼는 것을 작성한 다음 사용자로부터 입력을 받는 것을 작성할 수 있습니다. 그런 다음 결정을 내리는 방법인 조건문과 반복적인 작업을 수행하는 루프에 대해 배울 수 있습니다. 머지 않아 첫 번째 개체를 구축할 준비가 될 것이며, 그 시점에서 완전한 애플리케이션 구축을 실험할 수 있습니다.
3. 인내심을 가지세요
프로그래밍의 핵심 개념은 상당히 어려울 수 있습니다. 컴퓨터가 더 깊은 수준에서 어떻게 작동하는지 이미 알지 못한다면 그들 중 다수는 전혀 직관적이지 않습니다.

예를 들어, 처음 시작할 때 디버깅이 짜증나는 과정이라는 것을 알게 되었습니다. 프로그래밍처럼 느껴지지 않았습니다. 멋진 새 기능을 수행하는 새 코드를 작성하는 대신, "이번에는 어떻게 해서 짰지?" 머리를 긁적이며 포기할 준비가 되었습니다. 결국 나는 어딘가에 하나의 세미콜론을 남기거나 공백 대신 탭을 사용했다는 것을 알게 되었고, 내 코드가 다시 작동할 때쯤이면 하루가 끝날 것입니다. 나는 완전히 바보처럼 느껴질 것입니다. 그것은 시간 낭비처럼 느껴질 것입니다.
이런 종류의 일이 당신에게 일어날 것이고, 그것은 당신을 완전히 미치게 할 것입니다. 따라서 성공의 열쇠 중 하나는 다음과 같습니다 . 인내심을 갖고 자신을 진정시키십시오 . 이 주제에 대한 최고의 조언 중 일부는 목표가 아닌 과정에 집중할 것을 권장합니다. 궁극적인 목표("6월 말까지 웹사이트를 만들고 싶다")에 집중하면 낙심하고 실패자처럼 느껴질 것입니다. 진행하는 데 시간이 걸리는 만큼 시간을 들이면 더 성공할 수 있습니다.
4. 연습 연습 연습
모든 기술이 그렇듯이 잘하는 것은 연습에 달려 있습니다. 일을 하는 방법을 배우는 것만큼 좋은 것은 없습니다! 일주일에 몇 시간 정도만 시간을 내어 꾸준히 연습하다 보면 언젠가는 프로그래밍 방법을 알게 될 것입니다. 결국, 당신은 사물에 대한 직관력을 개발할 것이며, 처음에는 하루 종일 걸리던 일(예: 버그 추적)이 이제는 몇 초 밖에 걸리지 않을 수 있습니다.
프로그래밍의 기본을 어느 정도 배웠다고 느낄 때 연습을 하는 가장 좋은 방법은 첫 번째 프로젝트를 시작하는 것입니다. 할 일 목록이나 계산기(다시 작게 시작)와 같이 만들고 싶은 간단한 응용 프로그램을 생각하고 시도해 보십시오. 이를 통해 건축 및 디자인 문제를 해결하는 방법을 배우고 서로 다른 부분을 만들어 전체 작업에 맞도록 합니다. 이것들은 진정으로 스스로를 프로그래머라고 부를 수 있게 해주는 필수 기술입니다.
자원
목표, 학습 스타일 및 수단에 따라 여정에 따라 다른 리소스를 사용할 수 있습니다. 귀하에게 적합한 방법을 결정하는 데 도움이 되도록 보다 구조화된 학습에서 덜 구조화된 학습에 이르기까지 사용할 수 있는 몇 가지 도구를 대략적으로 요약해 보겠습니다.
구조화된 학습
이것은 강사, 숙제, 시험, 성적, 마감일 및 학업을 최우선 순위로 두지 않을 경우 실제 결과를 제공하는 옵션 범주입니다. 이것들은 수업을 듣거나 프로그램에서 빠져야 하는 옵션입니다.
정식 대학 학위
가장 비용이 많이 들지만 많은 사람들에게 가장 가치 있는 선택인 정규 대학 학위는 프로그래밍 및 컴퓨터 기술 분야에서 성공적인 경력을 쌓기 위한 최상의 토대를 제공합니다. 학위의 형태로 성취에 대한 인정을 받게 됩니다(전문 시장에 진입할 때 주요 단계). 그러나 더 중요한 것은 컴퓨터에 대한 모든 것에 대한 깊고 철저한 이해와 함께 진정한 최고 수준의 효과적인 소프트웨어를 작성하는 능력이 이를 반영한다는 것입니다.
다음은 괜찮은 대학 프로그램에서 심층적으로 배울 것으로 기대할 수 있는 몇 가지 사항이며 다른 곳에서 철저한 교육을 찾기는 더 어려울 수 있습니다.
- 전기 회로 - 거의 모든 컴퓨터 하드웨어의 기초가 되는 기본 물리학.
- 디지털 논리 회로 - 회로를 사용하여 진리와 논리 구성을 표현하는 방법.
- 마이크로프로세서 및 컴퓨터 시스템 - 논리 회로를 결합하여 프로그래밍 가능한 컴퓨팅 기계를 만드는 방법. 그 모든 작은 금속 핀과 인쇄된 전선에 무슨 일이 일어나고 있습니까?
- 운영 체제 - 컴퓨터를 프로그래밍하여 자체적으로 관리, 구성 및 보호하고 여러 응용 프로그램을 안전하게 작동할 수 있도록 하는 방법입니다.
- 데이터베이스 - 손실, 손상 또는 검색 불가능 없이 많은 양의 데이터를 저장 및 복사하는 방법.
- 네트워크 - 서로 다르고 관련이 없는 컴퓨터 시스템이 서로 통신할 수 있는 방법.
- 고등 수학 - 미적분 및 선형 대수학 포함. 고급 또는 최첨단 분야의 모든 경력에 필수적입니다.
- 신호 처리 - 아날로그에서 디지털 세계로, 또는 그 반대로의 경계를 넘는 방법.
- 수치적 방법 - 실제 문제가 컴퓨터에 딱 들어맞지 않을 때 사용합니다.
컴퓨터 과학 및 공학 학교는 당신의 엉덩이를 걷어차고 당신은 그것을 완료하기 위해 자신을 희생하고 헌신해야 할 것입니다. 그러나 보상은 그만한 가치가 있습니다. 나는 학위를 취득하기 위해 고군분투했지만 학위를 받은 날은 내 인생에서 가장 자랑스러운 날 중 하나로 남아 있습니다.
부트캠프
소위 "부트캠프" 프로그램은 정규 학위를 취득할 시간이나 자원이 없지만 열심히 일하고 최소한 소프트웨어 개발 경력을 시작하는 데 필요한 최소한의 지식을 배우려는 사람들의 요구를 충족시키기 위해 등장했습니다. 비용과 필수 약정 모두에서 공식 학위와 아래에서 논의되는 자기 주도적 옵션 사이에 속합니다.
부트캠프는 일반적으로 8주에서 12주간의 집중적인 연구를 포함하며 비용은 약 US$10,000입니다. 그들은 짧은 시간에 많은 자료를 다루며, 그 동안 대부분의 다른 목표를 희생해야 합니다. 그러나 그들은 실제 소프트웨어 개발을 준비하고 프로그래밍 경력에 대한 빠른 길을 안내할 것을 약속합니다. 많은 부트캠프는 경력 기간에 절정에 이르거나 졸업 후 곧 급여를 받는 직장에 배치하려고 시도합니다.
부트캠프는 비교적 최근에 생겨난 폭발적인 현상입니다. 따라서 여전히 성공률을 측정하기가 어렵고 많은 사람들이 아직 졸업생을 취업에 배치한 입증된 실적을 개발하지 못했습니다. 즉, 이 급성장하는 새로운 산업이 계속 성장함에 따라 사용 가능한 프로그램이 더 좋아질 것으로 기대할 수 있습니다. 신중하게 조사하는 한 이것이 귀하에게 완벽한 옵션임을 알 수 있습니다.
대부분의 부트캠프는 지역 프로그램이므로 귀하의 마을에서 사용할 수 있는 것이 무엇인지 확인해야 합니다. 대도시에 살고 있다면 이 목록이나 이 목록에서 원하는 것을 찾을 수 있을 것입니다.
반구조적 학습
구조 및 지침 요소를 가장 잘 활용하지만 정식 학위나 부트캠프 프로그램에 참여할 시간이나 자원이 없는 사람들을 위해 점점 더 많은 리소스가 제공되고 있습니다. 이러한 옵션은 일반적으로 완전히 온라인으로 제공되며 대부분은 완전 무료입니다! 이러한 서비스에 대한 높은 수요가 명백해짐에 따라 이러한 도구는 정교함과 제공되는 가치 면에서 빠르게 성장했습니다. 소프트웨어 를 통한 소프트웨어 학습 및 교육에는 분명한 이점이 있기 때문에 소프트웨어 개발 과정은 자연스럽게 이러한 진화의 많은 부분을 주도했습니다.
대규모 공개 온라인 과정(MOOC)
MOOC는 놀라운 자원이며 양질의 저렴한 교육을 위한 경쟁의 장을 평준화하는 데 큰 진전을 이루고 있습니다. 그들은 세계 최고의 정규 대학 수업의 구조와 지침의 대부분을 제공하지만 인터넷에 연결되어 있는 모든 사람이 어디서나 온라인으로 사용할 수 있습니다. 많은 인기 있는 MOOC도 완전히 무료 입니다. 추가 비용(및 공부에 대한 약속)을 지불하면 대학 학점에 해당하는 많은 수업에서 정식 학점을 얻을 수도 있습니다.
세계 유수의 대학 교수들이 강의하는 과정이 있는 일류 MOOC 플랫폼이 많이 있으며, 전 세계에 있는 당신과 당신의 급우들이 서로 배울 수 있도록 커뮤니티 플랫폼이 있습니다. 다음은 가장 잘 알려진 제공업체입니다.
- 코세라
- 에드엑스
- 유다시티
광고에서 알 수 있듯이 이러한 과정은 대학 수준의 과정을 제공하므로 이 과정을 이수하기 위해 열심히 준비하는 것이 좋습니다!
가이드 튜토리얼 웹사이트
구조와 지침은 마음에 들지만 기한이 마음에 들지 않는다면 다양한 전달 방법을 통해 자동화된 단계별 교육을 제공하는 훌륭한 온라인 플랫폼이 많이 있습니다. 일부는 비디오 자습서로, 일부는 텍스트로 구동됩니다. 대부분은 브라우저에서 연습할 수 있는 대화형 코드 편집기를 포함합니다. 매일 30분 연습이든 주말에 10시간 마라톤이든 자신의 속도에 맞춰 학습할 수 있는 유연성을 제공합니다.
이러한 플랫폼 중 대부분은 모든 콘텐츠에 액세스하기 위해 유료 구독이 필요하지만 대부분은 무료 평가판을 제공하므로 즉시 시작하고 적합한지 스스로 결정할 수 있습니다.
- 칸 아카데미
- 유데미
- 코드아카데미
- 코드 어벤져스
- 코드스쿨
- 나무 위의 집
- 린다
- Pluralsight
이것은 단지 짧은 목록일 뿐이므로 주변을 검색하고 그 밖에 무엇이 있는지 확인하십시오!
비구조화 학습
구조화된 수업의 압박 없이 자유 시간에 자신의 방법을 찾거나 지식을 향상시키려는 사람들을 위해 다음 도구는 자기 주도적 접근 방식을 제공합니다. 위의 접근 방식 중 하나를 선택하더라도 학습을 보완하거나 연습을 위한 플랫폼을 제공하는 데 도움이 되는 많은 리소스를 찾을 수 있습니다.
드릴 웹사이트
목표가 프로그래밍 문제 해결을 연습하는 것이라면 다시 한 번 인터넷이 해결되었습니다. 다음 사이트는 문제를 해결하고 솔루션을 즉시 등급을 매기고 다른 사용자의 솔루션과 스택 방식을 비교하기 위해 대화형 코딩 인터페이스와 함께 계속 확장되는 코딩 문제 세트를 제공합니다.
- Exercism.io
- 체크오
- 코드셰프
- 코드 평가
- 코드워
- 코디리티
- 해커랭크
비디오
수동적으로 프로그래밍을 배우는 것은 실용성이 제한되어 있지만 회의 사이 또는 저녁에 와인 한 잔과 함께 더 깊은 개념을 흡수하고 싶다면 이 강의 시리즈가 최고입니다. 이런 종류의 것이 마음에 들면 YouTube와 웹에서 사용할 수 있는 다른 항목을 확인하세요.
- MIT 오픈코스웨어
- 스탠포드 대학 강의 시리즈
서적
사용 가능한 모든 경이로운 기술에도 불구하고 많은 사람들에게 여전히 주제에 대해 깊이 이해하고 깊이 이해하기에 좋은 책만큼 좋은 것은 없습니다. 이런 식으로 배우는 것을 좋아한다면 Toptal의 Top Free Programming Books 목록을 확인하십시오.
마감 중
코딩을 배우는 것은 매우 개인적인 여정입니다. 모든 사람은 다른 자원과 다른 목표로 시작하고 그 과정에서 다양한 도전과 기회에 직면합니다. 다른 사람들이 무엇을 하고 있는지 또는 그들이 어떻게 그곳에 왔는지에 대해 걱정하지 마십시오. 숙련된 프로그래머라도 끊임없이 새로운 것을 배울 수 있기 때문에 여정 자체가 끝나지 않습니다.
그래서, 제 조언은 천천히, 그리고 여행을 즐기라는 것입니다! 탐험할 것이 많고 경이로운 세계가 여러분을 기다립니다. 천 마일의 여행은 한 걸음부터 시작됩니다. 여기 좋은 신발이 있습니다. 행운을 빕니다!