What nobody tells you when you decide to learn how to code

If you decided to change your career to a technology related field, you probably faced some internal demons. And the first thing that I want to say to you right now is: it’s hard, but not impossible and it’s worth it. And you’re not alone! I was tired of reading only the good and fun and the unrealistic reality of learning to code, so I want to share my experience and hopefully help someone.

When I was first introduced to coding, I fell in love with programming. Since then, it’s been a roller coaster of feelings and motivation and this year I finally started to feel more confident about my choice.

I see some people saying that programming is super easy, that everybody can learn, etc. Sure, I do believe that everybody can learn, but if you don’t have the passion or the curiosity, I have to say that you will eventually feel like “oh, this is not for me”. And the worst, you will think that you are the problem… “if this was supposed to be easy and I can’t code, then the problem must be me, right?”

Wrong, so wrong! It is a process and there are some things you have to learn in order to survive this journey.

So here are some things that I have learned in the last 1 year doing Computer Science and how I am motivating myself to be a better developer while finishing my degree:

1 – It is hard

Even if you did not have a good education in science and mathematics, that should not stop you. It’s all about how bad you want it.

2 – You have to learn to be patient and resilient

The reality is that you won’t solve all the problems at first, but that is okay. Every time you overcome a challenge you become better and more confident. The point is: you have to learn how to learn and how to persist in face of the daily difficulties.

3 – Do a project that you love, yeah… but it’s not about the destination, it is about the journey

What about when you decide to develop something you love but you have no idea how to start? Search for good practices, good tutorials and ask for advice from someone you feel comfortable to ask. Sometimes you may find yourself struggling with something, but with a little help from your friends, you will get it and sometimes learn more than just how to solve that problem ūüôā

4 – Do not ever compare yourself to others

I say this because my boyfriend has almost 8 years of experience in software development and I caught myself having high expectations although I am still learning to code! Frustration is not good, but if you learn from it, you will be okay. So, be careful when comparing yourself to others. Instead, try to learn from their experiences too.

5 – Have fun

Coding is one of my favorite things and sometimes I feel like I am missing this part because I am worrying too much about finishing the semester and doing other personal tasks. But, hey, focus on the present and be proud of yourself because you are investing in the most important thing in the world: your education. And nobody will stop you!

So, what are the others challenges that you faced when you changed your career? I would love to know more about other experiences and learn more. Cheers!

Como ter uma relação saudável com o seu dinheiro

Este √© um post bem diferente, mas que queria compartilhar por aqui. De um ano pra c√°, mudei muito como me relaciono com dinheiro e acredite, nunca √© tarde! Quanto mais cedo voc√™ tomar consci√™ncia do que significa ter independ√™ncia financeira, melhor para voc√™. Se voc√™ quiser ler mais sobre isso, recomendo o conte√ļdo que o Leandro √Āvila oferece gratuitamente no Clube dos poupadores.

A questão é que muitas das coisas que fazemos são feitas sem reflexão, apenas repetimos o que aprendemos culturalmente e dinheiro é uma questão cultural muito forte no Brasil. Um exemplo disso é que a maioria das pessoas acreditam que o dinheiro serve apenas para gastar! Pois bem, eu não sei em que mundo você vive, mas no meu mundo, dinheiro é poder e símbolo de independência financeira e se você não tiver controle nem consciência do que fazer com o seu dinheiro, as lojas irão fazer isso por você.

E acredito que voc√™ n√£o queria depender de um governo corrupto para garantir que voc√™ ter√° uma aposentadoria, certo? \o/ Essa cita√ß√£o do Leandro √Āvila √© muito legal e te deixa bem pensativo:

Se existe uma coisa que devemos diminuir quando estamos falando de dinheiro, essa coisa se chama depend√™ncia. Quanto menos voc√™ depender financeiramente do Estado, institui√ß√Ķes de previd√™ncia e at√© de amigos e parentes no futuro, melhor ser√° para voc√™. A depend√™ncia financeira nunca foi algo desej√°vel. Busque mais liberdade. Quanto mais independ√™ncia financeira, mais liberdade, mais possibilidades, menos problemas e mais tranquilidade. A independ√™ncia financeira n√£o √© garantia de felicidade, mas ela ajuda nas √°reas da sua vida onde o dinheiro tem utilidade.

