경험을 쌓으면서 일반적으로 프로그래밍을 읽고, 쓰고 이해하기가 더 쉬워 집니까? [닫은]


80

저는 프로그래밍 초보자이며 책을 읽고 공부하고 기사를 읽으며 그 밖의 것들을 읽었습니다. 프로그래밍을 배우기 시작한 이후로 좋은 결과를 얻었습니다. 초보자 였을 때 프로그래밍에 대한 모든 것을 알고 있다고 생각했지만, 더 많이 배울수록이 분야가 얼마나 어려운지를 깨달았습니다 (사실 모든 분야는 어렵다, 그러나 그것은 요점이 아닙니다).

요즘에는 기능성 소프트웨어를 작성했으며 3 개 언어의 기본을 배웠으며 한 언어로만 중급 언어를 사용하고 있습니다. MYSQL, OpenGL 프로그래밍 또는 Visual Studio C ++ 코드와 같은 고급 기능을 볼 때 두통이 발생하고 많은 웹 사이트의 HTML 소스 코드를 시각화 할 때조차도 (Google 크롬에서 볼 수있는 웹 사이트의 대부분의 소스 코드는 매우 지저분하고 구성되지 않은 것처럼 보입니다) ) 그것은 나의 두뇌의 한계에 혼동되게한다. 처음에는 단순 해 보이지만 이러한 고급 기능을 살펴보면 어떻게 그렇게 많이 배울 수 있는지 궁금해집니다.

한마디로 문제는 프로그래머가 경력을 쌓을 때 이러한 것들이 더 명확 해 지느냐하는 것입니다. 위에 나열된 주제 (OpenGL, MySQL, 고급 html 사이트)가 더 많이 배우면서 읽기, 쓰기 및 이해하기 쉬워 지거나 복잡한 주제가 갈수록 복잡해 집니까? 프로그래밍 세계에서 개미라는 느낌을 어떻게 물리 칠 수 있습니까?


24
나는 당신이 이것을 읽는 것이 좋습니다 : norvig.com/21-days.html
James P.

다른 것과 마찬가지로 그렇습니다. 기술이 변경 될 때까지 :-)
MathAttack

3
"경험"이 계속해서 같은 것을 읽지 않는 한. 새로운 것들로 몸을 스트레칭하십시오.
JeffO

복잡한 HTML 페이지를 분석하기 위해 Firefox의 Firebug 또는 Chrome의 Inspect Element를 사용하는 것이 좋습니다.
Lie Ryan

6
"초보자 였을 때 프로그래밍에 관한 모든 것을 알고 있다고 생각했습니다." 거기에 있었고 배우는 것이 많을수록 내가 아는 것이 거의 없다는 것을 깨달았습니다.
Lieven Keersmaekers

답변:


134

짧은 대답 : 아닙니다.

긴 대답 :

