태그 보관물: programming-practices

programming-practices

학교에서 소프트웨어 개발 커뮤니티를 어떻게 부트 스트랩 할 수 있습니까? 코드를 함수와 모듈로 구성하는 방법을 배워야합니다. 대신

저는 사우스 플로리다 대학에서 컴퓨터 과학 프로그램의 교육 환경에 불만을 가지고있는 학생입니다. 지금은 “프로그램 디자인”을하고 있습니다. 프로그램을 읽고 유지 관리하기 위해 소스 코드를 함수와 모듈로 구성하는 방법을 배워야합니다. 대신 C에서 배열과 재귀에 대해 배우고 있습니다. 다음 학기에는 C ++ ( shudder )를 통해 학습되는 “객체 지향 디자인”을 선택해야 합니다.

2 년 전 저는 프로그래밍에 관심이 있었으며 그 이후로 많은 것을 배우고있었습니다. 또 다른 C ++ 클래스를 복용 할 것이라는 전망은 거의 눈물을 흘리게합니다. 이런 이유로 저는 비슷한 야심 찬 학생들을 만나고, 새로운 언어를 배우고, 소프트웨어 개발 주제에 대해 토론하고, 다른 학생들과 함께 일하기 위해 프로그래밍 클럽을 시작할 것이라고 생각했습니다.

그러나 저는 소프트웨어 개발 경험을 공유하는 다른 학생들이 없을 수도 있음을 깨닫기 시작했습니다. 동기 부여가 아니라 기회가 없기 때문입니다. 다른 프로그래밍 클래스 ( “프로그래밍 언어”) 만 알고 있으며 실제 소프트웨어 개발에 대한 클래스는 없습니다. 다른 모든 사람들은 C와 C ++로 사소한 스크립트를 작성한 경험이 있습니다.

다른 학생용 소프트웨어 개발자와 함께 일하고 싶다면 스스로 훈련해야한다는 것을 깨달았습니다. 이제 저는 클럽을 소프트웨어 개발 부트 캠프로 만들어 회원들에게 현대적인 도구와 언어로 소프트웨어를 개발하는 방법을 가르 칠 계획입니다. 비공식 소프트웨어 개발 과정을 시작하는 것은 많은 가능한 접근 방식을 가진 기념비적 인 작업입니다. 독자 여러분, 내 질문은

내 공격 계획은 무엇입니까?

내가해야합니까

  • 클럽 활동과 숙제의 균형을 맞추기 위해 스스로 클럽을 강의합니까?
  • CS 교수진에게 회원들과 관련이 없을 수있는 전문 지식 내에서 주제에 대해 가르치도록 요청합니까?
  • 학교 내부 또는 외부에서 작업 부하를 공유 할 수있는 동정적이고 경험이 풍부한 개발자를 찾으려고합니까?
  • 비디오 강의 ( MIT OpenCourseWare , Google Tech Talks 등)를 보여 주겠습니까?
  • 실무 프로그래밍 워크샵 개최?
  • 숙제를 할당?
  • 다른 일을합니까?


답변

솔직히 당신의 모든 태도는 저와 관련이 있습니다. 당신은 그룹을 함께 얻지 못했고 이미 당신이 전할 지식이있는 사람과 그룹이 무엇을할지 결정해야하는 사람이라고 가정합니다.

최선의 방법은 초기 그룹을 함께 모으고 그룹으로서 그들이 원하는 것을 브레인 스토밍하는 것입니다. 당신이 개인적으로하고 싶은 것은 그룹이하고 싶은 것과 관련이 없습니다. 첫 번째 회의 전에 다른 그룹 구성원의 의견없이 할 일을 결정하면 자발적으로 일하고 싶지 않은 오만한 바보가 될 것입니다. 따라서 그룹을 시작하기 전에 그룹을 종료합니다.


답변

클럽의 모든 사람들이 자발적으로 참석하기 때문에 흥미롭고 동기를 부여해야합니다. 숙제는 정확히 동기 부여가 아닙니다.

누군가 가르치는 것은 어렵지만, 마지막 목표로 손을 떼어 가르치는 것이 어떻습니까? 본질적으로 처음에는 모두 함께 모여 그룹 프로젝트와 언어를 생각해냅니다. 프로젝트는 흥미롭고 눈에 띄는 진행 상황을 보여줄 수 있어야하지만 너무 어렵지는 않습니다. 언어가 정체되면 기본 사항 (구문, 패키지 / 네임 스페이스, 클래스, 정적 / 동적 타이핑 등)을 알려줍니다. 그런 다음 리소스 (도서, 온라인 자습서, 온라인 설명서), 손쉬운 방법 및 프로젝트의 특정 부분을 제공합니다. 그런 다음 각 사람은 여가 시간에 프로젝트를 진행하면서 필요에 따라 문서와 사용자를 참조합니다.

