CodeGym /Java Blog /무작위의 /그거 어땠어? 아니면 내 첫 프로젝트
John Squirrels
레벨 41
San Francisco

그거 어땠어? 아니면 내 첫 프로젝트

무작위의 그룹에 게시되었습니다
이것은 글로벌 Java 커뮤니티의 성공 사례를 번역한 것입니다. Alex는 CodeGym에서 영어로 공부하는 러시아어 버전의 과정에서 Java를 배웠습니다. 이것이 여러분의 추가 학습을 위한 영감이 되기를 바라며 언젠가 여러분의 이야기를 우리와 공유하고 싶을 수도 있습니다 :)

소개

제가 어떻게 프로그래밍에 입문하게 되었는지에 대해 조금 말씀드리겠습니다. 저는 훈련을 받은 교사이자 심리학자이며, 5년 동안 성공적으로 직업을 수행해 왔습니다. 하지만 여러 가지 이유로 다른 나라로 이주할 생각이 점점 많아지고 있습니다. 그리고 나라마다 언어나 규정이 다르기 때문에 철저한 재교육 없이는 같은 종류의 전문가가 될 수 없었습니다. 그래서 저는 움직이고 성공할 수 있는 더 간단하고 흥미로운 방법을 찾기 시작했습니다. 그거 어땠어?  아니면 내 첫 번째 프로젝트 - 1나는 문신 예술가로서 손을 뻗어 보았습니다(이것은 본질적으로 언어에 대한 지식이 필요하지 않습니다). 그러나 그것은 다른 날의 이야기입니다. 그러던 중 동료 친구가 저에게 CodeGym을 소개해 주었습니다. 나는 처음에 그렇게 적당한 가격으로 게임을 플레이함으로써 나를 본격적인 프로그래머로 만들겠다는 약속에 회의적이었습니다. 그런데 생일 돈을 좀 받았고("가족세"가 적용되지 않음) WoW와 CodeGym 사이에서 선택의 기로에 섰습니다. 시기적절한 할인 덕분에 저울이 올바른 방향으로 기울어졌고 여기까지 왔습니다. 우리 모두가 이미 알고 있듯이 CodeGym은 90% 순수한 연습입니다. 작업을 해결하는 방법을 배웁니다. 부족한 지식을 인터넷에서 찾는 법을 배웁니다. 이 모든 것이 좋지만 15레벨에서는 그림을 완성할 수 있는 뭔가가 부족하다는 느낌을 지울 수 없었습니다. 나는 GeekBrains에 가입하려고 생각했지만 (아마도 다행스럽게도) 같은 친구가 제 시간에 나를 멈추고 Udemy를 ​​소개했습니다. 이 지식 저장소를 열었을 때 나는 다음과 같은 호소를 따라갔습니다. " 잠깐, 친구. 당신은 초보자입니까?" 단 3일 동안만 할인이 진행됩니다 — 이 기회를 놓치지 마세요! " 나중에 항상 할인이 있다는 것이 분명해졌지만 그게 요점이 아닙니다. 저는 즉시 Java 0부터 Pro까지, Android용과 유사한 두 가지 코스가 포함된 패키지를 구입했습니다. 그리고 이것이 우리 이야기가 시작되는 곳입니다.

성공인가 실패인가?

안드로이드 강좌를 진행하면서 새로운 지식을 바탕으로 프로젝트를 만들어야 한다는 숙제가 생겼습니다. 나는 단순하고 평범한 일을 하는 것은 그것을 전혀 하지 않는 것과 같다고 믿는 사람이다. 그래서 나는 즉시 내 삶을 복잡하게 만들기 시작했습니다. 나는 가장 발전되고 생생한 상상력을 가진 내가 아는 사람에게로 향했습니다. 이 사람은 나의 사랑하는 아내입니다(예, 그녀도 이 기사를 읽을 것입니다). 그녀는 동물 사진을 클릭하면 그에 상응하는 동물 소리를 내는 앱을 만들 것을 제안했습니다. 좋은 아이디어였지만 여전히 매우 간단했습니다. 나는 이 제안을 기초로 다음과 같이 추론하기 시작했습니다.
  • 이 앱은 단순함(비웃고 잊어버릴 만한 것) 그 이상이어야 합니다. 가치가 있었으면 좋겠습니다. 예를 들어, 무언가를 가르치는 것입니다.
  • 동물과 함께 알파벳이되게하십시오. 하지만 그냥 알파벳이 아니라 영어 알파벳도요!
  • 그리고 동물뿐만 아니라, 시야를 넓히기 위해 아는 사람이 거의 없는 희귀 동물까지!
  • 그리고 애니메이션, 문자 이름의 오디오 재생, 영어와 러시아어로 된 동물 이름이 있어야 합니다!