다른 사람의 코드를 읽는 것이 쉬워집니다. 그러나 읽기만. 경험과 기술을 습득하면 개발자로서의 개인 요구 사항이 커집니다.

  • 코드를 작성하고 싶지는 않습니다. 당신은 아름다운 코드 를 작성하고 싶습니다 .

  • 이상적인 조건 에서 코드를 실행한다고 가정하지 마십시오 . 코드를 실행할 때 발생할 수있는 모든 나쁜 일에 대해 생각하고, 예외를 처리하고, 하드웨어 문제, 네트워크 지연 시간에 대해 생각하고 기술이 발전함에 따라 문제가 커지기 시작합니다.

  • 아는 유일한 언어로 코드를 읽고 쓰지 않습니다. 숙련 된 개발자로서 지금 당장이 특정 문제를 해결하려면 함수형 프로그래밍이 훨씬 더 나은 대안 이므로 함수형 프로그래밍 언어로 코드를 읽고 작성해야합니다.

  • 당신은 당신이 알고있는 작은 라이브러리 세트로 자신을 제한하지 않습니다. C #으로 코딩하는 경우 많은 .NET Framework 라이브러리모든 기능알고 사용 하려고합니다 .

  • 더 이상 메모장을 사용하지 않습니다. 강력한 IDE 가 필요하며 코드를 단위 테스트하는 방법, 코드 메트릭스 및 IDE가 표시 할 수있는 수백 가지 옵션 및 창의 의미를 알고 싶습니다.

  • 언어가 제공하는 기본 도구 세트로 자신 을 겸손하게 제한 하고 싶지 않습니다 . C #에서는 제네릭, 코드 계약, 리플렉션, 이벤트 중심 개발, LINQ의 기능적 측면, Reactive 확장 및 배운 다른 것들을 모두 단일 프로젝트에서 사용하려고합니다. 암호.

  • 코드 작성을 시작하지 않습니다 . 요구 사항 수집 , 응용 프로그램 아키텍처 작성, 단위 테스트 작성, 문서 작성 등 의 시간을 80 ~ 90 % , 실제 코드를 작성하는 데 10 ~ 20 % 만 소요합니다 .

  • 보안에 관심이 있습니다. 애플리케이션에서 조작 한 데이터에서 발생할 수 있는 법적 문제 를 알고 있습니다. ITIL 이 무엇인지 알고 있습니다. 일부 ISO 표준을 알고 있으며 매일 업무에 적용합니다.

그렇습니다. 경험과 기술을 습득하면 얻은 모든 지식과 지적 능력으로 주어진 문제를 해결하기가 더 쉬워집니다. 그러나 해결해야 할 문제도 커지고 프로그래밍을 시작할 때 해결 한 수준의 문제를 해결하는 데 흥분하지 않습니다.

기술을 습득하는 동안 소프트웨어 개발의 복잡성에 대한 통찰력을 얻거나 프로그래밍을 시작할 때 상상조차 할 수 없었던 측면을 배우고 매일 배우는 모든 내용을 적용하고 싶어합니다.

한마디로 :

  1. 프로그래밍을 배우기 시작한 첫날, 1에서 100까지의 모든 숫자를 2로 나눌 수있는 작업은 매우 복잡합니다. 화면에서 루프를 만들고 숫자를 표시하는 방법을 배웠지 만 어떻게 찾을 수 있는지 모릅니다. 숫자는 2로 나눌 수 있습니다.

  2. 10 년 후, 같은 운동은 매우 간단 해 보입니다. 또한 10 년 후, 트랜잭션을 사용해야하고, 여러 서버에서 호스팅되며, 서버 간 세션 상태를 올바르게 처리하고, 고객의 은행 계좌 정보를 보안 및 법적 측면에서 모두 저장하는 응용 프로그램을 작성하게됩니다.

  3. ... 그리고 당신은 "내가 어떻게 할 수 있을까?" 루프와 함께 화면에 숫자를 표시해야 할 때와 10 년 전과 똑같은 방식으로.

도메인에서 모든 것이 쉬워지면이 도메인에서 완벽을 달성했거나 더 이상 신경 쓰지 않아도됩니다.

아무리 똑똑해도 소프트웨어 개발만큼 광대 한 영역에서 완벽을 달성 할 수는 없습니다.


36
둘 다 얼어 붙으면 물 위를 걷고 사양에서 소프트웨어를 개발하는 것은 쉽다 ( "코드 작성을 시작하지 않고 몇 달 동안 요구 사항을 수집하는 데 소비한다")는 다소 비현실적이다.
jfs

9
"기능적 프로그래밍은 훨씬 더 나은 대안이다 "는 논쟁의 여지가있다.
jfs

15
"기능적 프로그래밍"비트가 기능적 프로그래밍이 실제로 일반적으로 사용하기에 더 낫다는 것을 암시하는 것이 아니라 "작업에 적합한 도구를 사용하는"예일뿐입니다.
Ben Brocka

