Becoming a full stack developer - Part 2: Plan revisited
Tags: career, beginners, productivity
Published: 2019-12-22 21:36:43

One big obstacle I often create for myself is not to get back to plans once they are made. I often get bored when I see something mundane for the second time. But it is also a creative way of saying "I don't follow through on all my commitments", which is true in many cases and that's dangerous. One of my resolutions for 2020 is to be more deliberate in what I am doing or not doing. Why not start before the year ends?

In my [first article](https://dev.to/ajascha/becoming-a-full-stack-developer-part-0-decision-plan-routines-1iab) of this series, I laid out a few actions for myself. When I revisited them, I immediately realized a few things: (1) too many topics at once = lack of focus, (2) I have not been following through with all (which is partly a consequence of #1) and (3) some of the actions are quite fuzzy. Normally I would attribute #3 to getting my procrastination in place, except here I believe it is simply a case of _excitement chaos_ - which is a good thing!

Let's look at how I have been doing and revise where needed.

# Full stack web development
### The WHAT

> - Databases
> - Building APIs
> - Docker & Kubernetes
> - Deployment
> - Make it look ok with React & Material 

The one thing that sticks out is the last line: I know how it got there (hey there, herd behavior!) and learning these may be essential for certain jobs but at this point in my journey it is just giving me bad sleep. I view it as rather optional at this point and it is simply not a priority of mine. So long, React and Material! I'll stick with [Bulma](https://bulma.io/) and plain JavaScript for a little longer.

Apart from that, the above is essentially the curriculum of my Nanodegree and the very foundation of where I want to go. I will share my gains and pains on the ND in a separate post but overall it is the right direction for me. What I will add is that I want to be finished by February 23. This is a tight timeline but mostly boils down to prioritization. And I do want to pay for the fourth month, so there's money in the game, too.

### The HOW
>- Udacity Nanodegree
>- Own projects, such as my website
>- Free Code Camp

The ND is well-defined, not much to say about that. The rest was very fuzzy and I still have not made up my mind about what to do with my [website](www.ajascha.com). It is actually based on Django and not Flask and I currently do not feel inspired to put something meaningful onto it. What I've been wanting to do is to add Google Analytics, but again, this is optional and falls off table for the sake of staying lean. 

[Free Code Camp](https://www.freecodecamp.org/learn) was meant to get my JavaScript game going. The term "basic knowledge" is a stretch by all means and I have been actively avoiding it for whatever reason (verdict: curly braces are annoying on a German keyboard). However, I am aware of the importance and I see substantial benefits for myself to get up to speed so I have decided to complete three lessons on Free Code Camp each day.

### How I have been doing
'tis the time of reflection and the past weeks have been mixed in terms of progress. I have greatly underestimated the rigor of the Nanodegree and under my work circumstances, my focus has been simply too weak. However, I will not dwell on these because I do know that they were just part of it - the other half is mine. To be more concrete: I am about to finish the first section of the ND and I am just a bit behind schedule. 

### Plan going forward
My first two weeks had been great in terms of focus and progress and I want to get back to that state over Christmas break. Since the first section is comparably long (and not very exciting - databases!), I believe it is more an issue of planning than a real problem. The fact that I have dropped the JS habit after a few days is much more sad but I will simply need to pick it back up!

# Machine learning
### The WHAT
> - Bleeding edge of research (computer vision and NLP)
> - Keras & Tensorflow
> - Cloud deployment

Although the _what_ is relatively loosely defined, I have a good understanding of what I mean with each. The only one that does not seem to fit in that space is Cloud deployment and, although it is important, undivided attention is more important.

Tensorflow is another case of _important but not right now_. While it is the foundation for Keras, one can go a long way with the latter before going one layer deeper. I like comparing the two to Python and C: You can spend all your life working with Python and get things done without ever having to worry about how it is implemented. This comparison is not perfect but it should prove my point...

### The HOW
>- Unpaid internship at colabel
>- Read 1 research paper per day
>- Kaggle

... and the beauty is that these days I don't get to write a lot of machine learning code anyway! Kaggle is fun but when you can only sit down for 20 minutes you should not expect magic to happen. All that is ok: I already understand a good amount - definitely more than about web development - and the kicker comes naturally through working on a real problem or competition, which I currently don't have time for.

Regarding papers, I have read about 12 out of about 20 planned. Given my work schedule over the past weeks I am still happy with it even though I missed the ambitious target.

![Progress](https://thepracticaldev.s3.amazonaws.com/i/nnjz0daydi6nzxyeubw7.jpg)

With regards to the internship, there is something cooking at the moment and I will share something on this early January - stay tuned! 😃

### Plan going forward
Coming to terms with machine learning, and particularly deep learning, is a tough nut for me; I am realizing that almost every time I touch any of the two. Compared to web development, math actually plays a role and concepts can become quite abstract. Adding fuel to the fire, my objective was to understand "bleeding edge of research", which simply means that I need to deal with the brightest minds at Facebook, Google and the like. And I admit that these folks have done their homework.

On the paper part, I will keep pursuing my original plan. I can tell that reading a paper is much less of a strain for me today than it used to six weeks ago and I expect knowledge to compound every time. One thing I want to experiment with is to alternate reading papers and reading code. Going through good code actually has leverage effects on other areas (software engineering) and in most cases it is much closer to reality than a paper alone.

Regarding Keras, I am not sure if it makes sense to add it while I am working on the Nanodegree. Probably not. For fun yes, but those moments are rare anyway.

There are two ways how I can get things going, Pomodoro and locking myself out of society: [Pomodoro](https://francescocirillo.com/pages/pomodoro-technique) is a popular technique for time management and also a regular in articles dealing with procrastination. I find it useful for both, and it is also a way of preventing my brain from boiling: I have no issue with reading a scientific paper for 45 to 60 minutes straight. However, mental strain over a long period of time comes at the cost of longer recovery time - time that usually must be spent mindlessly in my case. Pomodoro works for me, but only if I drop technology every 20-25 minutes for a moment.

Locking myself out of society works exceptionally well on trains and planes, where the internet connection is bad or nonexistent. I usually pick one thing that I want to get done on the trip and find it relatively easy to focus for several hours. For some strange reason, it does not work in buildings yet... 🤔

# Conclusion
As you might have noticed, I only de-committed and there are reasons behind that: It is easy to just add more to a list, anyone can do that. Many people do it on your behalf, too, whether it is implicit or by telling you so. And because we are trained to obey authorities when it comes to learning, backing off is often mistaken for failure. Focusing on what matters is a skill that needs to be learned.

Everything that I have taken off the list are relevant skills, relevant for _some_ people. But that does not mean that I (or you) have to prioritize them as well. It may be that this locks me out of my first discussions with prospect employers. But I rather choose to do that than get lost in what _could_ be learned. That space is endless.

# Bonus: Social Media
In the past, I used to get distracted a lot by irrelevant content on Social Media. In particular Facebook, LinkedIn and YouTube were high up on my agenda. No need to explain what the problem is, and I somehow managed to cut most of these platforms for good and use them in a deliberate manner.

Knowing the addictiveness of these platforms, I stayed away from Twitter. During my only test in 2018 (?) excitement did not carry over, whereupon I mentally parked it as "the fast lane to Trump's brain for journalists".

It was not until a few weeks ago when I logged back into my dusted account and accidentally discovered the search function. As it turns out, computer people seem to be discussing interesting things online, with the whole world[^1] watching!

In case you are not using Twitter yet, I highly recommend you have a look. I guarantee that there are some folks who are regularly posting content that _exactly_ falls into your favorite space.

---

This article is part of a series. [Here](https://dev.to/ajascha/becoming-a-full-stack-developer-part-0-decision-plan-routines-1iab) is the first one.

[^1]: Well, part of it