그게 바로 제가 숙제라고 부르는 것입니다. (CodeGym 이전에는 제가 기본적으로 프로그래밍에 익숙하지 않았다는 사실을 잊어버렸습니다. 그리고 웹사이트를 적극적으로 사용하기 시작한 시점부터 프로젝트를 시작한 시점까지 3~4개월도 채 걸리지 않았습니다. 그래서 만약 여러분이 이 분야의 베테랑이고 " Pff... 원본 버전에서 뭔가 바뀌었나요? "라고 생각하실 겁니다. 장담하는데, 예, 바뀌었습니다! 제가 직면한 첫 번째 어려움은 이상하게도 프로젝트를 시작하는 것이었습니다. 알고 보니, 작가들만이 "작가의 장벽"을 경험하는 것은 아닙니다... 하지만 저는 심리학자이기 때문에 제 문제에 대한 해결책을 알고 있었습니다. 당신은 뭔가를 시작해야합니다. 최소한 작은 발걸음을 내디딘 다음 멈추지 마십시오. 그래서 저는 추상적인 Letter 클래스로 시작했습니다 . 이 클래스에는 두 개의 필드가 있으며 이후에는 다양한 메서드가 있어야 합니다. 사실 저는 그걸로 무엇을 해야 할지 전혀 몰랐지만 뭔가를 해야 했습니다. 그런 다음 각 문자에 대한 클래스를 만들어 추상 클래스를 상속하도록 했습니다. 많은 시간이 걸렸고 이로써 나의 첫 근무일이 끝났습니다. 다음날 프로젝트를 삭제하고 다시 시작했습니다. 위에서 설명한 순간 이후로 변경된 사항을 기억하기 위해 방금 프로젝트를 열었습니다. 그리고 끝내고 나면 모든 것이 더 좋아졌다고 말하고 싶지만 그렇지 않습니다. 실제로 각 문자에 대한 수업이 있습니다... 이것은 특히 Android 과정이 거의 시작될 때 이 숙제를 받았기 때문에 특히 그렇습니다. 클래스와 관련된 활동(활성 창 또는 이와 유사한 것)입니다. 그리고 나는 특정 클래스를 특정 활동과 연관시키는 이 서투른 방법 외에는 아무것도 찾거나 생각하지 않았습니다. 어쨌든 프로그래밍 원칙 중 하나(반복 방지)를 26번 위반했습니다. 먼저 처음 두 글자를 완전히 (내 생각에는) 구현하고 두 개의 메뉴(기능 확장 시 필요할 수 있는 일반 메뉴와 다른 항목으로 이동할 수 있는 목차)로 구성된 대략적인 UI를 만들었습니다. 편지의). 프로그래밍을 하면서 크게 어려움을 겪지는 않았습니다. 독립 프로젝트를 구현하면서 클래스, 메소드 등의 관계 등 많은 것이 명확해졌고, 프로젝트 자체가 Android뿐만 아니라 Java에 관해 얻은 모든 지식을 통합하는 훌륭한 실습이 되었습니다. 두 번째 어려움은그 이름이 들리는 동시에 문자가 바뀌었다는 것입니다. 부드러운 전환(음영)으로 인해 영상보다 소리가 먼저 나오는 것처럼 보였습니다. 그러나 사운드에 지연을 가하면 전체 스레드가 멈췄습니다. 전환은 단순히 지연의 양만큼 지연되어 나중에야 동일한 바람직하지 않은 효과를 생성했습니다. 그러다가 나는 내 프로그램을 멀티스레드로 만들기로 과감한 결정을 내렸습니다! 사운드 재생을 별도의 스레드로 옮겼으며, 그림이 로드될 만큼 지연 시간이 길어졌습니다. 멀티스레딩에 관한 내용은 여기까지였지만, 멀티스레드 앱을 작성하고 있다는 사실이 뿌듯했습니다. 마지막 어려움은 적합한 재료를 선택하는 것이었습니다. 영어에는 X 라는 글자에 동물이 없다고 생각하셨나요 ? 26마리의 동물을 식별하고 그들의 이미지와 소리를 찾아내고, 26개의 글자와 26개의 동물의 이름을 기록해야 했습니다. 내가 팀으로 일했다면 분명히 이 부분을 다른 사람에게 맡겼을 것입니다. 그러한 단조로운 순간은 일하고 싶은 욕구를 죽이고, 욕구가 없으면 변명거리가 됩니다. 아무튼 이번 단계는 2주 정도 걸렸습니다. (저는 핑계가 없을 때 틈틈이 프로젝트를 진행했습니다.) 프로젝트는 시작 후 약 3~4주 후에 완료되었다고 발표되었습니다.

