본문 바로가기
개발자가 되기 위한 기본 개념 쌓아가기

[프로그래밍] 개발자가 알아야할 기본 개념쌓기

by hyun's life_developer 2020. 4. 1.

안녕하세요 초보개발자 시아아빠입니다.

 

개발자가 꿈이고 개발자를 하고 싶은데 웹 만들기, 앱 만들기 강좌를 들어도 강의 내용을 ctrl + c, ctrl + v 하는 수준이신 분들도 많으실거에요. 저가 그랬습니다. 컴퓨터에 컴자도 모르는데다가 비전공인데 취업한게 용하다 봅니다.

 

우선 개발자에 대해 깊이 생각하고 계신 분이라면 알아야하는 기본 개념들이 많습니다. 또한 기본 개념을 알고 이해해야 더 많은 지식들을 습득할 수 있습니다.

 

오늘은 그 첫단추들을 하나하나 끼워나가보겠습니다.

 

첫번째 포스팅인데다가 저도 아직 누구를 가르칠 만한 수준이 아니다보니 제가 지금까지 해온 내용 위주 제가 이해하기 쉬웠던 내용들을 되짚어보겠습니다.

 

우선 프로그래밍에 대해 아셔야겠습니다.

 

I프로그래밍

프로그래밍이란 컴퓨터에게 명령, 또는 실행을 요구하는 일종의 커뮤니케이션입니다.

쉽게말해 컴퓨터는 단순 기계일 뿐이고, 그 기계가 무엇을 실행할지에 대한 정의가 필요합니다.

다시말해서 프로그래밍에 앞서 문제(요구사항)를 명확히 이해한 후에 적절한 문제 해결 방안의 정의가 필요합니다.

 

이때 요구되는 것이 문제 해결 능력입니다. 문제 해결 능력이라고 해서 알고리즘을 말하는 것은 아니지만 비슷한 맥락이라고 생각됩니다. 이러한 능력은 경력으로만 키워지는 능력이 아닙니다.  프로그래밍의 선구자들은 모두 수학자였습니다. 그렇기 때문에 소프트웨어의 각종 용어, 기호, 원리는 수학에서 유래한 것이 많은데 이와 같은 부분으로 수학적, 논리적 사고가 큰 영향이 미친다 생각됩니다.

하지만 그렇다고해서 수학을 잘하는 사람은 반드시 우수하고 못 하는 사람은 우수하지 못하지는 않습니다. 

내가 수학을 못해서 개발을 못하겠다고 개발 시작 전부터 마음을 먹는다면 일찌감치 다른 길을 걸으실 것을 추천드립니다. 앞으로도 계속 배워나가야만 하는 개발자의 특성상 맞지 않다고 생각됩니다.

 

 

대부분의 문제(요구사항)는 복잡하기도 하고 또한 명확한 해답이 있지 않을 수도 있습니다. 따라서 문제를 명확히 이해하는 것이 우선되어야 하며 복잡함을 단순하게 분해하고 자료를 정리하고 구분해야하며 순서에 맞게 행위를 배열해야 합니다.

 

즉, 프로그래밍이란 0과 1밖에 알지 못하는 기계가 실행할 수 있을 정도로 정확하고 상세하게 요구사항을 설명하는 작업이며 그 결과물이 바로 코드라는 것입니다. (계산기가 혼자서 우리의 머리속을 읽고 계산을 해주지 않습니다. 계산기를 두드려야 하며 이를 프로그래밍이라 할 수 있고, 그 계산기를 어떤식으로 어떤 수와 어떤 사칙연산을 넣을 것인지 입력하고 결과를 이끌어내기 까지가 코드 작성이라고 볼 수 있겠습니다.)

 

 