E isso foi justamente o que me fez mudar de comportamento sobre dinheiro, principalmente quando pensei no quanto eu seria feliz se trabalhasse no que gosto e n√£o porque tenho contas para pagar. Geralmente as pessoas entram na ‘Corrida dos Ratos’ e fazem contas sem nem perceber e a√≠ v√£o gastando cada vez mais com coisas para faz√™-las esquecer do trabalho! Louco, n√£o?

A partir de agora, sempre que vou gastar com algo, faço muitas contas e decido o que é melhor, nada por impulso. Até porque geralmente o impulso de consumir vem de um problema interno relacionado à sua vida, então, muito cuidado ao consumir sem parar para pensar antes!

Então aqui vão algumas dicas para ter uma relação mais saudável com o dinheiro que passei a praticar e recomendo:

1 РMultiplique o valor daquilo que viocê quer adquirir por 2 ou 3 anos e veja o impacto na sua vida
2 РSempre compre à vista (se você não tem o dinheiro para pagar, então não compre)
3 – Dedique um tempinho todo dia para ler sobre um investimento novo (recomendo J√ļlia Mendon√ßa, Gustavo Cerbasi e Me poupe)
4 РFale com seus amigos sobre finanças e discuta sobre isso sem vergonha ou medo

Depois que voc√™ come√ßa a analisar essas coisas, voc√™ aprende a sair do autom√°tico e a dar mais valor √†s suas a√ß√Ķes, ao seu trabalho e ao seu tempo. Maravilha, n√£o? Tudo √© quest√£o de escolha.

Até a próxima!

Minha primeira linguagem funcional: Elixir

Elixir √© uma linguagem funcional que vem ganhando bastante espa√ßo nos √ļltimos tempos. √Č bom para pensar um pouco fora da caixa, principalmente para quem est√° acostumado a programar usando apenas linguagens imperativas (C, Java, etc.), como euzinha aqui. Dentre os maiores paradigmas de programa√ß√£o, a funcional √© a mais antiga!

As linguagens funcionais podem ser compreendidas como avalia√ß√Ķes de express√Ķes feitas pelo computador, em que uma fun√ß√£o pode envolver outras fun√ß√Ķes (se voc√™ quiser saber mais, procure sobre C√°lculo Lambda).

Fiz o curso Try Elixir, do CodeSchool (gratuito e bem r√°pido, corre l√°!). Nessa mesma semana em que tive meu primeiro contato com Elixir, tivemos uma revis√£o de fun√ß√Ķes compostas na faculdade e pra mim foi bem legal ver esses conceitos matem√°ticos assim diretamente aplicados.

Em Matem√°tica, por exemplo, podemos fazer v√°rias fun√ß√Ķes dentro de fun√ß√Ķes. Considere

f(x) = sen(x);
g(x) = log(x);
h(x) = x‚Āī;

Podemos fazer a seguinte composi√ß√£o das fun√ß√Ķes acima: f(j(h(x))), ou seja,

sen(log(x‚Āī))

Assim, pensei em implementar essa função composta em Elixir e para fazer isso, vamos usar o pipe operator. Ele funciona assim (veja mais aqui):

O operador pipe é representado por |>, recebe o resultado de uma expressão e passa ele adiante. Vamos dar mais uma olhada no trecho de código acima reescrito com o operador pipe:

other_function() |> new_function() |> baz() |> bar() |> foo()
O pipe pega o resultado da esquerda e o passa para o lado direito.

Usamos a biblioteca :math, que é a mesma usada em Erlang, ficando assim:


defmodule CompositeFunction do
  def my_example(x) do
    result = :math.pow(x, 4)
    |> :math.log()
    |> :math.sin()
    IO.puts(result)
  end
end

Para rodar local, digite iex para entrar no compilador, depois c(“composite_function.ex”) e depois CompositeFunction.my_example(seu_argumento). E Voil√†!

Rodando CompositeFunction.my_example(5) no terminal, ele retorna:
0.15395162623403327
:ok

Espero que curtam, até a próxima!

Outsourcely: promo code de 30% em todos os planos!