7
또한 개발이없는 "월별 수집 요구 사항"은 기본적으로 이상적인 폭포수 모델에서만 발생합니다. 반복하지 않으면 자신과 프로젝트를 죽이는 것입니다.
Ben Brocka

8
"더 쉬워지지 않고 빨리 갈 수 있습니다." / Greg LeMond /
daGrevis

20

어릴 때 모국어를 구사하고 읽는 법을 배웁니다. 그것의 평범한 메커니즘은 처음에는 투쟁이지만, 어느 시점에서는 유창합니다. 그러나 아직 읽지 않은 책은 무한정 제공되며 일부 주제에서는 먼저 책을 이해하기 위해 어휘를 늘려야합니다.

컴퓨터 프로그래밍에서도 마찬가지입니다. 언젠가는 언어 자체가 외국어처럼 느껴지지 않지만 아직 모르는 언어로 작성된 많은 것들이 있습니다. 그러나 약간의 노력으로 모든 것이 접근 가능합니다.

일부 프로그래밍 작업은 매우 반복적이며 기본적으로 다른 고객을 위해 매우 유사한 소프트웨어를 다시 구현합니다. 그러한 직업에서는 학습의 정체를 느끼는 것처럼 느낄 수 있습니다. 다른 직업은 항상 새롭고 독특한 일을하고 있으며, 새로운 것을 배우는 것을 멈추지 않습니다.


18

여기에 실제로 좋은 답변이 있지만 몇 가지 짧은 포인트를 추가 할 수 있다고 생각했습니다.

내가 초보자 였을 때 나는 프로그래밍에 관한 모든 것을 알고 있다고 생각했지만, 더 많이 배울수록이 분야가 얼마나 어려운지 깨달았다

이것을 독촉-크루거 효과 라고합니다 . 초보자 프로그래머들 사이에서 매우 일반적이며, 실제로 많은 분야에서 초보자들입니다.

구글 크롬에서 볼 수있는 웹 사이트의 대부분의 소스 코드는 매우 지저분하고 구성되지 않은 것처럼 보입니다.

해당 웹 사이트를 작성한 사람들 귀하가이를 이해할 수 있기를 원했습니까? 아마 아닙니다. 이해하기 어려운 코드를 갖는 것이 그들의 관심사입니다.

어떻게 그렇게 많이 배울 수 있는지 궁금해합니다.

으로 전문 . 저는 C # 컴파일러 시맨틱 분석기의 설계 및 구현과 같이 매우 좁은 분야의 전문가입니다. 15 년 동안 OpenGL, XML 또는 HTML 등을 연구했다면 전문가가되어 의미 분석가들에 의해 미스터리 될 것입니다. 그러나 나는 그렇지 않았으므로 OpenGL, XML 및 HTML에 대한 기본적인 지식 만 가지고 있습니다.

한마디로 문제는 프로그래머가 경력을 쌓을 때 이러한 것들이 더 명확 해 지느냐하는 것입니다.

예, 더 큰 패턴이 보이기 시작합니다. 예를 들어 OpenGL을 보자. 코드와 인터페이스하는 방법은 특정 인수로 이름이 지정된 함수를 호출하는 것입니다. OpenGL이 API라는 것만 이해하면 OpenGL에 대한 기본 지식을 얻을 수 있습니다.

더 많은 경험을 얻었고 다양한 프로그래밍 기술을 보았을 때 OpenGL과 C #의 LINQ와 같은 관련이없는 기술에는 공통점이 있음을 알 수 있습니다. 둘 다 데이터를 파이프 하는 워크 플로우를 작성 하는 API이며 , 풍부하고 흥미로운 방식으로 워크 플로우 에서 최적화 및 기타 변환을 실행할 수 있습니다 . 도구 상자에 개념이 있으면 갑자기 해당 패턴을 사용하는 API의 모든 기능을 활용할 수 있습니다.

위에 나열된 주제 (OpenGL, MySQL, 고급 html 사이트)가 더 많이 배우면서 읽기, 쓰기 및 이해하기 쉬워 지거나 복잡한 주제가 갈수록 복잡해 집니까?

