Комментарии 51
Мне так кажется, что не всегда нужно пытаться закоммитить код в проект. Иногда достаточно аккуратно указать на ошибки или просчеты. Несколько грамотных тикетов стоят дороже пары кривых коммитов.
+2
Не всегда, но часто стоит. Если вы только описываете проблему, то вы рассказываете «как правильно», а если исправляете ее — то показываете. Разработчикам нужно уметь и то, и другое. Владельцам проекта нужно заметно больше усилий для того, чтобы по описанию сделать исправление, чем для того, чтобы оценить готовое исправление.
+4
Я стараюсь баг-репорты писать. Мои минимальные навыки написания скриптов и базовый C никому нафиг не нужен. А подробный баг-репорт мне отправить несложно. Даже один баг в ядре Linux закрыли. Приятно.
+2
По третьему пункту надо добавить, что правки принимают намного живее, если, во-первых, есть открытый тикет с описанием проблемы и под ним пару человек высказалось что да, действительно, проблема, а во-вторых, на предлагаемую правку написаны тесты.
+4
К слову, практически в любом opensource проекте есть необходимость писать тесты. Так что есть возможность не только дополнять и исправлять, но и делать с нуля.
+11
По-моему, когда бы добавляете тесты к существующему коду, это скорее дополнение, чем разработка с нуля. Да, объем этой работы может быть самым разным в зависимости от того, насколько велик объем кода, есть ли уже тесты и в каком они состоянии.
0
Да, это дополнения к чему-то. Суть в том, что можно написать полные программы разной сложности с нуля, не ограничивая себя каким-то чужим стилем.
Если нет каких-то особенных собственных идей, то вполне пойдет для тренировки и оттачивания умений.
Если нет каких-то особенных собственных идей, то вполне пойдет для тренировки и оттачивания умений.
0
Если тестов нет, то их разработка по сути является разработкой с нуля отдельного приложения, использующего тестируемое в качестве библиотеки и(или) фреймворка.
+1
Любое приложение потому и называется «приложением», что это дополнение операционной системы до чего-то, что способно делать больше, чем она могла без него. Приложение компьютера к новому делу. Оно тоже никогда не с нуля, фактически.
0
Считаю что новичкам как раз нужно все писать с нуля. Анализ чужого кода влечет больше проблем, чем дает ответов на вопросы новичков.
-3
Как аналогия: большинство классиков мировой литературы сначала прочитало множество книг прежде чем написать свою первую.
+3
Разве? Прежде, чем написать первую, ставшую классикой мировой литературы — ок. Но первую ли для самого автора, хм.
0
Написание книг и программирование это совсем разные вещи. Второе это очень точная, математическая деятельность. Есть множество литературы, в которой объясняется как правильно программировать и какие ошибки могут в процессе возникнуть. Новичку куда продуктивнее будет читать подобные книги (в которых, кстати, тоже хватает примеров, куда более качественных, чем в опенсорсе) и писать что то свое с нуля, чем без теории пытаться разобраться в чужем коде.
Думаю, если бы у большинства классиков мировой литературы были бы книги с информацией о том, как нужно писать книги, а как не нужно, они согласились бы с моим подходом.
Думаю, если бы у большинства классиков мировой литературы были бы книги с информацией о том, как нужно писать книги, а как не нужно, они согласились бы с моим подходом.
-1
Не слишком разные на самом деле. Большая часть программистов не используют математику совсем. Думаете, много людей читают о реляционной модели прежде чем начать учить синтаксис sql? В этом смысле написание книги может потребовать даже больше умственных усилий.
Могу на собственном опыте сказать. Я прочитал кучу книг по программированию и пытался написать что-то свое с нуля. Но по-настоящему мощный скачок уровня моих навыков произошел только я начал работать программистом и стал сутками копаться в чужом коде.
Могу на собственном опыте сказать. Я прочитал кучу книг по программированию и пытался написать что-то свое с нуля. Но по-настоящему мощный скачок уровня моих навыков произошел только я начал работать программистом и стал сутками копаться в чужом коде.
+2
Могу на собственном опыте сказать
У меня все наоборот. Копаясь в чужем коде я постепенно начал деградировать и уподобляться программистам, писавшим этот код, а именно делать все быстро, некачественно, но в срок, даже используя те же приемы, что они.
Я не встречал еще в чужом коде ничего, с чем я не был знаком по книгам и статьям. Вот такой опыт.
0
1) Насколько дружелюбно сообщество к новичкам? Банально страшно лезть, зная что любое твое усилие не будет замечено/оценено. Какие проекты посоветуете, из тех, где владелец дружелюбен к новичкам?
2) cpp особенно прекрасно, когда все вокруг только и говорят о программировании на модном python. open source не очень сильно пересекается с модными технологиями.
3) OK. Я займусь рутиной в одном из open-source. Но что это мне даст в глазах работодателя? Назовите парочку работодателей. В каких проектах они рекомендуют участвовать, чтобы попасть к ним?
2) cpp особенно прекрасно, когда все вокруг только и говорят о программировании на модном python. open source не очень сильно пересекается с модными технологиями.
3) OK. Я займусь рутиной в одном из open-source. Но что это мне даст в глазах работодателя? Назовите парочку работодателей. В каких проектах они рекомендуют участвовать, чтобы попасть к ним?
-2
1. Лезть надо не для того, чтобы сообщество вас заметело и оценило, а для развития своих навыков в программировании и наблюдения за работой более опытных программистов. Сообщество не должно вас воспитывать, помогать вам.
2. А какая разница, что за язык используется?
3. Когда я последний раз искал работу, все работодатели просили предоставить пример кода в виде готового проекта (написанный мной с нуля или тот, в разработке которого я участвовал). Когда я показываю работодателю проекты с моей прошлой работы, работодатель знает, что не я один их реализовывал, но я в этом участвовал и у меня есть опыт написания подобных систем
2. А какая разница, что за язык используется?
3. Когда я последний раз искал работу, все работодатели просили предоставить пример кода в виде готового проекта (написанный мной с нуля или тот, в разработке которого я участвовал). Когда я показываю работодателю проекты с моей прошлой работы, работодатель знает, что не я один их реализовывал, но я в этом участвовал и у меня есть опыт написания подобных систем
+4
я показываю работодателю проекты с моей прошлой работы
Как вы справляетесь с NDA? Исходники ведь не покажешь, а слова «ну, я там че-то участвовал, разрабатывал» кажутся не очень убедительными.
0
НЛО прилетело и опубликовало эту надпись здесь
2) Как раз модные технологии чаще бывают опенсорсными. В топ10 языков минимум у половины есть эталонные реализации в открытом доступе и минимум у подавляющего большинства есть открытая экосистема.
3) Покажет работодателю, что:
3.1) Вы можете заниматься рутиной добровольно
3.2) Вы можете работать с чужим кодом
3.3) Вы можете писать достаточно качественный код (если примут ваш патч), согласно принятым в конкретном проекте соглашениям
3.4) Вообще покажет ему образцы вашей работы
3) Покажет работодателю, что:
3.1) Вы можете заниматься рутиной добровольно
3.2) Вы можете работать с чужим кодом
3.3) Вы можете писать достаточно качественный код (если примут ваш патч), согласно принятым в конкретном проекте соглашениям
3.4) Вообще покажет ему образцы вашей работы
+2
Я — тот самый «начинающий разработчик». С интересом открываю подобные статьи (особенно многообещающий тег «жмите сюда — и вы приняты», наверное, через полгода именно по нему будут находить вашу статью). Чаще всего дочитываю уже без интереса :)
Капелька фидбека, если интересно.
Да, на на одном собеседовании мне как-то рекомендовали такой подход — участие в опенсорсе. Да я и сам — и до того, и после — думал об этом.
Только я в итоге предпочитаю либо потратить это время на литературу, либо на набивание шишек в написании своего супер-велосипеда (tm)(с), либо просто на изучение (с высокой вероятность) качествнного открытого кода, без попыток что-то туда коммитить. Почему? Потому что, во-первых, мотивация. Свой проект — он о том, что мне интересно. Опенсорсных я таких почти не нашёл. Вернее, нашёл, но даже мне ясно, что там (а это во-вторых) лютый говнокод и вообще, они мертвы уже по несколько лет. Или я лучше просто поковыряю исходники, на которых чему-нибудь научусь (либо прифигею от кучи всего непоняиного и неизвестного — тоже хорошо мотивиует), чем буду искать переполнение переменной или неинформативные имена переменных.
Кроме того, порог входа в новый проект достаточно велик. Я же не стану писать разработчикам с вопросами по коду, чтобы мне пояснили че там происходит, верно? Поэтому на вникание уйдёт гораздо больше времени. Это время может быть сопоставимо со временем: а) моей потери интереса к выбранному проекту либо осознанию его несостоятельности и того, что от такого кода надо держаться подальше; б) моего становления как разработчика :), и очевидно, в таком случае оно случится не благодаря этому опенсорсу.
Такие дела.
Капелька фидбека, если интересно.
Да, на на одном собеседовании мне как-то рекомендовали такой подход — участие в опенсорсе. Да я и сам — и до того, и после — думал об этом.
Только я в итоге предпочитаю либо потратить это время на литературу, либо на набивание шишек в написании своего супер-велосипеда (tm)(с), либо просто на изучение (с высокой вероятность) качествнного открытого кода, без попыток что-то туда коммитить. Почему? Потому что, во-первых, мотивация. Свой проект — он о том, что мне интересно. Опенсорсных я таких почти не нашёл. Вернее, нашёл, но даже мне ясно, что там (а это во-вторых) лютый говнокод и вообще, они мертвы уже по несколько лет. Или я лучше просто поковыряю исходники, на которых чему-нибудь научусь (либо прифигею от кучи всего непоняиного и неизвестного — тоже хорошо мотивиует), чем буду искать переполнение переменной или неинформативные имена переменных.
Кроме того, порог входа в новый проект достаточно велик. Я же не стану писать разработчикам с вопросами по коду, чтобы мне пояснили че там происходит, верно? Поэтому на вникание уйдёт гораздо больше времени. Это время может быть сопоставимо со временем: а) моей потери интереса к выбранному проекту либо осознанию его несостоятельности и того, что от такого кода надо держаться подальше; б) моего становления как разработчика :), и очевидно, в таком случае оно случится не благодаря этому опенсорсу.
Такие дела.
+3
Я же не стану писать разработчикам с вопросами по коду, чтобы мне пояснили че там происходит, верно?
В опенсорсе хватает документации, чтобы можно было разобраться в проекте без вопросов к разработчикам.
-2
Давайте говорить правильно: иногда в некотором опенсорсе хватает документации, чтобы достаточно опытному программисту, потратив какое-то весьма ощутимое время, можно было разобраться в проекте без вопросов к разработчикам.
+4
иногда в некотором опенсорсе хватает документации
Часто в рабочих проектах все пишется в спешке, без документации и тестов. К этому тоже нужно быть морально готовым.
+3
Я видел вполне коммерческий чудо-код (признаюсь, даже писал), в котором без пол-литры или живых комментариев автора трудновато разобраться. Я прекрасно понимаю, что часто иногда код пишется такой, чтобы работал ВЧЕРА, а не с мыслью о самодокументированности, поддержке и паттернах. Именно поэтому я знаю, что в таких случаях лучше спрашивать автора или кого-то, кто шарит в происходящем хаосе не меньше автора: ч.з.х.? Именно поэтому в изучаемом языке я лучше посмотрю вылизанные исходники популярной библиотеки, а не потенциально плохой код (потенциально — потому что я начинающий, я ещё не могу отличить хороший код от плохого), в который даже начинающий девелопер может внести правки. Типа, дети когда родной язык в школе учат, они читают литературу, а не проверяют сочинения своих одноклассников.
0
Согласен, лучше изучать хороший код, чем плохой. Вы к тому, что все опенсорсные проекты с говнокодом внутри?
0
Нет, конечно. Я о том, что хорошие и качественные проекты, в которых мне интересно было бы поучаствовать (а это те, которыми я пользуюсь, и в которых мне чего-то не хватает) достаточно сложны, чтобы новичок в них совался с доработками. А все остальные я лучше буду обходить стороной — потому что там может быть как хороший код, так и плохой. Я как начинающий разработчик не могу их отличить и буду запоминать всё, но я не хочу забивать голову дурными примерами. По аналогии с языком, факт: когда я стал меньше читать книг, и больше интернеты — местами стали проскакивать тупейшие ошибки, просто на автомате. Уверен, с кодом всё бывает так же.
0
чтобы новичок в них совался с доработками
Ну для начала можно суваться без доработок. Любое сообщество оценит, если вы будете писать документацию, юнит-тесты и сообщать о багах.
0
Мне кажется, вы забываете о начале разговора. Сообщество оценит, не сомневаюсь. Или не оценит, и тогда получится, что я тупо слил недели труда и времени. Другой вопрос: а работодатель оценит? А он оценит больше мой вклад в опенсорс как технического писателя — или всё таки лучше почитать книжки по основному направлению, разработке?)
0
Если бы вы пришли ко мне на собеседование и сказали, что помогаете паре-тройке опенсорсных проектов в написании документации, тестов и дебагинге, это было бы для меня большИм плюсом, нежели если бы вы показами мне красный диплом.
+1
или всё таки лучше почитать книжки по основному направлению, разработке
Теория без практики мертва, практика без теории слепа.
0
Ну, то, что вы нашли баги в, например, ORM на языке Х или написали какие-то тесты для неё, то обычно это значит, что язык X вы используете.
+1
Я думаю, если бы я нашёл баги в ORM, то мне было бы что показать и кроме этого) Вроде же речь про начинающих, не?
0
Вы создаете несколько классов с наследованием, прописываете метаданные для ORM, радостно записываете первый десяток объектов в базу и бах — ошибка. Собираете инфу по этой ошибке и шлете сообществу. Разве для этого нужно быть профессионалом?
+1
>Вы создаете несколько классов с наследованием, прописываете метаданные для ORM, радостно записываете первый десяток объектов в базу
То есть этот абстрактный «я» использует опенсорсную разработку — но в своём проекте? Который, возможно, очередной велосипед. Кажется, с этого мы начинали разговор, не? :)
И еще есть тонкий момент между «искал и нашёл» и «случайно наткнулся» — вероятность на несколько порядков ниже.
То есть этот абстрактный «я» использует опенсорсную разработку — но в своём проекте? Который, возможно, очередной велосипед. Кажется, с этого мы начинали разговор, не? :)
И еще есть тонкий момент между «искал и нашёл» и «случайно наткнулся» — вероятность на несколько порядков ниже.
0
Либо используете в своем проекте, либо просто изучаете, тыкаете палкой на предмет — а завоняет ли.
Это мешает вам изучать опенсорсные проекты?
вероятность на несколько порядков ниже
Это мешает вам изучать опенсорсные проекты?
0
Изучать — не мешает, и даже не помогает. Писать им тесты, документацию или код — на это тоже вообще никак не влияет. Тем не менее, я за изучение, но считаю слабовероятным остальное, почему — см. первый комментарий. У меня ощущение, что вы возражаете каждому моему комментарию, причём отдельно, забывая про всё сказанное мной в предыдущих.
0
Есть случаи, когда все таки стоит задать вопрос по непонятному куску кода. Это даже может помочь разработчику найти возможную ошибку или он расскажет вам о каком нибудь хитром приёме.
+1
Дополню: и даже без документации часто гораздо быстрее самому посмотреть в исходном коде, чем ждать ответа разработчиков.
0
НЛО прилетело и опубликовало эту надпись здесь
По первому примеру кода — а ничего, что переполнение уже при расчёте secondsInMilliseconds может случиться, и тогда предложенная проверка не отработает ;)
+1
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Дорабатываем открытый код — развиваем и показываем всем свои навыки разработки ПО