이 프로세스의 장점은 무엇입니까?

  • 사람들은 당신이나 다른 사람의 말을 듣고 지루해하지 않습니다.
  • 사람들은 매우 중요한 실제 기술인 자기 교육 방법을 배웁니다.
  • 지식의 유일한 자원이 아니기 때문에 자신을 과도하게 사용하지 않습니다
  • 언어를 소개하기 만하면되기 때문에 전체 언어를 알 필요는 없습니다. 그리고 그들이 당신에게 무언가에 대해 물어볼 때, 당신은 그것을 빨리 연구 할 수 있습니다. 그러나 5 단계 앞선 단계를 알아야하기 때문에 다른 모든 사람보다 조금 앞서야합니다.
  • 사람들에게 동기를 부여하는 무언가를 만들고 있습니다.

작동하는지 확인하는 유일한 방법은 시도해 보는 것입니다.


답변

전공과정 흐름도를 보면 , 컴퓨터 과학 전공의 다른 클래스에서 무엇을 기대해야하는지 실제로 오해하고 있습니다.

당신이 이야기하는 수업은 학생들에게 코딩의 다양한 기본 개념을 소개하는 입문 수업입니다. 실제 코딩없이 컴퓨터 과학의 모든 기본 영역에 대한 1 주일 개요를 제공하는 “프로그래밍 개념”처럼 보입니다. 거기에서, 그것의 NORMAL는 C의 입문 과정을, 그리고 C ++의 다른 입문 과정은 일반 컴퓨터 과학 전공. 당신은 몇 가지 코딩 경험이있는 프로그램으로 올 수 있지만, 대부분의 사람들은 없습니다. 이 프로그램은 가르쳐야합니다재귀와 같은 개념, 클래스 작성 방법, 연산자 오버로딩, 템플릿 및 그와 같은 모든 것 (변수, for 루프, if 문 등에 대한 가르침은 말할 것도 없습니다.) 일부 프로그래밍 언어로 코딩하는 방법을 알려줍니다. 그리고 그들은 보통 당신의 대학 수업에서하는 오해의 소지가있는 이름들을 가지고 있습니다. 원하는 조직 수준을 가르치는 수업은 일반적으로 “소프트웨어 엔지니어링”또는 “디자인 패턴”이라고합니다. 전자는 일반적으로 요구 사항이며 후자는 일반적으로 선택 과목이지만 (졸업 수준 일 수도 있음) 둘 다 선택 과목 일 수 있습니다.

컴퓨터 과학 커리큘럼이 소프트웨어 조직에 필요한만큼 초점을 맞추고 있는지, 전공을 재편성해야하는지, 컴퓨터 과학과 소프트웨어 공학이 다른 전공인지에 대한 학계 및 산업계의 논쟁이 있지만 현재는 컴퓨터 과학 프로그램이 정상입니다 .

(그리고 또 한 학기 또는 두 학기 동안, 당신 당신 자신이 아직 가르치지 않은 것들을 가르치는 더 도전적인 수업을 받게 것입니다.)


답변

프로그래밍 경쟁은 어떻습니까? 사람이나 팀이 가능한 최소한의 코드를 사용하여 문제를 해결하도록 노력하는 Perl Golf (또는 PHP Golf)와 같은 것? 언어와 경쟁에 대해 더 많이 배울 수있는 좋은 방법은 항상 흥미로운 일입니다.

물론 당신은 단순한 경쟁 이상의 것을 제공해야하지만, 그들은 설정하기 매우 쉽고 나는 항상 그들을 즐겼습니다.


답변

당신은 당신이 어떤 구조를 필요로하는 것이 맞습니다. 당신은 자신과 다른 사람들이 배우도록 강요하기를 원하며, 코스 선택에 관한 소프트웨어에 대해 bbing 거리지 말고 앉아있는 것이 아닙니다. 그러나 나는 선생님이 갈 길이 기 때문에 이것을 당신과 함께 수업으로 취급하는지 확실하지 않습니다. 당신은 아직 전문가가 아니며, 이것 또한 무언가를 배우기 위해 있습니다.