그들은 더 쉽고 더 복잡해진다. 내가 말했듯이 시스템의 설계에 기반을 둔 더 큰 사고 패턴을 인식하기 시작하기 때문에 시스템을보다 효과적으로 사용할 수 있습니다. 더 복잡한 문제를 해결하기 위해 시스템을 사용할 수 있으므로 시스템 의 한계에 부딪히기 시작하면 더 복잡해집니다 .

프로그래밍 세계에서 개미라는 느낌을 어떻게 물리 칠 수 있습니까?

당신은 개미입니다. 우리는 모두 개미입니다. 그러나 물건은 당신을 과시하는 발이 아닙니다. 당신이 탐험하고, 살고, 혜택을 받고, 개선하는 세상입니다. 개미, 당신은 그것의 아주 작은 부분 만 탐험 할 수 있습니다. 실제 가치를 더하고 전문가가 될 수있는 부분을 선택하십시오.


2
이 답변에 감사드립니다. 주된 질문에 대답 할뿐만 아니라 특정 문제에 대한 내 눈을 뜨기 때문에 나머지 질문보다 높습니다. +1
Bugster

@Eric : "전문성은 인간이 아닌 곤충을위한 것"이라고 말하는 이런 종류의 주제에 대해 어떤 사람에게 말하고 싶습니까?
Joan Venge

@JoanVenge 누군가 그렇게 말할까요? 일반적으로 사람들은 모두 전문화되고 독창적이며 동물 (또는 곤충)과 자신을 구별 할 필요가 있다고 느끼면 훨씬 더 중요합니다.
Matthew 읽기

1
Dunning-Kruger Effect가 미숙련자가 자신의 부적절 성을 인식하고 자신의 능력을 정확하게 평가할 수없는 것으로 정의한 내용을 오해 합니다 . 당신이 인식 할 수 없다면 당신은 새로운 것을 배울 수없는 모든 것을 모른다. 인식 할 수 있으면 DKE가 아닙니다.

+1 다음에 대한 실제 가치를 추가하고 전문가가 될 수있는 부분을 선택하십시오.
Akshay Khot

14

짧은 대답입니다.

시간과 노출이 주어지면 이러한 것들을 이해하기가 더 쉬워집니다.

브라우저의 개발 도구에서 사이트를 볼 때 종종 프레임 워크에 의해 생성되는 사이트를 기억하십시오. ASP.NET, JSP, RoR, Django 등 ... 이러한 프레임 워크 중 일부는 다른 프레임 워크보다 깨끗한 코드를 생성합니다.

결산에서 ... 노출은 숙련으로 이어집니다. 그런 느낌을 없애는 방법은 없습니다. 경험과 학습 만하면됩니다. 이사하고, 도메인 지식을 얻고, 환경에서 사용하는 기술을 배우는 데 시간이 걸립니다.


1
코드를 작성한 사람이 좋은 관행과 일반적인 언어와 일반적인 프로그래머의 관용구를 사용하는 한 이것에 대한 진실이 있습니다. 잘못된 코딩 및 / 또는 의도적 인 난독 처리로 인해 크롤링이 느려질 수 있습니다. CodeGolf.SE로 삭제하십시오 . "투명한"버전조차도 경쟁 통계를 변경할 때 모범 사례가 희생 되었기 때문에 엉망이 될 수 있습니다.
dmckee 2019

@dmckee 나쁜 코드조차도 경험을 통해 훨씬 쉽게 읽을 수 있습니다. 나는 특히 C ++에서 이것을 알았습니다 (그리고 많은 나쁜 코드 를 읽어야 했습니다 ). 물론 그것은 극한 장애물이지만 그럼에도 불구하고 나쁜 디자인과 일반적인 오류 패턴을 발견하기 시작하면 훨씬 쉬워집니다. 이것들은 또한 당신이 배울 일종의 관용구를 형성합니다.
Konrad Rudolph

2

