Executando verificação de segurança...
6

[Dúvida] Quanto de código um programador deve copiar?

Esses dias eu estava estudando por um curso na Udemy, tudo ia maravilhosamente bem, até que eu resolvi fazer o mesmo projeto por conta própria. Vixi, aí que deu ruim, precisei voltar diversas vezes no código do professor. Daí passa uma semana, parece que não sei naaaada. Eu não trabalho na área (mas gostaria) e também não tenho formação. Pra vocês que são profissionais fica a minha pergunta: o quanto de código copiado é normal um programador utilizar? Eu esqueço demaaaaais as coisas, vcs usam mais a memória pra programar, usam snippets, ou outra coisa? Vejo umas live coding e fico me perguntando: como esse miserável lembra de tudo isso???? Alguma ajuda/opinião de quem está no dia-a-dia da profissão ae pra me dar uma luz?? 😁

Carregando publicação patrocinada...
6

Quando for fera poderá copiar quanto código quiser. Enquanto isso o ideal é nada.

O que está acotecendo com você é o que está acontecendo com a maioria das pessoas que estão entrando na área. E que são as pessoas que pouco depois ficarão dizendo que foram enganados, que a área não é fácil, que não tem vaga, que paga mal, que tem muita pressão, que tem um monte de defeito.

Ao mesmo tempo o mercado está desesperado precisando de mão-de-obra e não consegure preencher porque só acham pessoas copiando código.

Você pode copiar quanto quiser de código, desde que entenda completamente o que está acontecendo ali. Tudo mesmo. Eu falo em uma palestra minha que esse "tudo" envolve até o espaço em branco que deve saber porque está ali ou não está.

É a estória da calculdora, pode usar quanto quiser se for uma ferramenta de produtividade apenas. O mesmo será com a IA. Mas se usar porque não consegue fazer por conta própria, então está muito errado.

A maioria dos cursos vendidos na internet são caça-níqueis. A pessoa que fez o curso está no negócio de agradar quem compra, não é função dela ensinar a pessoa, ela precisa vender, precisa tornar o comprador feliz, precisa que ele fale bem do curso para outras pesoas. Ele não precisa que o curso aperte a pessoa, que coloque ela no limite, que obrigue a pensar muito, a se desdobrar em raciocínio, fazer tantativa e erro, e muito trabalho até conseguir dominar aquilo como ela domina a respiração.

Os cursos que tem por aí não costumam servir para você conseguir fazer por conta própria, só querem que consiga copiar.

Em alguns lugares esses cursos são mais assim ainda. Então cursos de sucesso costumam ser sinônimo de cursos fáceis e fracos. E por isso eu falo que pedir indicação para as pessoas não costuma ir bem porque vão indicar os cursos fracos e fáceis, não os bons. Se ela fizer um bom ela não vai terminar e falará que é ruim.

Ainda tem outro problema nesses cursos que eu vou falar logo mais, veja:

Pessoa pulando todos os degraus de iniciante até ser vendedor de curso

Percebe o problema?

Em geral, a pessoa tem dificuldades porque ela está pulando etapas. Pode nem ser culpa dela, pode ser falha da escola, de casa e outros fatores que incentivaram ela estar com formação incompleta. Então quando foi tudo "nota 5 para passar" quando às vezes nem era para ter tanto, ela acha que está bem e não está, e como consequência quando começa ser mais cobrada, quando não tem como enganar, ela começa sofrer no mal sentido. E frequentemente entra em negação e culpa os outros pelo fracasso dela. Novamente, que pode nem ser o que ela queria, mas empurraram ela para isso.

Tem um detalhe, só a pessoa conseguirá sair disso e começar correr atrás de resolsver isso, talvez até precisando de ajuda profissional para isso. E se a pessoa não conseguir, só podemos lamentar. Eu realmente lamento muito, não falo só para parecer bonzinho, me chateia profundamente.