Sabemos que atualmente as pessoas buscam cada vez mais por propostas de emprego que lhes tragam qualidade de vida, talvez por isso o n√ļmero de pessoas que trabalham remotamente tenha aumentado. Dentre os in√ļmeros benef√≠cios que podemos citar com essa rela√ß√£o de trabalho est√° justamente um melhor aproveitamento do tempo, a moeda mais valiosa do mercado. Ficar preso em um escrit√≥rio o dia inteiro, com hor√°rios engessados h√° muito tempo deixou de ser o que as pessoas procuram.

Em contrapartida, torna-se cada vez mais dif√≠cil encontrar profissionais confi√°veis e qualificados, levando empresas a empenhar bastante tempo nessa jornada, n√£o havendo garantias de que encontrem o que procuram. A Outsourcely √© uma plataforma criada em 2014 que vem crescendo bastante nos √ļltimos anos, competindo de igual para igual com outras plataformas j√° estabelecidas no mercado e promete resolver esse problema. J√° s√£o mais de 250.000 profissionais remotos cadastrados de 180 pa√≠ses e mais de 25.000 empresas cadastradas!

Os canais de atendimento também são variados e o pagamento do serviço é feito apenas entre você e o profissional, sem pagar nada para Outsourcely. Além disso, eles oferecem diferenciais que se tornam vantajosos tanto para quem busca profissionais qualificados quanto para quem oferece seus serviços: os projetos são todos avaliados previamente e o freelancer recebe 100% do pagamento (algumas pagam menos de 20%, ficando com a maioria do que você ganharia :/). Além disso, você escolhe se quer um trabalho remoto estável, de 40h por semana ou quer aumentar sua renda fazendo um trabalho remoto durantes as horas vagas (:

E o legal da Outsourcely é que lá você encontra tudo que você procura para o seu produto: Designers, Desenvolvedores, Redatores, Marketing, Contabilidade, Advogados, e muito mais! Lá você realmente vai encontrar os melhores e qualificados talentos que você precisa. Como freelancer, você criar seu perfil e se comunica diretamente com as empresas.

Por isso, se você busca uma plataforma que vá te ajudar a trabalhar remotamente, entre no Outsourcely e use o código staff30 e ganhe desconto de 30% em qualquer um dos planos (você pode testar a plataforma usando-a gratuitamente, mas o desconto é sem vencimento, olha que alegria!). Compartilhe com seus amigos também e aproveitem!

Até a próxima!

Can you get the loop? #Codewars

No final do ano passado meu namorado me mandou esse site super legal para treinar Algoritmos (sempre bom): Code Wars. Porque eu curti? √Č mais amig√°vel, a comunidade √© mais ativa e voc√™ cria um cl√£ com seus amigos. Ainda que voc√™ seja iniciante, ele te sugere problemas mais dif√≠ceis para voc√™ ir treinando, al√©m de mostrar as solu√ß√Ķes de outros participantes para voc√™ analisar e aprender boas pr√°ticas depois de submeter sua solu√ß√£o. E j√° que falamos de cl√£s, quem quiser entrar no meu, a√≠ vai o link: entre no meu cl√£! =D

Semestre passado, vimos algumas Estruturas de Dados e dentre elas, listas encadeadas. Daí resolvi resolver um Kata para revisar nas férias e postar aqui para discutir com vocês.

O problema

Pode ser acessado aqui e a seguir a descrição:

You are given a node that is the beginning of a linked list. This list always contains a tail and a loop.
Your objective is to determine the length of the loop.
For example in the following picture the tail’s size is 3 and the loop size is 11.

Portanto, a solu√ß√£o requer descobrir a posi√ß√£o do tail (que ser√° o n√≥ cujo conte√ļdo se repete) para retornar o tamanho do loop. O que eu fiz foi criar um dicion√°rio e armazenar os conte√ļdos dos n√≥s at√© encontrar um que se repete – o tail. A partir da√≠, rodei outro while para retornar o tamanho do loop. O c√≥digo em Python pode ser visto a seguir:


def loop_size(node):
    my_dict = {} 
    p = node // node é o head que foi passado como argumento
    my_dict[node] = p //inicializando dicion√°rio com o conte√ļdo de node
    
    while p.next not in my_dict: 
        p = p.next
     
    my_dict[p] = p
    tail = p // ao sair do loop eu acho o tail, pois é ele que repete
    
    t = tail
    size = 1 
    while t.next != tail: 
        t = t.next
        size +=1
        
    return size

Sei que é possível resolver esse problema sem utilizar dois whiles, mas por enquanto fica essa solução e depois eu posto novamente o código refatorado, pois ainda preciso estudar mais sobre dicionários. Curtiram? =P

“Mais r√°pido e melhor”: como alcan√ßar seus objetivos

Em Mais r√°pido e melhor, Charles Duhigg faz um explora√ß√£o inovadora da ci√™ncia da produtividade e por que, no mundo de hoje, como voc√™ pensa √© muito mais importante do que o que voc√™ pensa. Com base nas √ļltimas descobertas da neuroci√™ncia, psicologia e economia comportamental Duhigg explica que as pessoas, empresas e organiza√ß√Ķes mais produtivas n√£o apenas agem diferente, elas veem o mundo de modos profundamente diferentes. Elas sabem que produtividade tem a ver com fazer escolhas. A maneira como tomamos decis√Ķes; as grandes ambi√ß√Ķes que colocamos em primeiro lugar e as metas f√°ceis que ignoramos; a cultura que estabelecemos para estimular a inova√ß√£o; o modo como interagimos com as informa√ß√Ķes que temos diante de n√≥s: √© isso que separa os simplesmente ocupados dos genuinamente produtivos.

Sempre achei interessante aquelas pesquisas da Psicologia e Neurociência sobre comportamento humano e acredito que esse conhecimento seja algo essencial para saber lidar com as pessoas de forma eficiente e produtiva nos dias de hoje. Você já se perguntou porque algumas conseguem alcançar seus objetivos e outras não? O que pessoas bem-sucedidas têm em comum e o que você pode aprender com elas? Eu sim e sempre quis saber mais sobre a vida delas (aka Beyoncé).

Tudo isso me fez começar a ler esse livro. Nesse post vou falar sobre alguns pontos que achei mais interessantes.

1 – Mapas mentais

N√£o h√° como negar: auto-motiva√ß√£o, foco e produtividade est√£o ligados. Para ter foco √© preciso ter automotiva√ß√£o, para se automotivar √© preciso ter controle das suas a√ß√Ķes, para ter controle das suas a√ß√Ķes √© necess√°rio ser produtivo. Uma forma de juntar tudo isso √© praticar mapas mentais no dia a dia:

Pessoas que sabem administrar a pr√≥pria aten√ß√£o e que t√™m o h√°bito de construir modelos mentais robustos tendem a ganhar mais dinheiro e tirar notas melhores. Al√©m do mais, experimentos demonstram que qualquer um pode aprender a desenvolver o costume de construir modelos mentais. Quando criamos o h√°bito de contar para n√≥s mesmos hist√≥rias sobre o que acontece √† nossa volta, aprendemos a agu√ßar a nossa aten√ß√£o. Esses momentos de narra√ß√£o podem ser simples, como, a caminho do trabalho, tentar imaginar uma reuni√£o iminente ‚ÄĒ fazer esfor√ßo para imaginar como ela come√ßar√°, quais quest√Ķes voc√™ levantar√° se o chefe pedir algum coment√°rio, que obje√ß√Ķes seus colegas talvez fa√ßam ‚ÄĒ, ou podem ser complexos, como uma enfermeira que diz a si mesma que aspecto um beb√™ deve ter enquanto atravessa uma UTI neonatal. Se voc√™ quer aprimorar sua sensibilidade para os detalhes no trabalho, cultive o h√°bito de imaginar, com o maior grau de especificidade poss√≠vel, o que espera ver e fazer quando chegar √† sua mesa […] Se voc√™ precisa melhorar a concentra√ß√£o e aprender a evitar distra√ß√Ķes, tire um instante para imaginar, com o m√°ximo poss√≠vel de detalhes, o que est√° prestes a fazer. √Č mais f√°cil saber o que vem adiante quando temos um roteiro bem formulado dentro da cabe√ßa.

Achei essa parte super interessante, pois é uma prática facilmente aplicável! Vou implementar esse ano e creio que ajudará a diminuir a ansiedade. Esse capítulo ainda fala sobre o mito de sermos multitarefas (nunca fomos xD).

2 – Metas SMART

Como ainda estamos no in√≠cio do ano (embora algumas pesquisas apontem que quase 80% das pessoas j√° esquece das metas feitas no fim do ano a partir do dia 15 de Janeiro), voc√™ deve lembrar quais metas voc√™ prometeu a si mesma(o) que faria esse ano, certo? Acontece que, se voc√™ apenas pensou ou s√≥ colocou no papel sem detalhar as pr√≥ximas a√ß√Ķes para uma delas, sinto informar que as chances de voc√™ alcan√ß√°-las s√£o bem m√≠nimas e vai ficar s√≥ sendo uma promessa mesmo.

Uma meta para ser alcançada precisa ser uma meta SMART (traduzidas ficam):

Específico
Mensur√°vel
Realista
Atingível
Cronograma

Porquê elas funcionam?

[…] o motivo √© que processos de determina√ß√£o de metas como a metodologia SMART obrigam as pessoas a converter aspira√ß√Ķes vagas em planos concretos. O processo de fazer com que um objetivo seja espec√≠fico e demonstrar que ele √© ating√≠vel inclui compreender quais s√£o os passos necess√°rios ‚ÄĒ ou mudar ligeiramente a meta, se os prop√≥sitos iniciais se mostram pouco realistas. Formular um cronograma e um modo de estimar o sucesso imp√Ķe ao processo uma disciplina que nenhuma boa inten√ß√£o supera. […] para que essa meta seja mais do que apenas uma aspira√ß√£o, precisamos de um quadro mental disciplinado que nos mostre como transformar um prop√≥sito remoto em uma s√©rie de objetivos realistas de curto prazo.

√Č preciso ter cuidado para n√£o cair na tenta√ß√£o de criar metas pequenas apenas para ter a sensa√ß√£o de estar no controle (sabe aquela sensa√ß√£o boa de riscar uma tarefa da agenda? √© disso que to falando)! Voc√™ precisa ter ambi√ß√£o, mas aliada a um sistema que te fa√ßa detalhar os pr√≥ximos passos nos pr√≥ximos dias, na pr√≥xima semana, no pr√≥ximo m√™s… Tudo isso faz com que suas metas sejam coerentes com seus objetivos de curto, m√©dio e longo prazo. Isso √© o que David Allen chama de Horizontes no seu m√©todo de produtividade Getting Things Done.

3 – Metodologias √Āgeis

A cultura de dedica√ß√£o da NUMMI simplesmente me deixou sem f√īlego. A Toyota transformou uma das piores empresas de autom√≥veis dos EUA em uma empresa bem sucedida, com seus funcion√°rios produtivos e felizes por trabalhar l√°. Como conseguiram isso? √Č resultado do que a cultura de dedica√ß√£o consiste:

[…] esta √© uma das li√ß√Ķes mais importantes que lugares como a NUMMI e as filosofias enxutas e √°geis transmitem: os funcion√°rios trabalham melhor e de forma mais inteligente quando acreditam que t√™m mais autoridade para tomar decis√Ķes e quando creem que seus colegas est√£o dedicados ao sucesso deles. Uma sensa√ß√£o de controle pode impulsionar a motiva√ß√£o, mas, para esse sentimento produzir ideias e inova√ß√Ķes, as pessoas precisam saber que suas sugest√Ķes n√£o ser√£o ignoradas, que seus erros n√£o ser√£o motivo de retalia√ß√£o.

Interessante, n√£o?! J√° falei um pouco sobre isso neste post aqui. Foi legal de ler sobre esse assunto num livro que n√£o tem aparentemente nada a ver com software (:

4 – Concluindo

Esses foram só alguns casos que quis falar aqui, para deixar vocês com vontade de ler =D
Duhig fala de v√°rias empresas e pesquisas super interessantes e no final do livro, ainda faz um ‘roteiro’ de como aplicar os conhecimentos que ele estudava no nosso dia a dia e como isso o ajudou a terminar o livro. At√© a pr√≥xima!

Manual de sobrevivência 2016.2

√Č com muita alegria que vos falo neste post, pois minha meta desse ano em rela√ß√£o √† faculdade era passar em todas e consegui!!

ai que alegria e sufoco!

Foi muito puxado, pensei em desistir de uma matéria, maaaaas tem que perseverar e nunca desistir! Essa foi uma lição muito importante que aprendi esse ano e que repasso a quem tiver lendo esse post =D

Bom, aí vão os links que me ajudaram para sobreviver a este semestre, separados por disciplina (olha como sou legal xD):

Algoritmos II

Pois bem, esse semestre a mat√©ria mais legal foi a de Algoritmos, onde estudamos recurs√£o, algoritmos de ordena√ß√£o, busca bin√°ria, an√°lise de algoritmos e algumas estruturas de dados. Links super √ļteis:

Algorithms, Part I

Curso gratuito online, se joga!

Sorting Algorithms

Playlist muito didática para quem curte aprender por vídeos.

Data Structures

Idem.

Visualising data structures and algorithms through animation

Esse site é muito legal e foi meu amigo Márcio quem me mandou. Bem colorido e didático.

Dica que vale passar sem sufoco: às vezes você acha que entendeu, mas é só praticando que terá certeza e verá os pontos que não compreendeu, portanto, implemente os algoritmos antes das provas!

C√°lculo I

Segunda mat√©ria mais legal!! C√°lculo √© muito legal e vou deixar tamb√©m alguns links de v√≠deos e sites que me ajudaram a compreender melhor os conte√ļdos: limites, derivadas e introdu√ß√£o ao c√°lculo integral.

LCM Aquino

Segunda vez que esse canal me ajuda, gosto das explica√ß√Ķes dele, pois sempre mostra as provas dos teoremas, al√©m de muitos exemplos.

Toda a Matem√°tica

Esse canal também é muito legal e o professor sempre posta vídeos curiosos do mundo da Matemática.

Wolfram

Site para calcular tudo que você imaginar. Tem plano com desconto para estudante, onde você tem acesso à solução e pode verificar suas respostas (:

Organização e Arquitetura de Computadores

Consegui passar de boa, então você também consegue xD Aí vão os links:

Introdução a Arquitetura de Computadores

Livro muito bom e necess√°rio para a mat√©ria. Tem poucos conte√ļdos online que explicam t√£o bem quanto este livro e que seguem a mesma ementa do Senac (:

Memória Principal

Vídeo que me salvou na primeira prova =D

Projeto Integrador II – Jogo educacional 2D

Graças a meu professor, pude desenvolver o mesmo jogo do meu projeto de Iniciação Científica em Python. O link tá no meu github e vocês podem conferir o meu =D
Nesse PI não posso ajudar muito aqui, a não ser incentivar a criar um jogo que você goste muito da ideia (:

√Ālgebra Linear

Playlist salvadora

Khan Academy

√Č isso, espero que isso seja √ļtil e at√© mais!

Meu 2016 em livros

Ol√°, pessoal! Quanto tempo, n√©? Agora que estou oficialmente de f√©rias, vou escrever mais por aqui para compensar a parada, pois conheci e aprendi coisas novas bem legais esse ano e queria compartilhar com voc√™s ūüėÄ

No início do ano, eu tinha estabelecido uma meta de ler 30 livros esse ano, porém mal sabia eu o quão corrido seria esse segundo semestre, por isso baixei a meta para 20. Resultado? Já li 20 e estou terminando mais 3, então, não foi tão longe do que pensei no início do ano.

Quero agora indicar os livros que mais gostei, claro. Esse ano decidi ler coisas mais diversificadas do que costumava ler e isso foi muito bom, pois me mostrou a import√Ęncia de sair da zona de conforto. Acabei lendo mais sobre motiva√ß√£o, pensamento positivo e organiza√ß√£o financeira. O restante voc√™s podem conferir na imagem:

Meu 2016 em livros

Os que mais gostei foram:

1 – How to Bake Pi – Eugenia Cheng

Ainda não terminei de ler, mas é muito legal! Já falei da Eugenia Cheng por aqui e comprovo que ela é realmente sensacional: Matemática é linda e infelizmente a escola nos faz odiá-la, mas compreendê-la hoje é fundamental. Cheng junta duas coisas que aparentemente não têm nada de comum: raciocínio lógico e culinária. Recomendo para quem queira dar uma segunda chance para a Matemática ou para quem curte cozinhar (:

2 – A Arte de pedir – Amanda Palmer

Esse livro foi indicação da minha querida amiga Amanda e adorei! Livro sensacional que mostra o quão frágil nossa vida é, mas o quão leve ela se torna quando temos pessoas especiais ao nosso lado, além de lutar pelo que acreditamos.

3 – Trabalhe 4h por semana – Tim Ferris

Se voc√™ n√£o leu esse livro at√© agora, V√Ā AGORA e me agrade√ßa depois.

4 – Girlboss – Sophia Amoruso

Fazia tempo que queria ler e achei na promoção, então comprei. Livro muito inspirador, apenas! E nos faz refletir sobre o poder de ir em busca do que gostamos, independente do que vão pensar de nós.

5 – Adeus, aposentadoria – Gustavo Cerbasi

Na metade do ano pra c√°, minha amiga Amanda (isso que √© amiga, hein, aprendam!) me recomendou o canal da Nath√°lia Arcuri, o Me poupe! um canal de informa√ß√Ķes e entretenimento financeiros. Minha vida mudou desde ent√£o e estou sempre indo atr√°s de aprender mais sobre investimentos, tesouro direto, metas, objetivos e por a√≠ vai! Recomendo muito e tenho certeza de que, se colocar em pr√°tica pelo menos metade do que ela fala, seu 2017 vai ser bem melhor do que 2016! =D Ela indicou alguns livros e entre eles √© o Adeus, aposentadoria, do Gustavo Cerbasi. Livro mais do que fundamental para o cen√°rio econ√īmico do nosso pa√≠s.

A maioria desses livros est√£o dispon√≠veis para baixar, por isso, n√£o tem desculpa para n√£o ler xD E voc√™, o que leu de legal esse ano? √Č isso, espero que voc√™s curtam alguns e leiam os que indiquei. Com tudo que li esse ano com certeza em 2017 ter√° muito mais.
Até mais!

Compreendendo Recurs√£o

Muito bem, semestre começou com tudo e estou aprendendo muita coisa nova! Uma delas que estou vendo agora é Recursão. Se você já ouvi falar de Algoritmos, provavelmente já deve ter ouvido falar de Recursão também. De acordo com o material da nossa aula

um processo recursivo é um processo que implementa uma relação de recorrência. Uma relação de recorrência é uma expressão matemática utilizada para expressar uma equação de recorrência.

Wait, what? Vamos por partes, pois esse é um conceito muito difícil de ser compreendido, mas vale a pena, prometo. O mais legal de se aprender recursão é criar algoritmos menores e mais bonitos (embora nem sempre seja o mais eficiente!). Resumindo, uma função recursiva vai chamar a si mesma e retornando os valores de cada chamada, até chegar no caso base.

Calma, n√£o √© m√°gica! Acredito que uma das maiores dificuldades seja compreender os passos para escrever uma fun√ß√£o recursiva para que esta n√£o caia num loop infinito. Por isso √© preciso ter aten√ß√£o √†s duas partes essenciais de uma chamada deste tipo e verificar com n√ļmeros inteiros o problema at√© que voc√™ entenda o que ser√° o caso base e a chamada recursiva a partir do exemplo a seguir:

Considere um vetor de inteiros de tamanho n. Uma função recursiva que calcule o produto dos elementos estritamente positivos de um vetor de inteiros v [0..n-1].

 int produto (int v[], int n) {
     if(n == 1){
   	 return v[0];
     }
     if(v[n-1] > 0){
   	 return v[n-1] * produto(v, n-1);
    }
	return produto(v,n-1);
 }

O caso base РEssa é a parte que você sabe o resultado e deve se aproximar na próxima etapa. No exemplo abaixo, vemos que o caso base é a condição if (n == 1) return v[0];, pois quando o vetor chegar até o primeiro elemento, não há mais necessidade de se calcular o produto, certo?

A chamada recursiva РEsta deve ser quebrada em pedaços menores até atingir o caso base. No nosso exemplo, fazemos duas chamadas distintas. Caso o elemento da posição v[n-1] a ser testada seja positiva, então retornamos return v[n-1] * produto(v, n-1); , caso contrário, chamamos a função para continuar a descrescer o valor de n até atingir o valor de 1, nosso caso base.

O que a função faz é o seguinte. Vamos supor que o nosso vetor v[4] = {1, 2, 3, 4} e o tamanho do vetor seja n = 4.

produto(v, 4)

v[3] * produto(v, 3)
v[3] * v[2] * produto(v, 2)
v[3] * v[2] * v[1] * produto(v, 1)
v[3] * v[2] * v[1] * v[0]
>> 4 * 3 * 2 * 1 = 24

Esse exemplo foi retirado desse material e está disponívelneste link. Veja também outras formas de usar a recursividade para resolver o mesmo problema (:

V√° fazendo com calma cada passo para n√£o se perder (o que √© muito f√°cil) e compreender como o computador entende essas chamadas (vale printar todas as entradas para ver o valor de retorno a cada chamada). D√° um trabalho e sua cabe√ßa buga por um momento (ou dias xD), mas seu c√≥digo fica mais bonito e te deixa com uma sensa√ß√£o maravilhosa de finalmente aprender Recurs√£o ūüôā

Como aprender a programar

Ol√°, pessoas queridas! Este post √© uma compila√ß√£o que resolvi fazer com mais links ¬†e dicas para ajudar a galera que quer aprender a programar. Vale lembrar que, assim como tudo que aprendemos na vida, n√£o se trata de m√°gica, mas de um processo, ent√£o, anime-se para come√ßar a ver as coisas de outro jeito! Abaixo algumas dicas e links para voc√™s ūüôā

1 – Programar se aprende programando

Sei que parece loucura, mas é como aprender outa língua: você tem que praticar para aprender. Neste sentido, sinta-se feliz porque existem muitos sites legais com este propósito!! Acredito que o mais importante é não se preocupar em entender TUDO, ir com calma e paciência.

Embora sejam muitas op√ß√Ķes de links e de cursos e parece que voc√™ saber disso tudo em 1 dia, n√£o se desespere. Veja cada um e escolha o que melhor voc√™ sentir afinidade.¬†Alguns sites que eu usei e recomendo s√£o:

Code.org Рum jeito divertido de aprender Algoritmos! Recomendo fortemente, pois é muito importante dominar Lógica de Programação e além disso, é uma proposta bem legal (tem até tutorial com tema de Star Wars!).

Codecademy¬†– tutoriais com v√°rias op√ß√Ķes bem legais.

Code School –¬†Gosto muito deles e as aulas s√£o em v√≠deo. Alguns s√£o pagos, mas d√° para fazer uns gratuitos.

Udacity – Tamb√©m possuem aulas em v√≠deo e acho mais din√Ęmico que o CodeCademy, por exemplo.

Made with Code¬†– um projeto muito legal para atrais meninas para programar ūüôā

2 РTenha um projeto que você queira fazer

Sabe aquele app que você sempre quis fazer? Ou um sistema que vai ajudar alguém da sua família? Uma das melhores e mais eficientes formas de se aprender a programar é ter um projeto pessoal, assim você vai se sentir mais motivad@ e confiante. Nessas horas, ajuda muito também pegar um código de qualidade por aí e modificar algumas coisas.

Por que aprender a programar? Ora, tudo que gostamos é feito de código!

3 – Tenha um(a) mentor(a)

S√©rio, isso √© MUITO importante. J√° falei isso aqui v√°rias vezes e acho que nunca √© suficiente: procure algu√©m que j√° tenha experi√™ncia para ajudar com suas d√ļvidas (n√£o √© para ficar perguntando tudo, hein). Sabe quando voc√™ tentou e mesmo assim n√£o entendeu, ou quer entender mais sobre algo? N√£o tenha medo de perguntar.

4 – Divirta-se!

Isso é o mais importante e necessário ter em mente. Com isso, sinta-se bem vind@ ao mundo mágico da Programação!