나는 이미 주어진 답변 중 일부에 동의하지만 코드 읽기에 대해 논의되지 않은 기본 포인트라고 생각합니다. 처음으로 오픈 소스 코드를 살펴보기 시작했을 때 압도적이고 거대해 보였습니다. 하지만 그거 알아? 항상 거대해질 것입니다. 어떤 시점에서 당신은 당신이 구체적으로 알고 싶은 것을 추출하고 발전하는 데 더 능숙하다는 것을 알고 있습니다.

그러나 한 예는 HTML 코드를 살펴 보는 것입니다.

왜 HTML 코드를보고 있습니까? 아마도 전체 사이트의 HTML을 배우고 싶기 때문이 아닙니다. 아마 당신이 데리러 갈 특정 트릭이 있습니다. 이 경우 방화범과 같은 도구를 사용하여 관련 HTML을 찾으십시오.

전체 사이트를 만드는 방법을 실제로 배우고 싶다면 렌더링 된 HTML이 그 방법이 아니라는 것을 깨달았습니다. 유사한 기술을 사용하여 오픈 소스 프로젝트를 보는 것이 좋습니다. 그러나 전체 프로젝트 코드를 배우는 것은 들리는 것처럼 가치가 없습니다. 지루하고 시간이 많이 걸리며 배운 것을 잊어 버리기 쉬우 며 결국에는 아무것도 보여줄 것이 없습니다. 플러그인, 기능 추가 또는 자신의 프로젝트에 대한 스캐 폴드 및 조언으로 특정 흥미롭고 흥미로운 코드를 사용하여 다른 사람들의 코드를 끝없이 읽는 것에서 배우는 일이 줄어 듭니다.

자신의 작품을 얻기 위해 절대 최소값을 배우십시오. 갇히거나 특정 새로운 것을 배우고 싶을 때만 참조 점으로 돌아가십시오. 이것은 모든 것을 이해하거나 어둠 속에서 프로그래밍하고 있다는 기존의 지혜에 위배됩니다. 그러나 결국 당신은 목표가 불가능하다는 것을 깨닫고 모든 것을 아는 목표와 실제로 작업중인 것을 끝내는 목표의 균형을 잡는 법을 배웁니다.


2

짧은 대답은 예이지만 많은 경험을 어떻게 정의 하느냐에 달려 있습니다.

개발에는 최소한 3 개의 부분이 있다고 생각합니다. 각 부문에서 나아질수록 특정 사항이 더 명확 해집니다.

  1. 비즈니스 요구 사항 이해 . 이것은 응용 프로그램에 대한 더 나은 조감도를 제공합니다. 비즈니스 규칙이 무엇인지 이해하는 것이 좋을수록 특정 방식이 특정 방식으로 수행되는 이유를 더 빨리 파악할 수 있습니다. 예를 들어 고객은 정부 규정 X를 준수해야하므로 문서 Y를 준비해야하므로 쓸모없는 정보가 저장되어 있어야합니다.

  2. 기술 요구 사항 이해 . 이것은 기술적 인 수준에서 이유를 이해하는 것에 관한 것 외에는 # 1과 같습니다. 어떤 도구와 기술에는 특정한 방식으로 왜 일이 이루어지는 지 이해하기 전에 처리 할 때까지 자체적 인 단점이 있습니다. 레거시 시스템을 다룰 때 더 분명합니다. 예를 들어 응용 프로그램은 XML 만 사용하는 특정 서비스 버스를 사용합니다.

  3. 언어 요구 사항 이해 . 다른 사람들이 언급했듯이, 언어에 대한 경험이 많을수록 원래 코더가 달성하려고 한 것을 더 빨리 읽을 수 있습니다. 그러나 # 1과 # 2가 없으면이 증가 된 능력이 꽤 빨리 최고점에 도달한다는 것을 알 수 있습니다.

최소한 여러 번 모든 영역을 완료 할 때까지 실제로는 쉬워지지 않으므로 개발의 여러 측면에 참여하십시오 .