Algumas pessoas tiveram azar e podem precisar demais de ajuda, e altamemente especializada, e cara, porque envolve mais que só alguma dificuldade de organização de estudos. Pode ser só um problema da pessoa não querer sofrer, e aprendizado envolve sofrimento, no bom sentido, porque foi ensinada assim em casa, ao contrário do que acontecia no passado, ou pode ser um problema mais sério e sem cura, só minimização.

Também tem que considerar que algumas pessoas não tem vocação para certas tarefas. Tem malucos que acham que qualquer um pode programar, mas se for programação de verdade isso é absolutamente falso. Uma pena que muita gente tá vendendo a ideia que todos devem programar. Eu queria fazer um monte de coisa na vida, mas não consigo, eu queria ter outra profissão, mas foi essa que me escolheu e fez eu me dar bem e por isso a adoro. Não adianta eu ter pensamento positivo ou saber tudo o que é necessário para aprender, não serei qualquer coisa que eu desejo.

Repito, as pessoas têm dificuldades porque estão pulando etapas. E pode ser que o curso esteja incentivando isso.

O que vejo muito hoje é as pessoas quererem ver os projetos lindos e enormes funcionando e brilhando na tela. Assim não se aprende, se adestra. Nem que eu quisesse muito poderia fazer um código muito maior que 1KB de memória, assim aprendi direito. Outros fatores ajudaram também, e até mais, mas esse foi sem querer, por isso, sorte.

Tomara que te ajude repensar algumas coisas e tenha sucesso.

Observou? Faz sentido para você?

Espero ter ajudado. Em geral estou à disposição na plataforma (sem abusos :D)


Farei algo que muitos pedem para aprender a programar corretamente, gratuitamente. Para saber quando, me segue nas suas plataformas preferidas. Quase não as uso, não terá infindas notificações (links aqui).

1

