As 4 Dicas para você ter uma Carreira de Sucesso com Python

Olá a você meu/minha caro/cara leitor(a)!

Primeiro de tudo, quero dizer que Python é uma linguagem encantadora e que fico feliz por você ter escolhido ela! Mas por que eu digo isso? Pois a comunidade, a quantidade de cursos, as pessoas e os eventos são incríveis, diria que é quase uma fraternidade, já que todos tentamos nos ajudar na medida do possível.

Neste post, eu quero apresentar a vocês as 4 dicas que podem fazer você ter uma carreira de sucesso em Python (principalmente, mas não somente nesta linguagem)!

Estas dicas podem ser seguidas por qualquer pessoa, independente de sua formação anterior e não precisam ser seguidas em ordem (esta ordem foi feita de forma arbitrária).

#1 – Estude a linguagem e aprenda seus frameworks e macetes

Pode parecer uma coisa bem simples, mas estudar a linguagem e saber quando usar certos recursos dela pode fazer com que você economize linhas de código, dê uma solução elegantíssima e ainda impressione o seu entrevistador.

Invista em conhece-la e conhecer as formas diferentes de implementações de soluções. Existem diversos livros que podem lhe auxiliar neste processo de aprendizagem: se você ainda não conhece Python, existem os livros: “Python: Escreva seus primeiros programas” do Felipe Cruz (abraço, Felt), “Curso intensivo de Python” do Eric Matthes e o “Introdução a programação com Python” do Nilo Ney.

Para você que já está no meio do Python e já conhece a sintaxe básica, super recomendo ir para os livros de conhecimento mais avançados como: “Python Fluente” do Luciano Ramalho (abraço garoano!), “TDD with Python” e mais alguns livros e cursos de aspectos mais específicos.

#2 – Escolha uma especialidade

Image result for developers

Imagem retirada das buscas do Google.

A escolha de uma especialidade no inicio de sua carreira pode te fazer alavancar todo seu aprendizado e te ajudar a focar em um nicho específico, mas calma, não estou falando para você se prender a ela para o resto de sua vida!

Uma especialidade como ciência de dados, machine learning, back-end e muitas outras pode te alavancar e te ajudar a encontrar aquele trampo dos sonhos.

#3 Frequente os eventos, e se você quiser, palestre

A imagem pode conter: 10 pessoas, pessoas sorrindo, multidão

Imagem da turma LINDJA da última Python Brasil que rolou em Natal, mas que eu não pude ir!

Pense em eventos que você pode conhecer as pessoas que se interessam pelas mesmas coisas que você, podem te ensinar muito e que você ainda pode tirar uma dúvida do algoritmo de Dijkstra (este é um dos exemplos, mas pode ser o que você imaginar) enquanto toma uma cerveja com essa galera.

Essa liberdade que temos dentro da comunidade nos torna acolhedores, e uma forma de retribuir isto é com uma palestra em um evento! Ao subir no palco, sentir o frio na barriga, você será exposto a várias pessoas novas e possíveis empresas que queiram te contratar (e sim, isso acontece de verdade e sou a prova viva disso).

#4 Contribua com projetos Open Source, isso vale a pena em seu currículo

Image result for open source

Códigos abertos (open source), Free and Open Source Software e outras filosofias que pregam por soluções que tenham o código aberto podem parecer estranhas para um começo de conversa. Por que uma pessoa pagaria por uma pessoa que mexesse em um software gratuito e de código aberto?

Esta resposta é simples: se o código está aberto, qualquer um pode manter o sistema, logo você não fica na mão de apenas um desenvolvedor que está naquele projeto.

Estar no meio de um projeto de código aberto faz com que você ganhe expertise em: desenvolver códigos que sejam manuteníveis, escrever documentações para outros usuários e ainda ajude as empresas com a resolução de algum problema.

Alguns projetos open source do Python que são grandes e bacanas de contribuir são: Django, Flask, Pandas, SciPy, PyTest, Flake8 e muitos outros que você pode conferir na seção Explorar do Github.

Caso você esteja procurando uma nova oportunidade de emprego Python, o PyJobs pode te ajudar! Nele, as empresas postam as vagas disponíveis para toda a comunidade Pythônica! O que você está esperando? Acessa lá e mete ficha!

E você, meu caro, o que achou deste post? Deixe sua opinião nos comentários!

Why Should You Care About Software Maintainability?

Real quick: This essay is mainly written for those who are not a software developer yet, or don’t code as their principal source of income.

Hey guys, as you all may know (for those who don’t, I’m going to explain it real quick here) I changed jobs, and now, I’m working for a bank in Brazil (I won’t share it’s name here as I’m not paid for advertising them). Coding is a side thing in my career there, I mainly work with investment analysis inside Excel (VBA) and other Microsoft applications. Investment things are very nice, but Excel sucks.

As I’ve seen there, lots of people from Investment Banking are using programming languages to get their work done faster and better than before, which is great, but the point is: Are those codes produced by non-software engineer people maintainable in a production scenario?

Software engineers who care about their code quality, make their code thinking of: error handling, data IO, test-driven development, code readability, code complexity and many other aspects that beginners and non-expert people.

Why should I f*****g care about software maintainability?

If your code will only be used by you for a task, you shouldn’t care a lot for these, your code needs to solve your problem mainly, but when you are working with multiple people in the same project/field/area/department/whatever, you won’t be the only one who will use what you are coding.

For maintainability purposes, Python, created two PEPs that should be followed as a good practice for software engineering. Those PEPs are:

>>> import this
The Zen of Python, by Tim Peters

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!

As shown above, the simplicity and readability counts when developing new software that will be used.

Imagine if you get into a company and there is no documentation about that code, no deploy instructions, no development setup, just the code there. Would you be able to pick it up and continue working where the other people left it? Probably not, we all need best practices for better code maintenance and developers on-boarding on new systems! Maintaining a big code base without good practices is like this meme:

Image result for everything is fine dog meme

The best coding practices are those who all developers in your team know and apply, as well as can be passed to new developers. Here are some use cases of best practices that may be useful:

  • If well written comments (or docstrings) are helpful inside your code base and guide new developers to the maintenance, keep them and update those that need to be updated. Don’t keep dull comments, such as:

# Example of a dull comment

a = 1 + 2 # this line adds 1 with 2 and saves to

# Example of a needed comment

def really_cool_function_that_sums_to_numbers(x, y):
    # This function sums X and Y and returns both

If you need to comment multiple lines of your code to make it understandable, its a good time to think on how to improve it. Code should be readable and easily understandable (PEP 20 lesson here)

  • Functions should do just a single function (sounds redundant, right?) as like Pure Functions (concept from functional programming that states functions that cannot cause side effects to global variables and other functions).

There are plenty of best practices and code styling guides to follow according to your language of choice. The main point of this text is: remember that other developers will maintain your code on a near future, and you will probably maintain it too and won’t remember lots of things. Make your code simple so people understand it and continue your work.