하지만 이 코드 작성에서 어려움이 생기는데요.  컴퓨터에게 단순히 이렇게 저렇게 요구하면 되겠지라고만 생각하시는 분들도 꽤 있을겁니다. 명확성을 더해주어야 하는데요. 컴퓨터에게 있어서 1 + 2 또는 3 * 100**845/751 이런식의 요구사항은 그 어느 숫자 어느 연산이 오더라도 어렵지 않습니다. 하지만 "1 + 1에 있어서 컴퓨터에게 1과 1이 '사랑'을 한다면 3, 아니라면 1이라는 결과를 줘"라고 했을때 컴퓨터에게는 '사랑'이라는 기준이 불명확한 기준이기때문에 에러를 낼 것 입니다. 컴퓨터에게 있어 상대적인 개념만으로는 내가 원하는 결과를 얻을 수 없습니다. 보다 명확하게  1 ㅁ 1 에 ㅁ가 'love'일때 3, 'love'가 아닐때 1이라는 결과를 줘 등 명확한 기준을 주어야합니다.

 

이와같이 프로그래밍을 하려면 컴퓨터의 관점으로 생각하고 이해해야합니다. 이에 수학적, 논리적 사고가 필요하게 되기 때문에 위에서 말한 것과 같이 수학적, 논리적 사고를 잘 하는 사람에게 있어서 유리한 점은 사실입니다.

 

 

컴퓨터적 사고란 어떤 것인지 추후에 포스팅하여 링크하겠습니다. 

 

 

I기본 개념과 동작 원리 이해

개발자는 내가 원하는 요구사항(고객이 원하는 요구사항)에 맞게 문제를 해결하기 위한 방안을 고안하고 이것을 문법에 맞게 코드로 구현해야합니다.  이를 위해서는 당연하게 프로그래밍 언어의 기본 개념과 동작 원리를 정확히 이해하는 것이 중요합니다.

단순히 내 주업은 장사이며 장사를 위해 단순 복사 & 붙여넣기 해가며 만든 1회성 어플을 만들 것이라면 차라리 돈 주고 업체에 의뢰하는 것을 추천합니다. (완성도라던지 디자인이던지 개발 후에 장사하면서 다가오는 수익이던지 모든 면에서 훨씬 나을 것이다.)

기본 개념과 동작 원리를 알아야 남의 코드가 왜 그렇게 짜여있는지도 이해할 수 있고 어떤 방식으로 문제를 해결하려고 노력하였으며, 나같은 경우에는 저렇게 해결할 것이다 라고 의견을 내며 발전해 나아갈 수 있습니다. 개발자에게 있어서 필수적인 요소이며 발전을 위한 노력도 가능합니다.

 

개발자를 이제 막 준비하는 분들 중 저와 같은 분들은 '그래, 이걸 알아야하고 기초 개념을 이해할 줄 알아야하지. 근데 어떻게 알 수 있지?'라며 막막해하고 방향을 못 잡다가 포기하시는 분들 분명이 많으실 겁니다. 저또한 포기 직전이였으니까요.

 

그런 분들을 위해 사이트 몇 개를 추천하겠습니다. (제가 강의영상을 올릴 수준이 아니라. 추후에 가르칠 수준이 된다면 올리겠습니다.)

 

1. 생활코딩 (https://opentutorials.org/course/1) 

  이제 막 입문하는 분들에게 대표적인 코딩교육 사이트입니다. 실제로 네이버에 코딩교육사이트 검색시 가장 먼저 검색되는 등 유명한 사이트이며 모두 무료이기 때문에 거부감이 들지 않습니다.

 

 

생활코딩

 

2. 소프트웨어야 놀자 (https://www.playsw.or.kr/main)

아이들 눈 높이에 맞춘 코딩교육 사이트입니다. 코딩교육의 중요성이 점점 높아지면서 아이들이 들을만한 레벨의 사이트가 제작되었습니다. 저도 어떤 방식으로 되어 있을지 궁궁하여 이용해보았습니다. 아이들의 눈높이에 맞췄다는게 한번에 이해될 정도로 간단한 게임을 이용하여 이해도를 높이는 등 쉽게 배울 수 있습니다. 이또한 무료사이트입니다.

 

3. Code.org (https://code.org/)

애플과 마이크로소프트가 후원하며 전세계 학생들 500만명 이상의 학생들이 교육에 참가했고 오바마 대통령이 영상 인사말을 통해 캠페인 참여를 격려할 정도입니다. 미국의 대표적인 코딩사이트입니다. 아래사진을 보시다시피 아직 한글번역이 완벽하지는 않습니다. 이 또한 무료사이트입니다.

댓글