Planning my career  development for 2020 - 6 months review
Tags: career, beginners, codenewbie, functional
Published: 2020-06-05 15:53:08

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

Hey guys how you been? today I am gonna share with you how much have I progressed in this 6 months, analyze what could I have done better and what changes I wanna do to my plan, by the way, if you haven't read my previous article on career development you can check it [here](https://dev.to/patferraggi/planning-my-career-development-for-2020-4okc)

----

## The original plan

### 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

---

## The review

__1. Become relatively comfortable with Functional Programming__

I have been making good progress in this field, I accomplished some of the tasks I have proposed myself regarding this topic, I also watched a course on category theory and read part(not all) of a book on the subject which gave me some common ground to understand other concepts better.

I also did the [Functional Light JavaScript course](https://frontendmasters.com/courses/functional-javascript-v3/) from Kyle Simpson on Frontend Masters, is super good, very clear no BS approach which I really like. I haven't read the book yet but I bet it is also great.

After reading [Mostly adequate guide to functional programming](https://mostly-adequate.gitbooks.io/mostly-adequate-guide/) I also started doing some pet projects using [FP-TS](https://github.com/gcanti/fp-ts) a library for doing functional programming in TypeScript and I am currently using it in a real-life e-commerce website.

After the e-commerce project, I will probably pick a purely functional language like Elm, Clojure, or F# and get to get as much real experience as I can.

Now that I have already done it I would say that jumping straight into Category Theory was probably not a good idea, I had to read stuff multiple times to get it and felt really discouraged at times, it wasn't until I started doing Functional JavaScript and writing about it that I realized how much stuff I knew.

__2. Gain a deep understanding of Software Architecture and Computer Science__

Okay, I didn't do anything here, like nothing at all. I have been so focused on other things that it was very hard to get in line with this. I have the books on my kindle so I will focus on this subject the second part of the year, I don't wanna postpone it because I know how interesting it could be and how much it could help my career now that I am reaching my sixth year as a developer.

__3. Become a decent frontender, not just a backend guy who does frontend__

So, I am still a backend guy who does some frontend but my skills and confidence have grown tremendously in past months, since then I rebuild my website/blog and now I am creating from scratch an entire e-commerce website. I also switched positions at my current job to work mostly as a frontend, I still review the backend pull requests and build some cool asp.net core APIs from time to time though.

This e-commerce project is gonna be a big thing for me, I am part of a team and we are building it from scratch but I need to take care of everything, build every component, do SSR, manage images, fonts, deploy, create a flexible structure so it can evolve over time.

After this project, I am thinking of tackling another type of website built with Elm so I can kill two birds with one shot.
Apart from that, I took a course on Udemy about RX.js which was super helpful for my stressful first month as a full-time frontend developer.

__4. Get a fully remote job__

Here I have been struggling, at the beginning of the year I had tons of bad interviews, and started doubting my skills very bad, I still haven't got a remote job and I am suffering from imposter syndrome. Still, I am trying to adhere to my plan:

1. do one Kata or Coding challenge a day.
2. apply to jobs twice a week.

I have to admit that job offerings have been affected by Corona but I feel that is just an excuse, I have not put enough effort into this task. I will improve from now on, **there is no other way but to be consistent** as I do with everything else.

__5. Write at least 1 blog post a week__

Well, if you look at the numbers you will see that I failed this task, we are now on week 23 of the year and I only have 16 articles written in 2020. So I fall short by 8, that is fine. I have to admit that somedays it has been hard figuring out what to write about, I don't wanna get back on the same topics again and again, but I also have to admit that it has proven to very helpful for my learning. I noticed this when writing about functional programming, it was an opportunity to review the concepts and explain to them as I would like someone had explained to me.

I still have 6 months, in the second part of this year, I will try to get even and go even further.

__6. Give at least 1 public talk at a meetup__

I have made 0 progress in this one, this is definitely one that is gonna hard for me, I am a very introverted guy so even going to the organizers and talk to them is gonna be complicated, when things normalize I am gonna do a speed talk at local meetup, probably about functional programming :smile:

---

## The harsh truth

Now that I have analyzed what my goals were at the beginning of the year and marked exactly how far I have come, I start to feel better about my progress. To be honest, the last few weeks have been hard, I have been struggling with lack of motivation, loss of momentum, and a feeling to throw everything away and just eat pizza and do nothing. 

Luckily I didn't stop reading, it is books like Marcus Aurelius 's Meditations or even "Technical books" like The Clean Coder by Uncle Bob that reminds me why am I doing this. It is my craft, it is my pursue in life, it is without a doubt what I enjoy the most, more than playing games, doing Muay Thai, eating, sleeping, etc. So I should wake up, get up, and do what I ought to do.

I am gonna leave you with two fragments from the books previously mentioned:

Meditations:

> At dawn, when you have trouble getting out of bed, tell yourself: "I have to go to work - as a human being. What do I have to complain of, if I'm going to do what I was born for - the things I was brought into the world to do? Or is this what I was created for? To huddle under the blankets and stay warm?"

> So you were born to feel "nice"? Instead of doing things and experiencing them? Don't you see the plants, the birds, the ants and spiders and bees going about their individual tasks, putting the world in order, as best they can? And you're not willing to do your job as a human being? Why aren't you running to do what your nature demands?

> You don't love yourself enough. Or you'd love your nature too, and what it demands of you. - Marcus Aurelius

The Clean Coder:

> Your career is your responsibility. It is not your employer's responsibility to make sure you are marketable.

>It is not your employer's responsibility to train you, or to send you to conferences, or to buy you books. These things are your responsibility. Woe to the software developer who entrusts his career to his employer.

> Some employers are willing to buy you books and send you to training classes and conferences. That's fine, they are doing you a favor. But never fall into the trap of thinking that this is your employer's responsibility.

> If your employer doesn't do these things for you, you should find a way to do them yourself.

> It is also not your employer's responsibility to give you the time you need to learn. Some employers may provide that time. Some employers may even demand that you take the time. But again, they are doing you a favor, and you should be appropriately appreciative.

> Such favors are not something you should expect.
> You owe your employer a certain amount of time and effort. For the sake of argument, let's use the U.S. standard of 40 hours per week. Those 40 hours should be spent on your employer's problems, not on your problems.

> You should plan on working 60 hours per week. The first 40 are for your employer. The remaining 20 are for you. During this remaining 20 hours you should be reading, practicing, learning, and otherwise enhancing your career. - Robert C. Martin

----

I really hope you enjoyed my review of my career goals for 2020 and that it gives you encouragement to pursue your own goals, time is passing by, it is now or never :smile: 

If you liked this article please share and comment below to let me know, if you have your own set of goals I would like to hear about them.