Profile picture

Learning Quickly Q&A and Videos

About Learning Quickly

What strategies are there to recover from an unproductive week?

Senior Software Engineer at Twitter profile pic
Senior Software Engineer at Twitter

I recently joined my team, and I've been sort of overwhelmed picking up this new tech stack which may be leading to some procrastination. I literally have to Google for everything I want to write. Twitter also has certain in-house technologies, which are pretty challenging to learn. I also started working on a critical project recently with strict deadlines due to headcount shortage.

I saw this as an opportunity to make an impact and am trying my best, but I wish I had more time to get acquainted with the stack. I feel like I lost a few days last week unraveling through the ambiguity and getting context, so I didn't make progress with implementation as much as I wanted to.

I am kinda anxious that I will miss my delivery in the first project which is not setting a right impression. In my experience, there is no excuse for missed delivery and it will treated as a red flag. It's a newer company for me and my org is revenue-generating. Given the phase Twitter is going through, this project is critical and hence I am hesitant to push back on the timelines too.

I also see mid-level and junior engineers on the project moving way faster than me right now, because of their tenure and familiarity with codebase and that can be disheartening.

Lastly, should I be transparent and discuss with my manager if I feel a few days haven't been productive? I don't see any way that will help.

Show more
Posted 2 years ago
187 Views
2 Comments

Help deciding on a "main" programming language to build awesome projects and for my general career (AWS & Terraform is my main work)

Anonymous User at Taro Community profile pic
Anonymous User at Taro Community

Hello. I did kind of ask about this before, but now it's more prevalent dilemma for me as I'm actively interviewing and many of my best opportunities are asking for someone who ALSO has a software engineering background:

Scenario: This past year at working an AWS Cloud Consulting Partner I only grew my cloud and Terraform skills and it was my first professional role. I didn't have any software engineering mentoring and I had very little programming work outside Terraform, but I got to mess with a few different languages in my spare time and still haven't decided on one to main. So I figure it needs to be a language & framework good for an ambitious one-man project (possibly a PWA) that I can be passionate about which would drive my learning, provide a great and productive developer experience so I can build some epic stuff myself and learn from it.

Basically, I need a versatile, productive, "startupy" programming language that can be my "main" and kill two birds with one stone here as I have entrepreneurial ambitions:

What do I like doing? What am I passionate about? Well, game dev with Godot. But it uses GDscript and job prospects with it are nill. So I'm considering making a game website PWA like the old as a one man show. So definitely a scalable full-stack CRUD project. I want my development experience to be as productive as possible, and for that reason I'm now considering mainly the firs two options here:

1. Ruby on Rails (despite it being the butt of many jokes and claims that its dead) . It being "batteries included" and everything else I hear about it is that its super productive and fun. I have not tried it yet though. It might be an ace because I see a number of "remote work from anywhere" opportunities for ruby devs to work on legacy code, i.e Gitlab, but I'm really wary of it being a bad choice to specialize in for my career.

2. Blazor with NetCore C# - Blazor is new tech with inherent risk, but it would allow me to focus on one language and framework while doing the full stack (I think similar to Ruby with the "batteries included" approach.). There's a risk of Blazor being new, but the Net Core skills I obtain will always be relevant. On the contrary, with javascript I felt like what I knew was never enough, there was always another framework or some abstraction on top of React, or new way to do JS I had to learn, which I found extremely frustrating. I'm really not a Javascript fan because of that, but if I had to, I'd probably try Svelte. But the point is, I'm trying to avoid bouncing around the way I have been. I really need to be an expert with one language and framework, and I'd like to be able to "do it all" with that language and framework for it to have an opinionated way with best practices so I can get up and running quickly and learn the skills I building an awesome project.

3. Golang - I started looking at Golang because of it being said that it has an opinionated way of doing things rather than a 20x ways to do one thing which was very appealing to me. Also it's cloud reputation, compiling down to a binary. BUT - it seems its for microservices rather than an impressive full stack startup project. I'm not sure how motivated I'd be making an API instead of a complete project like the PWA game site I mentioned. I really don't want to have to switch to JS for a React front end to get up and running. For this reason, I'm also not sure if Python is a good choice compared with the first two options. I know it has a templating feature, but can I do it all with that?

Can I get some opinions and advice? I'm looking for a new job and need to build up my core software skills fast as possible:

Speed, productivity, specializing in a worthwhile language and learning core software engineering through making an awesome PWA project are my main targets for this.

Show more
Posted 2 years ago
149 Views
1 Comment

Learn About Learning Quickly

The ability to learn quickly separates high-performing software engineers apart from the rest of the software engineers. This is an important skill because of how fast technology evolves. Think about all of the new frameworks that are constantly being introduced or new concepts that you have to pick up on. Not only that, you have to learn about business needs, but you have to be adaptable enough to learn when business needs shift.
It’s important to maintain a clear mind for creative thinking and good decision making. There can be a lot of facts, but you can always look them up at any time. Try to understand concepts at a higher level. This can be especially effective to prevent you from getting overloaded with work.
Rapid learners excel at problem solving. By learning quickly, it’s easier to debug complex code because you can understand how different components in a system architecture can interact with each other. Engineers who prioritize ongoing learning cultivate a growth mindset.
A growth mindset is a belief that one’s abilities and intelligence can be developed through dedication and hard work. This is in contrast to a fixed mindset which is the belief that one cannot change the abilities and intelligence that they are born with. A growth mindset encourages individuals to view challenges as opportunities, and it fosters resilience and a willingness to take on new challenges. Embracing a growth mindset involves being open to learning new information and leaning into problems that feel uncomfortable. Individuals with a growth mindset are more willing to accept feedback from other people.
There are various strategies you can use to learn more quickly in a software engineering role. It’s important to focus on hands-on coding and learning by actually doing the work. This means that you dedicate focus blocks where you can code or learn more about something. Leverage the knowledge of your peers by setting up 1:1 meetings with them to learn more about the codebase. If you can find a subject matter expert, they can help you fully understand the context behind a certain implementation.
Be careful about going down learning rabbit holes. it’s important to ensure that actual learning and retention is happening. Make sure to take notes and constantly review your notes or the knowledge will get stale. Taking notes can help you to ramp up quickly at a new company. Make sure to immerse yourself in the codebase and start to run the code and intentionally break things to get a better understanding of how things work.
The ability to learn quickly is a transformative skill in the software engineering world. Rapid learners not only stay ahead of technological trends, but they also contribute significantly to the success of their teams and companies.
Show more