소프트웨어 개발을 하다가 부딪히는 거지 같은 상황들
·
프로그래밍
소프트웨어 개발이 아닌 다른 분야도 비슷하겠지만, 아래 사항들은 소프트웨어 공학을 완전히 무시하는 사항들이다.컴퓨터 공학과를 나오건, 안 나오건 관리자라면 알아야 하는데 왜 모를까? 소프트웨어 개발자가 아니라 일을 시키는 고객의 입장에서도 본인에게 손해가 되는 것들이니 알았으면 좋겠다. 1. 혹시 필요할 지도 모르니까 만들어 달라고 할 때2. 자기가 뭘 원하는지 모르면서 혹은 자기가 어떤 일을 하는지 정확히 알지 못하고 요구할 때 3. 업무 절차(특히 소프트웨어 생명주기)를 무시할 때4. 더 좋게 만들어줘도 싫다고 할 때5. 대전제를 지키지 않을 때혹시 필요할 지도 모르니까 만들어 달라고 할 때이건 한국이 심하거나 한국에만(혹은 일본도) 있을 것 같다.갑을관계가 없이 계약을 정상적으로 준수하는 국가에서 ..
윈도우 개발 설정
·
프로그래밍
winget 설치아마 대부분 설치되어 있겠지만 없다면 설치하자.터미널에서 winget 명령어를 실행하면 설치되어있는지 확인 가능하다.  WinGet을 사용하여 애플리케이션 설치 및 관리WinGet 명령줄 도구를 사용하면 개발자가 Windows 컴퓨터에서 애플리케이션을 검색, 설치, 업그레이드, 제거 및 구성할 수 있습니다.learn.microsoft.compowershell 7.x 설치윈도우 GUI 환경이 너무 잘 되어있기도 하고, CLI는 보통 리눅스에서 사용하기 때문에powershell 7.x 의 기능은 보통 자동완성만 쓰지만 그거라도 쓰려면 설치하자. Windows에 PowerShell 설치 - PowerShellWindows에서 PowerShell을 설치하는 방법에 대한 정보learn.micros..
컴퓨터 과학/공학 전공자 중에 왜 개발을 못하는 사람들이 있을까?
·
프로그래밍
컴퓨터 과학/공학은 이론 뿐만 아니라 구현도 중요하다.전공 수업, 서적은 이론 위주로 나오고, 시험도 이론 위주로 볼 수 밖에 없다.또한 대부분의 학생들이 프로그래밍 언어로 코딩하는 것을 대학에 와서 처음 할 테니 코딩에 익숙하지 않아 구현을 하기 싫을 것이다. 이론이 엄청 쉬운건 아니지만, 이론이 구현보다 훨씬 쉬운건 맞다.그런데 이론만 파도 수업을 잘 따라갈 수 있고, 시험도 잘 볼 수 있으니 구현을 아예 안하는 경우가 발생하고,구현을 해본 적도 없으니, 잘 못하게 되고, 이후에도 구현을 하기 싫어지는 악순환이 계속되게 되는 것이다. 본인만 못 하면 상관 없다.이런 사람들 중 학벌이 좋고, 학점이 좋은 사람들이 공공기관, 공기업, 대기업의 전산 담당자가 되어서 다른 사람들에게 업무지시를 하게 되었을 ..
'프로그래머의 길, 멘토에게 묻다'를 읽고
·
프로그래밍
책 전체적으로 문제가 있다.몇 년전에 읽었었는데, 오늘 읽고, 내일 신입 개발자한테 주려고 했는데, 주면 생각이 이상해질까봐 쓰레기통으로 넣는다.원제와 번역 제목의 간극원제는 'Apprenticeship Patterns'다. 직역하면 견습 패턴이다. 그래서 책 전체적으로 장인이 될 수 있는 방법들을 패턴이라는 이름을 붙여 소개한다.프로그래밍이 뭔지 모르는 사람이 글을 썼다프로그래머는 문제를 해결하는 사람이다. 그런데 이 책은 처음부터 끝까지 배우는 것에만 집중하고, 직급이 올라가도 새로운 기술을 배우는 것이 가장 중요하다고 한다. 하지만 새로운 기술은 그렇게 중요하지 않다. 이 책에는 자기 모순이 있다. '프로그래밍은 예술과 공학의 측면이 둘 다 있다. 이 중에 공학적 측면이 강하다.'라고 해놓고, 주구..
프로그래밍을 배우기 전에 알아야 할 최소한의 지식
·
프로그래밍
컴퓨터 과학 한 번 훑어보기 웬만하면 이거 다 들으세요. 하드웨어적으로 좀 깊게 들어가는 면이 있긴 하지만 그래도 짧아요. 재생 목록 길이 7시간 54분 57초 한국어 자막 다 있어요. https://www.youtube.com/watch?v=tpIctyqH29Q&list=PL8dPuuaLjXtNlUrzyH5r6jN9ulIgZBpdo 진짜 진짜 최소한 위에 8시간도 투자 못하겠다. 싶으면 이거라도 들으세요. 2랑 5는 위의 강의 목록에 없는 별개의 강의에요. 위 강의를 들었어도 2랑 5는 따로 들으세요. 1. 이진수를 이용해 데이터를 저장하고 나타내는 방법. 데이터가 결국에 문자인 이유 (한국어 자막 있음) https://www.youtube.com/watch?si=wuZ4rbkVMb-VvRBq&v=1G..
멍청하게도 내가 객체지향 프로그래밍을 하고 있단 것을 몰랐다
·
프로그래밍
객체 지향 문법을 사용하지 않는다고 객체지향 프로그래밍을 하지 않는 것이 아닌데 멍청하게도 객체지향 문법을 사용하지 않으니까 객체지향 프로그래밍을 하지 않는다고 생각했다. 객체지향의 본질 하나의 프로그램을 만들기 위해 프로그램에서 해야 하는 일을 작은 부분으로 나누는 탑-다운 방식인 절차 지향의 한계를 극복하기 위해 프로그램에서 필요한 자료형를 먼저 만들고, 그것들을 조립하는 바텀-업 방식이 객체지향 프로그래밍 아닌가? 결국 객체지향은 알고리즘이 아니라 데이터를 중심으로 프로그래밍하기 위한 것이 아닌가? 상태 관리 객체는 프로그램의 상태를 관리하기 위해 사용한다. 웹 서버는 무상태다. 웹 백엔드에서 상태는 웹 서버에 하지 않고 DB에서 한다. 굳이 웹 서버에서 상태를 찾으려면 사용자 세션인데, 이것도 r..
프로그래밍을 배우기 전에 알았다면 좋았을 것들
·
프로그래밍
요리와 프로그래밍 훌륭한 요리사가 되기 위해서 필요한 자질이 무엇일까요? 훌륭한 칼솜씨? 훌륭한 재료를 고르는 안목? 눈대중으로도 기가 막히게 계량할 수 있는 능력? 물론 이 모든게 100점이면 좋겠죠. 주어진 여러 재료를 조합했을 때 어떤 맛이 날 지 그릴 수 있는 능력이 있다면, 위의 능력들은 70~80점만 되어도 훌륭한 요리사가 될 수 있을 것입니다. 프로그래밍도 마찬가지입니다. 좋은 프로그램을 만들기 위해서는 좋은 재료와 좋은 설계가 필요합니다. 하지만 좋은 재료를 가지고 어떻게 조합할 줄 모르면 제대로 작동하지 않고, 오류가 발생하는 프로그램이 탄생할 것입니다. 컴퓨터 공학 전공과목들과 프로그래밍 입문 서적들은 좋은 재료들을 알려주지만, 어떻게 해야 좋은 조합을 할 수 있는지 알려주지 않습니다...
프로그래머에게 필요한 수학과 문제 해결 능력
·
프로그래밍
프로그래밍에 입문할 때 '프로그래머는 수학을 잘 해야한다.', '좋은 프로그래머는 문제 해결 능력이 뛰어나다' 라는 말을 듣고 '여태 코드 작성 하면서 수학은 사칙연산 말고 쓴 적 없는데?', '경험이 쌓이면 버그도 잘 잡고, 오류가 발생 했을 때 잘 해결하겠지.' 라는 생각을 했었다. 어느정도 경험이 쌓이니 이것에 어떤 의미가 담겨 있는지 조금은 알게 되었다. 프로그래밍에 입문하실 분, 입문한지 얼마 안 되는 분들이 이 글을 보고 도움이 됐으면 좋겠다. 1. 수학 수학은 추상화의 학문이다. 추상화란 일반화. 그러니까 현실의 구체적인 것 중에 필요 없는 부분을 없애고, 핵심적인 것만 남기는 것을 말한다. 처음 더하기를 배울 때 '사과 한 개에 사과 두 개를 더하면 몇 개인가?' 라는 문제를 풀게 된다. ..
C언어를 꼭 배워야 하는가
·
프로그래밍
C언어를 배운다는 것의 의미 C언어를 배운다는 것은 단순히 언어의 문법을 배운다는 의미가 아닙니다. 컴퓨터 구조, 특히 메모리에 대해 배운다는 의미를 포함합니다. 하지만 C언어로 프로그래밍에 입문하는 분들은 컴퓨터 구조에 대해 공부하기 전에 문법부터 배우며 'C언어 포인터 어렵네? 나는 기초도 못하는 바보인가 봐.' 하며 프로그래밍 자체를 포기하는 것이죠. 저는 정보처리기사를 취득하고 독학학위제로 컴퓨터 과학과 학사를 취득했습니다. 독학학위제를 취득하기 위해 공부할 때 "CODE" 라는 책이 좋다 하여 읽어봤는데요. 600쪽이 넘는 책을 절반쯤 봤을 때, "이 책이 왜 좋다는 거야?" 하면서 읽는 것을 때려치웠습니다. 컴퓨터 구조 과목에서 2~3시간이면 할 얘기를 쓸데없이 길게 늘어뜨려 써져 있었거든요...
프로그래머는 정말 실력으로 먹고 사는가
·
프로그래밍
소프트웨어 개발을 하면서. 아니 사람이라면 으레 하는 착각 중 하나는 "세상은 논리적으로 돌아간다." 라는 생각일 겁니다. 하지만 세상은 논리적으로 돌아가지 않습니다. 한 때 "강남 좌파" 라는 말이 쓰였던 적도 있고, 가난한 사람들이 보수적이라는 연구 결과도 있죠. 우리 모두 "적어도 나 자신"은 논리적이라고 생각하지만 분명히 우리는 감정적, 감성적인 부분이 있습니다. 일반적인 절차를 통해 신입으로 취업할 때에는 어느 정도의 실력은 갖춰야만 취업할 수 있겠지만, 인맥으로 쉽게 취업할 수도 있습니다. 또 경력직 중에 경력에 걸맞지 않은 실력을 가진 사람들도 많고요. 기술은 빠르게 발전하지만, 인간 세상은 빠르게 발전하지 않습니다. 2천년 전에 쓰인 고전은 아직도 고전이고, 역사책에 쓰인 수천년전에 일어난..