30 days of Javascript no LeetCode

No texto anterior, eu comecei a usar o site Hacker Rank para praticar algoritmos e comentei sobre isso com o meu namorado. Ele sugeriu testar o LeetCode porque eu não precisaria usar Node.js e poderia me concentrar apenas no desafio do algoritmo. Já estou no segundo dia usando o LeetCode. Reforço: esses textos dentro de series, tipo esse e o do System Design, sou eu trocando o twitter/x e bluesky pelo dev.to . Dito isso, eu vou falar de forma despreocupada, tipo "mesa de bar". Por favor, levem isso em consideração hahaha ... Eu confesso que sempre tive a impressão que LeetCode era coisa de gente muito inteligente e que definitivamente isso não era pra mim, o pensamento de "brucutu ignorante" que boa parte de nós, devs, temos com as coisas que escolhemos não conhecer e apenas julgar hahaha Eu falo isso porque foi um julgamento que eu fiz com base no que eu via dos meus colegas no Twitter, tanto que eu nunca vi nenhuma colega mulher falando sobre LeetCode - e sabemos que "ás vezes" homens gostam de fazer o equivalente a "quem tem a p*ca maior" usando salários, hobbies tipo café, empresa que trabalha e inclusive, algumas "demonstrações intelectuais" como desafios super complexos de algoritmos. Eu sei que praticar desafios de algoritmos ajuda em entrevistas de emprego, mas, como desenvolvedora que trabalha no Brasil, eu nunca precisei fazer um teste de algoritmo e ficar discutindo a complexidade e etc - nunca fiz teste pra empresas que exigem essas coisas e confesso que eu peguei ranço por conta dos meus colegas de rede social vestindo um monóculo e enrolando a ponta do bigode cada vez que iriam falar de onde trabalhavam e sobre os testes de algoritmos hahaha Mas ei, se você também criou esses julgamentos, estou aqui pra te falar que resolver desafios de algoritmo é super legal, não é uma coisa para semi deuses e não vai te tornar uma pessoa de monóculo - exceto se você já tiver tendência a "medição de p*ca", mas ai a culpa não é da plataforma. Como é o LeetCode Sim, tem a parte dos desafios super difíceis. Mas essa não é a plataforma toda. Inclusive, mesmo se você for iniciante em Javascript (já precisa saber programar, menos que isso você não vai conseguir aproveitar bem e vai se frustrar) o LeetCode é sim para você. Ou então, se você já é dev pleno ou senior mas não tem tempo e nem interesse de ficar gastando horas e horas com coisa que você nem usa no trabalho, saiba que em 10 minutos você resolve um desafio no LeetCode e vai aprender coisas legais. Minha sugestão é você começar pelo "30 days of Javascript" na plataforma. O único ponto é que precisa saber inglês ou pelo menos, ficar traduzindo o que não entender (acho que tem tradução direta da pagina no navegador também, mas não testei). Mas tirando esse ponto do idioma, os desafios desse plano de estudos são bem possíveis de serem feitos em poucos minutos. A carinha do plano de estudos e os dois exercícios que já resolvi Mesmo se você já for pleno ou senior, porém não tiver costume com desafios de algoritmo, também sugiro que comece por esse plano de estudos. Sim, você vai achar as coisas fáceis mas vai ver que tem oportunidade de aprender principalmente a pensar sobre a estrutura de como solucionar um problema e de se acostumar a ter 3 ou 4 formas de resolver o mesmo problema - e saber o porquê de cada escolha. O desafio está descrito na aba "description" e é interessante ler tudo (eu fui nessa do "ah, é fácil" não li tudo e fiz errado na primeira haha Ah, o mercado cria muito mal habito na gente) para não fazer nem a mais e nem a menos do que realmente foi pedido. Mas a minha parte preferida fica na aba "editorial", que é a coisa mais valiosa do LeetCode, na minha opinião: Aqui, você vai não apenas entender qual o objetivo do teste mas aprender sobre o conceito em si e poxa, falar de closures em Javascript me deixa emocionada. E curti mais ainda que essa parte trouxe 4 formas possíveis de solucionar o desafio, por ordem de performance e simplicidade, além de trazer um conteúdo super interessante fazendo um comparativo de classes no Javascript (que não são classes de verdade, como no Java, porque o construtor é uma função) com Closures. Um pequeno parêntese para falar sobre closures Closure é uma funcionalidade bem poderosa e interessante, porém, dificilmente usada porque as pessoas sempre falam que "não precisa", que é "perigoso", que "não é performático" mas na verdade é porque acabamos vendo muito projeto de mercado usando JavaScript estritamente com orientação a objetos, que "não complica". Não tenho nenhuma objeção contra uso de paradigma de orientação a objetos com JavaScript, a linguagem inclusive dá suporte para esse comportamento, milhares de empresas usam dessa forma e é prático porque é mais familiar para quem vem de Java ou C#. Porém, saibam que tem muito comportamento interessante do JavaScript que deixamos de aproveitar porque acabamos usando ele como um Java com sintaxe mais simples - e ai vem