@maniero, achei muito interessante a sua resposta. Só pra te dar um contexto do meu caso, por exemplo. Eu fiz um curso de algoritmos e estrutura de dados, da própria Udemy também, todo em inglês. E, por incrível que pareça, eu achei mais fácil do quê implementar um projeto. E digo mais, às vezes é mais fácil fazer um exercício do LeetCode do quê implementar um projeto. Isso que tô um pouco com síndrome do impostor. Entender como é construído, de boa. A parada é que são muitos passos e às vezes esses passos não tem uma "estrutura lógica clara". Vou explicar com um exemplo: vamos lá pra estrutura de dados, teve um exercício que achei interessante no qual precisavamos organizar uma LL, mas respeitando elementos fixos na lista que eram representados por -1, esses não podia mudar de lugar. Eu basicamente criei os pointers que precisava, que me lembre 2 pointers, um current e o outro acho que chamei de small apontando pro head. Aí aponta eles pro head, anda com o current.next, e compara se o elemento atual é menor que o small, se for swap (obviamente usando uma variável temp pra isso) e vida que segue. Acabou a primeira iteração, incrementa o small e repete-se o processo. Percebe que isso pra mim é muito "lógico"? Tudo bem que é um Big O de m... mas é uma Lista Lincada, não tem muito o quê fazer quando o assunto é encontrar elementos, ela não foi feita pra isso. Tem outros problemas mais difíceis que esse que resolvi tbm, alguns eu levei mais de um dia pensando em como fazer, rsrsrs. A parada é que quando vai pro projeto, me dá impressão de que até o cara que fez copiou, kkkkkkkkk. Tipo o Todo List que TODO MUNDO FAZ. Cara, basicamente é a mesma coisa, e mesmo assim a galera recomenda fazer. Isso que tá me incomodando, não saber o próximo passo, aí toma-lhe google, chatGPT, stackOverflow. Beleza, achei a solução! Mas ela não vai na mesma direção que estava indo meu projeto... e quando encontrar essa bagaça da próxima vez? E pra fechar, o porquê da minha pergunta original. Tentei fazer um projeto em cima de uma api que prevê o sexo da pessoa baseada no nome. Basicamente, você fornece um nome pra api ela te dá a probabilidade de você ser homem ou mulher. Como convenção eu estabeleci que probabilidades acima de 95%, eu usaria um texto tipo: "com certeza você é mulher/homem" e pra probabilidades menores, um texto com o valor da probabilidade tipo: "você tem a probabilidade X% de ser homem/mulher". Teoricamente um projeto fácil e bobo. Tentei fazer através de um formulário... ahhhhhhh, meu pai... CORS problem. Aí foi até bom pra eu pesquisar o quê diabos era o CORS policy e pelo que entendi é um recurso dos browser, só aceitam requests da mesma origem. Beleza, tentei fazer com axios e depois acabei decidindo usar fetch mesmo(achei a documentação mais clara) e mandar no cabeçalho da requisição pra resolver o problema e nada. Certo, então pensei em criar um servidor local mesmo em express. Show, servidor criado na porta 3000 ouvindo por requisições post e usando o bendito middlware app.use(cors({orgin:"*"}). Ótimo, desse meu servidor, eu chamei a bendita api e... foi!!! Só que não... ué? Veja bem, funcionou um tempo, mas ficou intermitente. Agora é a pane: porquê diabos funciona uma hora e outra não? Recebo newtowrk error e de acordo com o GPT é por causa do CORS, mas não vejo nada que possa fazer a respeito. O formulário com certeza não está bem configurado(kkkkk), mas funcionou várias vezes até parar(sem eu mexer no código). Não é o limite de chamada da api, pq isso vem na resposta da requisição e não cheguei nem na metade das requisições que posso fazer. Aqui que está meu ponto central: mano, vou ter que começar essa bagaça do zero, DE NOVO?? Do insomnia minhas requests pra api funcionam lindamente, mas do formulário estão dando uma baita dor de cabeça. Enfim, fiz essa pergunta no intuito de entender se é só comigo ou se tem outras pessoas que passam por isso também e como vocês resolvem essas coisas. Pra mim, por exemplo, nesse projeto acho um salto grande ter que resolver esse tanto de coisa(até consigo achar soluções, basta usar as ferramentas), mas sou bem desatento e dependendo das iterações que eu tive que fazer, no final do processo me sinto perdido(tipo nesse caso)pq apesar de encontrar a solução, não dominei o problema completamente(isso me incomoda bastante). Pra compensar vou dar uma revisada em como enviar formulários e tentar entender o quê houve. Pra quem quiser saber a api é essa daqui https://api.apilayer.com/gender/gender/by-first-name, disponível no api layer, só colocar first_name= e esperar a resposta. Lembrando que ela aceita POST, então da barra de navegação do browser não vai funcinoar. Precisa de uma api key, mas é gratuita. Espero que tenha conseguido entender meu ponto de vista. Acontece isso com você também, ou eu que estou andando devegar demais?

3

Obrigado.

Me desculpe, eu não vou ler. Não tem condições.

Eu vou te falar algo que pode ficar bravo comigo ou aproveitar. Seria fácil eu não falar nada, mas seria até egoísmo meu.

Tem coisas que vão indicando porque alguém tem dificuldade com alguma coisa. O fato de ter feito um texto assim é um indicador. Pode não parecer, mas tudo o que você faz na sua vida afeta a vita toda. Provavelmente a mesma dificuldade de escrever um texto de um jeito fácil para as pessoas lerem é o que te faz não conseguir entender certas coisas. Precisa resolver isso, já te dei dicas.

Eu não sei a solução completa, mas você sabe que está com dificuldades, não está tão afetado que esteja cego nisso, não parece ter ficado revoltado com isso, quem fica geralmente começa agir como um idiota, o que está longe de parecer ser caso, então veja o que pode fazer para resolver essas questões com o pouco que pude lhe dar.

Espero que desperte em você algo que mude toda sua vida e alcance todo o sucesso que merece.

2

Copiar, eu diria que nenhum.

Usar como referência? Sempre que puder, desde que você entenda o que o código original faz e o que você quer fazer.

Eu sou muito exigente quanto a organização e performance do meu codigo, bem como gosto sempre de usar tudo de mais recente que a linguagem oferece.

Dito isso, se eu encontro um codigo que me serve total ou parcialmente, eu uso ele como referência e reescrevo dentro do meu padrão.

Isso me ajudou muito no início a compreender coisas mais complexas na programação.

1

Olá! Olha, tudo é prática. No começo é super normal você precisar voltar para entender ou implementar certa funcionalidade. Eu trabalho muito com front e no começo eu precisava copiar dos tutoriais para implementar certas regras css. Passou-se o tempo e já lembrava os atributos de cabeça, meio que de forma intuitiva eu já sacava qual atributo e valor eu precisava digitar para que a div ficasse centralizada, com sombra e com borda redonda; como fazer um gradiente e etc...

É como começar a andar de bicicleta quando criança, super normal usar rodinhas no começo e com o tempo você já entende como andar sem as rodinhas. Assim é para os diversos condeúdos que envolvem programação e desenvolvimento, toda linguagem ou framework novo a gente começo copiando (rodinhas) e depois vai ficando tudo gravado de forma intuitiva.

Edit: Cuidado com ChatGPT e Snippets! Eles são um grande quebra galho quando já se sabe o que se vai fazer e como fazer. Andar de rodinhas é válido desde que esteja empenhado em um dia deixar de usá-las.

1

A única parada é que às vezes pra adicionar uma única feature ao projeto, parece uma novela. Dá muita coisa errada, eu até consigo resolver, mas às vezes fico perdido depois de tanta tentativa. No final funciona, mas não pq eu planejei funcionar, mas pq usei força bruta e cheguei em uma solução.

1

Se for boilerplate, 100%. O programador deve ter ciência do que está sendo feito exatamente. Se estiver copiando/colando assim que aprendeu, deve ler a documentação, mesmo que sob demanda, imediatamente ou em algum momento próximo do momento que o código foi copiado/colado.

Se alguém deseja ser PROGRAMADOR, no sentido da palavra, precisa compreender as tecnologias com a qual trabalha a fundo, sem terceirizações. Não se terceiriza o core de uma profissão. E o código é o core da profissão de um programador.

Sobre memorização: você se lembra do que usa com frequência. É assim que o cérebro funciona. Esquecer é para o nosso bem: se lembrássemos de tudo, viveríamos delirando, sem distinção entre realidade, lembranças e imaginação.
Mas você só se lembra do que é importante, batido e repetido. Não tem atalhos, meu amigo.

1

Eu diria que o ideal é copiar o máximo possível, mas pra você fazer isso de forma saudável vai ter que gastar bastante tempo aprendendo como as coisas funcionam.

1

Cara, vou te dar minha humilde opinião, no começo, copie tudo, cegamente mesmo, vou explicar o porque mas creio que levantarei controvérsias 😅😅😅.

Acho que tem até um video do Fabio Akita que fala algo desse sentido, tipo, seja como um bebê, não saia correndo antes de andar kkkkk...

Eu creio que vc passará por algumas fases...

Fase 1 - Cópia Cega

É o seguinte, eu acredito que quando vc vem do zero absoluto, vc deveria copiar tudo cegamente, eu fiz isso e me ajudou muito no começo. Repetir, repetir, repetir.
Porque:
Nesse ponto, vc não sabe nada, tipo, p%o$$a nenhuma 😅😅😅, te encher de conteúdo vai te deixar mais cofuso, e se vc quisesse saber de tooodas as bases e tivesse tempo pra isso, tu tinha ido pra uma faculdade. MAS, a parte de saber de todas as bases é muito importante, só não acho que para alguém que queira e precise "entrar no mercado" isso seja uma prioridade. E óbvio, tu vai precisar correr atrás disso depois.
Nesse momento vc não estrá apto ainda nem a perguntar acertivamente, suas perguntas parecerão bem básicas, como por exemplo, em javascript, o que é um let e um var, e porque não usar let em tudo ao invés de var (cara use const hihih)... e por ai vai... Alguns seniores provavelmente ficarão irritados com suas perguntas, porque eles esquecem que já foram assim um dia rsrs, mas fica de boa que é assim mesmo... Com o tempo, as coisas começarão a fazer um pouco mais sentido e vc começará a tentar fazer suas próprias coisas. Daí vem uma a próxima fase que é a de replicação.

Fase 2 - Replicação

Aqui vc já entende mais ou menos o que faz o que na linguagem, mas não sabe ao certo a hora de usar o que. Tipo, um for, for of, foreach, map por exemplo (em javascritp), talvez pra vc todos façam a mesma coisa. Provavelmente vc vai levar um tempo para porduzir algo, quando fizer vai te dar uma sensação de super poder fantástica, vai ter dúvidas mas vai usar os guias anteriores, seus códigos anteriores, suas aulas anteriores, seus professores para tirar dúvidas pontuais e a partir de agora suas dúvidas começam a ser mais relevantes.
Nesse momento, pouco do seu código ainda será "original" de fato, vc ainda vai estar meramente REPLICANDO, porém, agora, não mais para criar mais do mesmo, ou seja, exercícios que todo mundo faz, mas pra fazer novos exercícios e alcançar novos objetivos. Eu acredito que aqui vc já está Júnior, apenas fique calmo e continue e a próxima fase virá.

Fase 3 - Mar aberto, por onde eu vou??? 🤷🏽

Tu já sabe bastante coisa, já se vira sozinho, já consegue ler as documentações das libs, com aqueles exemplos mega idiotas que quase sempre não servem pra merda nenhuma a não ser te deixar mais confuso 😅😅 (brincadeira), mas pelo menos agora tem dúvidas que começam a ser mais complexas e abstratas, que säo mais do tipo, o que performa mais, Big O que raio é isso..., usar Clean Code ou não usar, testes ou não testes, tão me pedindo pra fazer mais rápido, faço como?? Enfim... Nesse ponto seus códigos começam a ter mais a sua cara, vc já tem julgamento das coisas, sabe o que quer e como usar e começa a pensar mais pra fazer.

Fase 4 - A vida!!!

Seja livre, explore, questione, pergunte, seja humilde e ajude! Aqui tu pode copiar ou não, tanto faz, o que for mais rápido e atenda as necessidades da tua entrega. Vá atrás das bases, se fortaleça no conhecimento, no emocional, é um bom mercado, mas extremamente duro para o emocional. Dividir o pessoal do trabalho fica mais complicado, mas cuide disso! Clientes serão sempre clientes e sempre vão querer tudo pra ontem, mas nesse momento, vc já vai estar apto a dizer o que é possível e o que eles querem kkkkkkkkkk! O mais importante, seja grato pelo que alcançou, seja feliz apesar dos pesares e divirta-se sempre com tudo o que fizer, por mais chato que seja, e vai por mim, vão ter coisas que são um porre kkkkkkkkkk!!!

Bem esses são meus 5 centavos... Lembrando que isso não é exatamente uma bala de prata, foi o qu eu vi comigo e com muitas outras pessoas próximas.

Espero que eu tenhoa conseguido te dar um norte básico e te deixar um pouco mais calmo e menos afoito. No meu início eu me sentia muito perdido e isso me deixava muito ansioso, errei muito tentando fazer tudo ao mesmo tempo, e deu certo quando foquei em uma coisa e só fui, entâo, meu texto é mais para tentar te ajudar nesse sentido!!!

Forte abraço, precisar de mim pra alguma coisa, cola no discord lá @renanlido

TMJ té mais!!!

0

De acordo com o site do mega curioso:

Entre as pessoas com até 8 anos, o número de palavras conhecidas era de 10 mil. As crianças com 4 anos conheciam 5 mil palavras.

Se com 8 anos você aprende 10 mil palavras, porquê você não decoraria as poucas centenas de termos da sua linguagem?

é só pratica amiguinho :)

Você sabe bem o inglês? se não, você só tá decorando os termos da linguagem, dai fica mais difícil aprender.

E lembre-se, programar não significa saber todos os comandinhos, é muito mais profundo que isso.