다른 사람의 코드에서 완벽 함과 목적은 항상 # 1과 # 2와 관련이 있습니다. 이것이 코드가있는 상태의 주요 원인입니다.이 두 영역의 빈번한 변경이 스파게티 코드를 항상 얻는 가장 큰 이유입니다. 따라서 비즈니스 및 기술 요구 사항을 숙지하지 않는 한 코드를 읽는 작업은 항상 PITA가됩니다.


2

동시에 더 쉽고 복잡해집니다!

다른 사람들을 아는 것은 지혜입니다.
자아를 아는 것은 깨달음입니다.
다른 사람을 습득하려면 힘이 필요합니다.
자아를 지배하려면 힘이 필요합니다.
자신이 충분하다는 것을 아는 사람은 부자입니다.
인내는 의지력의 표시입니다.
자기가있는 곳에 머무는 사람.
죽지 만 멸망하지 않는 것은 영원히 존재하는 것입니다.

소프트웨어 개발로 번역

많은 기술을 아는 것이 지혜입니다. (모든 ALGOL에서 내려)
는 깨달음이다 모르는 것을 알고. (LISP)
많은 언어, 프레임 워크 및 플랫폼을 마스터하려면 많은 노력이 필요합니다. (Java)
당신이 알아야 할 것만 숙달해야합니다. (및 Google 또는 stackoverflow.com)
코딩을 중단하고 무언가를 전달할시기를 아는 것은 충분히 잘 알고있을 때입니다. (분석 마비 또는 금도금 없음)
달성하려는 노력을 계속하십시오. 집중력과 의지력이 필요합니다. (모든 것이 끊임없이 변하고 끝나지 않습니다.)
하나 또는 두 개의 기술을 고수하면 견딜 수 있습니다. (C와 마찬가지로 COBOL은 여전히 ​​잘 지불합니다)
프로그래밍을 끝내고 경영진으로 옮기는 것은 영원히 존재해야합니다. (또는 죽은 후에도 모든 사람이 계속 잘 사용할 수있는 기존의 FOSS 소프트웨어를 남겨 두십시오).


따라서 개미 대신 바퀴벌레가되어 당신이 찌그러 질 때 일어나십시오. - P
Bugster

"분석 마비"! = "코딩을 중지 할시기를 알고 있습니다". 더 "코딩을 시작할시기를 알고 있습니다".
벤 Voigt

0

한마디로 문제는 프로그래머가 경력을 쌓을 때 이러한 것들이 더 명확 해 지느냐하는 것입니다. 위에 나열된 주제 (OpenGL, MySQL, 고급 html 사이트)가 더 많이 배우면서 읽기, 쓰기 및 이해하기 쉬워 지거나 복잡한 주제가 갈수록 복잡해 집니까? 프로그래밍 세계에서 개미라는 느낌을 어떻게 물리 칠 수 있습니까?

다른 응답자와는 약간 다른 방법을 택하겠습니다. 코드를 읽고 쓰는 것이 실제로 더 쉬울수록 더 쉬워 진다고 생각합니다. 간단한 비유로 설명하겠습니다.

스포츠를 처음 시작한시기를 생각해보십시오. 처음 배운 스포츠로 시작했을 때, 단일 스포츠의 간단한 작업을위한 기본 조정이 실제로 어려워 보였습니다. 조금 더 경험이 많을수록 간단한 작업을 마스터하기 시작하여 더 이상 생각할 필요가 없었으며, 다른 플레이어를 보면서 예측할 수있는 더 복잡한 작업이 있음을 알게되었습니다. 그들의 행동).