Jan 19, 2025 - 02:15
30 days of Javascript no LeetCode

No texto anterior, eu comecei a usar o site Hacker Rank para praticar algoritmos e comentei sobre isso com o meu namorado. Ele sugeriu testar o LeetCode porque eu não precisaria usar Node.js e poderia me concentrar apenas no desafio do algoritmo. Já estou no segundo dia usando o LeetCode.

Reforço: esses textos dentro de series, tipo esse e o do System Design, sou eu trocando o twitter/x e bluesky pelo dev.to . Dito isso, eu vou falar de forma despreocupada, tipo "mesa de bar". Por favor, levem isso em consideração hahaha

...

Eu confesso que sempre tive a impressão que LeetCode era coisa de gente muito inteligente e que definitivamente isso não era pra mim, o pensamento de "brucutu ignorante" que boa parte de nós, devs, temos com as coisas que escolhemos não conhecer e apenas julgar hahaha

Eu falo isso porque foi um julgamento que eu fiz com base no que eu via dos meus colegas no Twitter, tanto que eu nunca vi nenhuma colega mulher falando sobre LeetCode - e sabemos que "ás vezes" homens gostam de fazer o equivalente a "quem tem a p*ca maior" usando salários, hobbies tipo café, empresa que trabalha e inclusive, algumas "demonstrações intelectuais" como desafios super complexos de algoritmos.

Eu sei que praticar desafios de algoritmos ajuda em entrevistas de emprego, mas, como desenvolvedora que trabalha no Brasil, eu nunca precisei fazer um teste de algoritmo e ficar discutindo a complexidade e etc - nunca fiz teste pra empresas que exigem essas coisas e confesso que eu peguei ranço por conta dos meus colegas de rede social vestindo um monóculo e enrolando a ponta do bigode cada vez que iriam falar de onde trabalhavam e sobre os testes de algoritmos hahaha

Mas ei, se você também criou esses julgamentos, estou aqui pra te falar que resolver desafios de algoritmo é super legal, não é uma coisa para semi deuses e não vai te tornar uma pessoa de monóculo - exceto se você já tiver tendência a "medição de p*ca", mas ai a culpa não é da plataforma.

Como é o LeetCode

Sim, tem a parte dos desafios super difíceis. Mas essa não é a plataforma toda. Inclusive, mesmo se você for iniciante em Javascript (já precisa saber programar, menos que isso você não vai conseguir aproveitar bem e vai se frustrar) o LeetCode é sim para você.

Ou então, se você já é dev pleno ou senior mas não tem tempo e nem interesse de ficar gastando horas e horas com coisa que você nem usa no trabalho, saiba que em 10 minutos você resolve um desafio no LeetCode e vai aprender coisas legais.

