Planning my career development for 2020.
Tags: beginners, career, codenewbie, functional
Published: 2019-12-31 20:44:39

If you are interested in reading this article in Spanish, check out my blog [The Developer's Dungeon](https://www.patferraggi.dev/blog/2019/dic/planeando-2020/)

Well, another year is ending. Even though I don't believe in new year resolutions I do believe in setting commitments for myself.

During 2019 I made a lot of mistakes but I did perfect a process that works for me and allows me to focus, learn and improve physically, mentally and in my career. The end of the year is a good time to review what I have done wrong, what was right and which goals I can set myself for 2020. Planning is great, but let's not kid ourselves, it is hard work day by day what will allow us to reach these goals.

This year was especially very clarifying for me in terms of personal development and deliberate practice, if you are interested in the process I am using for planning and improving myself you can check [my other article](https://dev.to/patferraggi/deliberate-learning-take-control-of-your-career-a78).

---

So without further ado, these are my goals, related to software development, for 2020 and the actions I am planning to take in order to achieve them.

### 1. Become relatively comfortable with Functional Programming

- Finish the book [Learn you a Haskell for great good](http://learnyouahaskell.com/)
- Create a Snake game like [this one](https://www.youtube.com/watch?v=bRlvGoWz6Ig) but using Haskell
- Read again [Mostly adequate guide to functional programming](https://mostly-adequate.gitbooks.io/mostly-adequate-guide/) (I still don't get everything)
- Do the Snake game again but using Functional JavaScript
- Read [Functional programming for the object oriented programmer](https://leanpub.com/fp-oo)
- Read [Structure and interpretation of computer programs](https://web.mit.edu/alexmv/6.037/sicp.pdf) AGAIN
- Apply functional programming knowledge and constructs to my daily job using JavaScript/TypeScript
- Have one personal project using 1 functional programming language(Elixir, Elm, Clojure, and F# are the possible options for now)

### 2. Gain a deep understanding of Software Architecture and Computer Science

- Read the full [imposter's handbook series](https://bigmachine.io/products/the-imposters-handbook/)
- Read and study [Clean Architecture](https://www.amazon.com/-/es/Robert-C-Martin-ebook/dp/B075LRM681)
- Read [Domain Driven Design: Tackling complexity in the heart of software](https://www.amazon.com/-/es/Eric-Evans/dp/0321125215)
- Read [Implementing Domain Driven Design](https://www.amazon.com/-/es/Vaughn-Vernon/dp/0321834577)
- Diagram and analyze the projects I am currently working on and see ways to improve them

### 3. Become a decent frontender, not just a backend guy who does frontend

- Subscribe to [Frontend Masters](https://frontendmasters.com/)
- Learn about reactive functional programming(Rxjs)
- Finish styling my personal website and blog to get a better grip of CSS and animations
- Dive deeper into the framework used at my workplace, currently Angular.

### 4. Get a fully remote job

- Apply to jobs on sites like [WeWorkRemotely](https://weworkremotely.com/) and many others
- Apply to companies I would like to work in that offer 100% remote jobs
- Get better at coding interviews practicing at sites like [HackerRank](https://www.hackerrank.com/) (I am especially bad at this kind of interviews)
- Read [Cracking the coding interview](https://www.amazon.com/-/es/Gayle-Laakmann-McDowell/dp/0984782850)

### 5. Write at least 1 blog post a week

- Plan my time during the week to have a specific schedule for blogging
- Create a list of possible blog post subjects that I would be interested in doing
- Document my progress learning Functional Programming and Software Architecture
- Create tutorials to solidify my knowledge

### 6. Give at least 1 public talk at a meetup

- Create a list of subjects I would be interested in public speaking
- Prepare the talk and give it in an online format as practice
- Give the talk at my current workplace
- Go to meetups frequently so I can get in touch with organizers
- Go to meetups frequently so I can get to know other members, talk to them and reduce my social anxiety

WOW! Now that I wrote down everything I want to do it looks like too much, right? Well I truly think that if I focus and use the process I have been developing during 2019 I can certainly accomplish all these things and others I have planned for myself but are not related to software.

If you think my goals are interesting and would like to follow then please let me know, we can help each other out during the process. Or if you have different goals for yourself, I invite you to detail them in the comments and tell me what steps are you taking to accomplish them.

If you believe there are steps missing for me to get better results please leave them in the comments, I ‘d love to learn about it :smiley:

Finally, thank you very much for taking the time to read this blog post, I wish you a very happy new year :tada:.