그런 다음 다른 스포츠에서 손을 when을 때 시작했을 때 그리 멀지 않은 것으로 나타났습니다. 농구를 잡는 것은 야구를하는 것과는 매우 다르지만, 그중 하나를 습득 한 사람은 다른 사람을 습득하지 않은 사람보다 훨씬 더 쉽게 습득 할 수 있습니다. 두 번째 스포츠를 연습 한 경험을 통해 첫 번째 스포츠가 특정 기술 과 일반적인 기술 을 모두 제공한다는 사실을 알게되었습니다 . 특정 기술 (농구 잡기)은 해당 도메인에서만 유용하지만 일반적인 기술 (3 차원 공간에서 빠르게 움직이는 물체를 추적하고이를 처리 할 계획을 개발)은 모든 관련 도메인에서 더 나아질 수 있습니다.


이것은 프로그래밍과 어떤 관련이 있습니까? 읽은 첫 번째 코드 줄은 특정 규칙을 기반으로하는 세상에 노출됩니다. 이러한 규칙 (언어의 구문과 관용구)을 특정 기술로 배웠지 만 컴퓨터의 내부 작동 방식 이해 및 컴퓨터가 이해할 수있는 방식으로 의도를 표현하는 방법에 대한 귀중한 일반적인 기술도 배웠습니다. 당신이 배우는 각각의 새로운 언어는 당신에게 새로운 특정 기술을 제공하지만, 또한 당신의 일반적인 기술을 강화하고 협곡 벽을 따라 쌓인 광물 퇴적물과 같은 모든 컴퓨터 언어를 통해 촬영 된 패턴을 볼 수 있도록 도와줍니다. 몇 가지 다른 언어에 대해 잘 알고 나면 모호성을 용서할 경우, 작성된 언어에 대해 전혀 모르더라도 대부분의 코드의 "모양"을 인식 할 수 있습니다.

예를 들어, 언급 한 세 가지 언어 (MYSQL, OpenGL, C ++) 모두 공통적 인 기능이 있습니다.

  • 알고리즘의 작은 부분을 별도로 계산하여 나중에 완벽한 솔루션으로 구성 할 수 있습니다
  • 컴퓨터는 일반적으로 특정 문제 (테이블 만들기, 캔버스 초기화 또는 공통 라이브러리로드)에 대한 작업을 시작하기 전에 어느 정도의 일반 준비가 필요합니다.
  • 이전의 진술이 우선하며 이후의 진술에 영향을 미칩니다. 즉, 컴퓨터는 코드의 맨 위에서 시작하여 작동합니다.

프로그래밍을 많이할수록 공의 모양에 관계없이 공이 여전히 당신을 향하고 있다는 사실을 깨닫게 될 것입니다. 모든 프로그래밍은 컴퓨터가 이해할 수있는 방식으로 의도를 표현하려는 것입니다. 충분히 배우면 코드 대신 의도를 읽을 수 있습니다.

추신-매번, 당신이 마침내 당신의 길을 알고있는 것처럼 느끼기 시작할 때, 당신은 뇌를 완전히 깨뜨리고 계급 초보자처럼 느끼게하는 무언가에 부딪 칠 것입니다. 그것이 우리가이 직업에 대해 좋아하는 것입니다. 항상 배울 새로운 것이 있습니다.


0

짧은 답변 : , 일반적으로

그러나 일반화하면 전문가가되지 않습니다. 전문가가된다는 것은 당신이 모르는 모든 것을 깨닫는 것을 의미합니다. 이것은 압도적 인 느낌 일 수 있습니다.

시간이 지남에 따라 경험이 쌓입니다.

시간이 지남에 따라 다른 언어 / 패턴 등이 개발과 병행하여 발전하고 있습니다.

귀하의 질문에 대한 또 다른 변수는 동일한 일정 시간 동안 산업과 관련하여 의미있는 경험을 얻는 것입니다. 기술 산업은 다른 산업과 달리 움직이는 목표입니다.

좋은 질문은 당신이 어떤 언어로 자신을 너무 얇게 또는 두껍게 퍼 뜨리고있는 것일 수 있습니다.


0

