thinkHole
@thinkhole
Republic of Korea
Joined Mar 3, 2024
0
Following
0
Followers
oauth.gfn.co.kr/auth/realms/GFN/protocol/openid-connect/auth?client_id=gfn-front&redirect_uri=https%3A%2F%2Fgfn.co.kr%2Fapp%2Fko%2Ftariff%2F&state=f913bb4d-436f-4e75-8b4c-fe248224dd07&response_mode=fragment&response_type=code&scope=openid&nonce=aa2ef93e-6e26-4a13-903e-93b11105afe2&ui_locales=ko&code_challenge=fsyjydumm9ufJ0AdO_O5bt4f4DQPhBRM-E9GAxTgaWA&code_challenge_method=S256
Apr 25, 2025
arca.live/b/programmer/72791430?before=2023-03-29T05%3A26%3A53Z
Mar 7, 2024
4
www.dogdrip.net/computer/522590644?sort_index=popular&page=7&category=180739712
Mar 6, 2024
10
www.dogdrip.net/computer/523920543?sort_index=popular&page=7&category=180739712
Mar 6, 2024
14
www.dogdrip.net/computer/524460057?sort_index=popular&page=6&category=180739712
Mar 6, 2024
28
hl1itj.tistory.com/m/136
Mar 6, 2024
56
www.q-net.or.kr/crf005.do?id=crf00505&gSite=Q&gId=
Mar 6, 2024
7
wikidocs.net/218744
Mar 3, 2024
321
wikidocs.net/218742
Mar 3, 2024
15
개발자들이 성장하면서 겪는 어려움을 적은 글
왜 모두가 소프트웨어를 배워야 하는가?
개발자가 되어야 한다는 뜻은 전혀 아니다.
소프트웨어 개발자가 되는 것은 어떻게 다른가?
현실화하려는 가치를 코딩이라는 도구로 구현하는 사람
프로그래머와 개발자는 어떻게 다른가?
프로그래머는 프로그램을 어떤 이유에서든 짜는 사람
개발자는 고객이 있는, 즉 의식적으로 사용자를 고려하면서 프로그램을 짜는 사람
개발자가 밟는 발전 단계를 이야기하고자 한다.
내 경험에 의하면 많은 개발자들이 겪었을 단계
소프트웨어를 배울 때 겪는 어려움을 5단계
1 단계
첫 번째 어려움은 소위 말하는 Computational Thinking 그 자체
논리적 절차적
두 번째 어려움은 프로그래밍 언어 그 자체
1 단계의 어려움은 소프트웨어를 배우려는 자발적 동기가 없거나 부족한 학생들에게는 너무 큰 문제
쉬운 문제들을 많이 풀어보는 것으로 극복
2 단계
첫번째 어려움은 데이터에 대한 이해
프로그램을 만드는 사람은 그 각각을, 또 그 각각 데이터의 다시 세부적인 내용들을 모두 독립적으로 드러나게 선언하고, 처리해야 한다.
두 번째 어려움
데이터 타입의 다양성과 그 데이터를 처리를 위한 구조적 표현 방식을 개념적으로 이해하는 일
여기에는 (C언어의) 포인터, 다양한 자료구조, 객체 지향언어의 객체라는 개념 등이 포함된다.
프레임워크의 이해
첫 번째 어려움은 이전에 자동으로 된다고 믿었던 것들이 원래부터 존재하는 것이 아니었다는 것을 깨닫고, 그런 것이 없는 영역의 경우, 개발자 자신이 그것을 만들어야 했었다는 점을 수용하는 것이다.
프레임워크들을 사용할 때, 그 동작이 생각보다 정교해서 적어도 한 번은 내부의 디테일을 따져봐야 한다는 점이다.
이용해 보는 과정에서, 각 API, 함수, 기능들의 동작, 리턴값, 자료의 전달, 에러메시지 등 매뉴얼에 나와있는 내용들을 속속들이 이해해야 한다.
누가 만들어도 그렇게 만들었어야 했구나 라는 점을 깨닫는 과정을 경험하는 것
이 과정을 어설프게 넘어가면 품질이 낮은 프로그램을 생산하게 된다.
코드 리뷰와 같은 개발 프랙티스를 같이 배워야 한다.
중간 정산 1
'당연하다고 생각했던 것들'이 더 이상 당연한 것이 아니고, '자동으로 된다고 믿었던 것들'이 누군가에 의해 만들어진 것이라는 것을 이해하고 있다고 볼 수 있다.
개발자로서 일단 늠름하게 일을 할 수 있는 수준
4 단계
첫 번째 어려움은 알고리즘 그 자체
제한적 자원인 컴퓨팅 파워와 메모리를 아끼기 위한 수학적, 논리적 절차
'학습 의지'가 필요한 부분
두 번째 어려움
패턴의 문제
문제는 패턴을 경험없이 사용하는 것
Concurrency 라는 것의 본질은 위에서 극복한 1 단계 2 단계의 문제가 현실에서는 동시에, 다른 코드로, 같은 데이터에 대하여 벌어진다는 것이다.
동시성, 병렬성, Critical Section, Atomic Operation, Lock 등에 관한 설명, 동기화/데드락회피 방법
대부분 학생은 그것이 왜 문제인지도 모를 가능성이 높고
경험적으로 이런 문제를 이해하는 과정
경험을 바탕으로 예전에 풀려고 했던 (또는 풀기까지 했던) 연습 문제가 왜 문제인지를 이해하는 과정
개발자라면 이 부분에 대한 경험적 이해가 반드시 필요하다.
중간정산 2
'만렙' 개발자라고 부르고 싶다.
5 단계
데이터의 문제
2 단계 어려움과 전혀 다르다.
세상의 모든 문제의 본질과 그 문제의 해결책이 데이터에서 기인한다는 것을 이해하는 것
빅데이터, 머신 러닝
소프트웨어가 만들어내는 가치의 원천과 결과가 모두 데이터
이전의 1,2,3,4 단계와는 달리 이제 소프트웨어의 영역을 넘어서는 뭔가가 필요하다는데 기인한다.
문사철/예술, 경제/경영, 수학/과학 등