Minha sugestão é você começar pelo "30 days of Javascript" na plataforma. O único ponto é que precisa saber inglês ou pelo menos, ficar traduzindo o que não entender (acho que tem tradução direta da pagina no navegador também, mas não testei). Mas tirando esse ponto do idioma, os desafios desse plano de estudos são bem possíveis de serem feitos em poucos minutos.

Tela inicial do plano de estudos de 30 dias de javascript
A carinha do plano de estudos e os dois exercícios que já resolvi

Mesmo se você já for pleno ou senior, porém não tiver costume com desafios de algoritmo, também sugiro que comece por esse plano de estudos. Sim, você vai achar as coisas fáceis mas vai ver que tem oportunidade de aprender principalmente a pensar sobre a estrutura de como solucionar um problema e de se acostumar a ter 3 ou 4 formas de resolver o mesmo problema - e saber o porquê de cada escolha.

O painel de desafio do LeetCode

O desafio está descrito na aba "description" e é interessante ler tudo (eu fui nessa do "ah, é fácil" não li tudo e fiz errado na primeira haha Ah, o mercado cria muito mal habito na gente) para não fazer nem a mais e nem a menos do que realmente foi pedido.

Mas a minha parte preferida fica na aba "editorial", que é a coisa mais valiosa do LeetCode, na minha opinião:

Aba de editorial, com explicações sobre o exercicio

Aqui, você vai não apenas entender qual o objetivo do teste mas aprender sobre o conceito em si e poxa, falar de closures em Javascript me deixa emocionada. E curti mais ainda que essa parte trouxe 4 formas possíveis de solucionar o desafio, por ordem de performance e simplicidade, além de trazer um conteúdo super interessante fazendo um comparativo de classes no Javascript (que não são classes de verdade, como no Java, porque o construtor é uma função) com Closures.

Um pequeno parêntese para falar sobre closures

Closure é uma funcionalidade bem poderosa e interessante, porém, dificilmente usada porque as pessoas sempre falam que "não precisa", que é "perigoso", que "não é performático" mas na verdade é porque acabamos vendo muito projeto de mercado usando JavaScript estritamente com orientação a objetos, que "não complica".

Não tenho nenhuma objeção contra uso de paradigma de orientação a objetos com JavaScript, a linguagem inclusive dá suporte para esse comportamento, milhares de empresas usam dessa forma e é prático porque é mais familiar para quem vem de Java ou C#. Porém, saibam que tem muito comportamento interessante do JavaScript que deixamos de aproveitar porque acabamos usando ele como um Java com sintaxe mais simples - e ai vem as reclamações de comparar coisas totalmente diferentes.

Mas eu falarei sobre isso num artigo sério que vou publicar na próxima semana, o "Javascript Idiomático". Voltando ao assunto:

Medidor de runtime

o medidor de runtime do leetcode

Depois de submeter o seu teste (e é bem legal que tem casos de teste para garantir que você tá atendendo ao cenário pedido) você vai ver o quanto performática foi a sua solução e quantas outras pessoas também elaboraram soluções com o tempo aproximado de execução que o seu levou para ser executado. Isso é muito legal porque é possível olhar quais foram as outras soluções mais rápidas de execução e expandir o seu repertório sobre formas variadas de resolver o mesmo problema.

Concluindo...

Repetindo: LeetCode não é para gênios, é para qualquer pessoa que trabalhe com programação e queira aprender mais. É uma plataforma legal para estudar mesmo sem ter ambições de se inscrever em processos seletivos que usem desafios de LeetCode, e serve bem tanto se você for junior quanto se for senior cansado e ocupado que não tem tempo pra nada. 10 minutinhos você tem sim haha Nem que seja pra ir conhecer e ver que não é algo fora da sua realidade.

Eu não to ganhando absolutamente nada pra recomentar isso aqui e nem quero, estou falando porque foi algo que eu realmente achei vantajoso. Então, de uma chance e vai conhecer o 30 days of Javascript!