그것은 컴퓨터 언어가 얼마나 많은지 그리고 그들이 계속 변하는 정도에 대한 끝없는 경이의 원천입니다. 여기에는 각 언어 및 각 프레임 워크에 사용할 수있는 다양한 프레임 워크와 다양한 라이브러리 및 플러그인이 추가됩니다. 코드 편집기와 IDE의 수를 추가하십시오.

이러한 모든 변형에는 2 차원의 복잡성이 있습니다.

  1. 그들의 어휘와 구문이 다릅니다.
  2. 그들이 지원하는 추상화 (고수준 개념)는 다릅니다.

그들은 또한 하나의 공통점이 있습니다. 튜링 완성도. 프로그래머가 충분히 노력하면 모든 문제를 해결하는 데 사용할 수 있습니다! 따라서 C와 같은 언어 (작은 어휘, 복잡한 구문 및 거의 추상화되지 않은 언어)로 시작하면 무엇이든 할 수 있다는 느낌을 얻게됩니다.

그런 다음 CSS, HTML, Javascript와 같은 "쉬운 것들"로 전환하고 Bootstrap 및 React와 같은 프레임 워크로 전환하면 Albert Einstein과 마찬가지로 뇌가 튀어 나옵니다. 사람들은 "프랑스어를 알고 있으므로 독일어를 배우는 것이 쉬워야한다"고 생각합니다. 아니!

많은 프로그래밍 추상화는 소프트웨어 패턴 에서 배울 수 있습니다 . 주제에 관한 몇 권의 책이 있습니다. 패턴은 어디에나 있으며 언어에 구애받지 않으며 한 번 배우고 이해할 수 있습니다 . 패턴을 알고 있다면 어떤 언어로든 사용할 수 있으며 언어에 내장되어 있고 다양한 프레임 워크에 자주있을 때이를 인식 할 수 있습니다.

새로운 언어에 능통 해지려면 대부분 1-2 년이 걸리며 고용주는이를 알고 있습니다. 신입 사원은 실제로 비즈니스 문제를 해결하는 데 시간이 충분하지 않고 언어와 씨름하는 데 많은 시간을 할애하기 때문에 언어에 익숙하지 않은 사람들을 고용하지 않는 이유입니다.

요약하면, 컴퓨터 과학 원칙 / 추상화, 소프트웨어 패턴 및 비즈니스 문제 유형은 모두 느리게 변경됩니다. 한 번 배우고 새로운 지식을 점진적으로 축적 할 수 있습니다. 반대로, "생태계"라고하는 컴퓨터 언어, 프레임 워크 및 구성 요소 라이브러리는이를 둘러싼 모든 도구와 마찬가지로 매우 빠르게 변경됩니다. 학습 속도가 느리고 시간이 많이 걸릴 것으로 예상됩니다!


-1

위에 나열된 주제 (OpenGL, MySQL, 고급 html 사이트)가 더 많이 배우면서 읽기, 쓰기 및 이해하기 쉬워 지거나 복잡한 주제가 갈수록 복잡해 집니까? 프로그래밍 세계에서 개미라는 느낌을 어떻게 물리 칠 수 있습니까?

진전이있을 때, 우리는 이전에 알고 있던 것을 배우고 새로 배웁니다. -헨리 데이비드 소로

Zen 마스터와 Overflowing Teacup에 대한 이야기가 있습니다 .

때때로 우리는 과거의 선입견과 생각을 버려서 새로운 개념을 배울 수 있도록해야합니다.

기억하십시오 : 새로운 개념에 압도 감을 느끼면 많은 교사를 찾아야합니다.

최근 스크립팅 언어를 사용하는 일부 내부 회사 소프트웨어를 업데이트 할 때 익숙하지 않았습니다. 처음에는 매우 스트레스가 많았습니다. 그러나 태도를 바꾼 후 구문과 기본 개념을 설명하는 자료를 찾기 시작했습니다. 프로젝트를 완료 한 후이 스크립트 언어를 도구 중 하나로 활용하여 더 많은 작업을 수행합니다.

당신의 태도는 모든 차이를 만듭니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.