소프트웨어 프로젝트를 중심으로 클럽을 조직하는 것은 어떻습니까? 일부 장난감 숙제 프로그램은 아니지만 실제로 유용하다고 생각되는 것입니다. (“마지막으로 유용한”은 여전히“유용한”자격을 갖습니다. 당신은 배우고 자 노력하고 있지만 스타트 업을 찾지 못했습니다. :-)) 클럽에 여러 팀을위한 충분한 인원이 있다면, 여러 팀을 구성하십시오. 팀은 사용하려는 언어, 사양, 노동 분담 방법 등을 결정하고 각자의 시간에 개별적으로 작업합니다. 그런 다음 주별 클럽 회의에서 대면하는 방법, 장애물이있는 곳, 배운 깔끔한 물건 등을 토론합니다.

또한 여러분이나 다른 사람이 공유 할 가치가 있다고 생각하는 교수, 전문가 또는 비디오 등 초빙 강사를 데려 오는 아이디어를 정말 좋아합니다. 따라서 다음과 같이 야간 모임을 구성 할 수 있습니다.

  1. 그것을 잘 아는 누군가의 소프트웨어 주제에 대한 초청 강의.
  2. 강의에 관한 Q & A / gab 세션 (강사들이 참여하지만 비디오를 보려고하는 사람들과 함께)
  3. 프로젝트 팀으로 나누고 프로젝트를 수행하십시오.

저녁이 걸리고 지식을 향상시키는 선함이 가득합니다. 잘만되면

어쨌든이 프로젝트로 행운을 빕니다. 바닥에서 벗어나면 다시 돌아와서 어떻게 작동하는지 알려주세요.


답변

그룹 프로젝트는 좋은 생각입니다. 특히 프로젝트가 대학이나 동료 반 친구들에게 도움이 될 수있는 경우.

대학에서 학생들을위한 프로젝트를 진행하는 동안 그룹에 합류했습니다.
가장 인기있는 프로젝트는 캠퍼스의 360도 가상 투어였습니다.
필요한 장비를 구입하고 캠퍼스 주변에서 사진을 찍기 시작했습니다. 그런 다음 투어를위한 웹 사이트를 구축하고 호스팅을 파악한 후 대학의 웹 사이트에 예비 학생들을위한 정보를 제공했습니다. 이 프로젝트는 단순한 프로그래밍 작업 이상의 것이 었으며 프로그래머가 아닌 사람들도 관심을 가졌습니다.

귀하가 사용할뿐만 아니라 캠퍼스 내 모든 사람이 사용하고자하는 새로운 웹 사이트 또는 응용 프로그램을 식별하십시오. 목표가 있다면 배우는 것이 더 쉽고 재미 있다고 생각합니다.


답변

이것이 과외 활동이 될 경우, 숙제를하지 마십시오. 그저 절름발이입니다.

학교에서 github 그룹을 시작하고 포스터 / 이메일을 보내면 멋진 일을 할 수 있습니다 (요즘 아이들이 Facebook과 Twitter를 사용하는 것 같아요? 함께 관심이있는 5-6 명으로 구성된 그룹을 확보 한 경우 프로젝트를 결정하고 작업하십시오.

관심이 없다면, 합리적으로 숙련 된 사람이라면 오픈 소스 프로젝트에 참여하는 것은 엄청나게 쉽습니다. github에서 관심있는 것을 포크하고 개발자와 이야기하기 시작하면 간단합니다.

이전 세대에 비해 장점은 지리적으로 이질적이면서도 레벨과 언어로 프로그래머에게 연결하는 것이 어렵지 않다는 것입니다. 그리고 나는 단지 이메일을 보내는 것을 의미하지 않습니다. Skype / iChat / Ventrilo는 음성 회의를 쉽게하고 git / mercurial (및 관련 프로젝트 페이지 온라인)과 같은 도구를 사용하면 대서양 반대편에 있어도 그룹으로 쉽게 코딩 할 수 있습니다. 요즘 사회적으로 코딩하지 않는 이유는 없습니다.

마지막으로, 그들이 알고 / 알고 싶은 언어로 사람들을 판단하는 습관을 들지 마십시오. C ++이 프로그래밍의 한계를 나타낸다고 생각하는 사람들의 유일한 Smalltalker 일 때 빠지기 쉬운 함정이지만 많은 친구를 얻지 못하고 특정 도구에 대한 편견을 줄 것입니다. 나는 기술과 경험에서 저보다 앞서있는 해커들을 만나고 같은 프로젝트에서 LISP, Perl 및 C 를 사용했습니다 . 전문 개발자 힙의 맨 위에있는 사람들은 작업을 수행하는 한 도구의 레벨이 중요하지 않은 경향이 있습니다.