프로그래밍을 계속 공부하는 것이 가치가 있나요?

환멸이 뒤따랐다. 첫째, 나는 그 과정에서 내 숙제를 공개하는 것이 허용되지 않았습니다. 나는 일을 하고 과시하려고 엄청난 노력을 기울였지만, 그렇게 하는 것이 허락되지 않았습니다. 둘째, 내 앱은 에뮬레이터와 휴대폰에서 완벽하게 작동했습니다. 계획했던 것 중 애니메이션은 구현하지 않았습니다. 왜냐하면 학과에서 관련 수업을 마친 후에 끝내기로 결정했기 때문입니다. 그런데 애플리케이션 배포에 대해 생각하기 시작했을 때 흥미로운 문제에 직면했습니다. 다른 휴대폰과 태블릿을 사용하여 내 앱이 다양한 화면과 Android 버전에 최적화되었는지 확인한 후 알 수 없는 오류가 발생했습니다. 문자로 전환하면 프로그램이 종료됩니다. 나는 문제의 근원을 찾으려고 노력했고 로그를 검토했는데, 간결한 Java 예외와 비교하면 훨씬 더 hocus-pocus처럼 보였습니다. 인터넷은 나에게 도움이 되지 않았습니다. 한편으로는 아이들이 놀고 싶어하는 작동하는 앱을 만들었습니다. 반면에 내 휴대폰에서만 작동합니다. 이것은 나를 웃게 만든다. 물론 속상하기도 했지만, 곰곰히 생각해보면 잃은 것보다 얻은 것이 더 많다는 결론을 얻었습니다.
  • 나는 내 작업에 대한 비판을 더 잘 처리하게 되었습니다.
  • 소프트웨어 설계에 있어서 지식과 경험의 가치를 깨달았습니다.
  • 프로그래밍에 대한 자존감이 높아졌습니다.
  • 디자인 패턴과 리팩토링의 기초에 대한 공부의 필요성을 깨달았습니다.
  • 그리고 제가 말했듯이, 이제 저는 다른 누구도 갖고 있지 않으며 아마 앞으로도 없을 나만의 앱을 갖게 되었습니다. =)
"나는 내가 아무것도 모른다는 것을 안다". 이와 같은 교육 프로젝트를 실행함으로써 귀하는 지식의 격차가 있는 부분을 분석하고 더 발전할 수 있는 방법을 식별할 수 있는 좋은 기회를 갖게 됩니다. 인생의 오랜 단계에 걸친 모든 노력이 당신을 0에서 +0.001로 옮겼다는 것을 이해한다면 프로그래밍을 계속 공부할 가치가 있습니까? 나에게 있어서 대답은 '그렇다'였습니다. 당신은 어때요?
코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION