Learning Quickly

Learning Quickly

Tech has so much to learn, making learning how to learn one of the most important things for any software engineer to do. Figure out what you need to do to pick up new skills quickly and properly.

How can I best invest my personal development time as a Staff Engineer who would like to continue progressing as an IC?

Staff Engineer at Taro Community profile pic
Staff Engineer at Taro Community

I'm a Staff Engineer in the satellite telecommunications industry where I am responsible for the strategic success of the software products in my department. My organizational responsibilities and weekly calendar align almost perfectly with the . I'm sure that it will come as a surprise to no one that getting to this point in my career was an intense and conscientious journey. I am self-taught, I fell in love with programming as a child, and I have never attended a University. Things are not even close to perfect, but I am happy with my career so far.

My day-to-day work does not involve much programming, but I spend the vast majority of my time communicating with Tech Leads, Scrum Masters, PMs, TPMs, EMs, etc. to coordinate and accomplish different tasks. The rest of my time is split between communicating and aligning with high-level product stakeholders, such as my boss, and mentoring engineers. When I do code, it is because there is some experiment I want to run, i.e., I might create a prototype of a new product or feature that could massively impact a departmental OKR.

Outside of my day-to-day work, I dedicate as much time as I can to learning and practicing new technical (programming, cloud), professional (LinkedIn Learning), and domain-specific (satellites, AI) skills. I also consume a lot of content here on Taro and I often participate in company and community programs that I believe in (change maker programs, diversity and inclusion programs, etc. as a participant or as a coach).

I would love to have input on this aspect of my career as a Staff Engineer who would like to be a Fellow one day. As I make progress in my career, I find that (obviously) the expectations others have of me, in regard to being at the forefront of technology and really knowing what I am talking about in domain-specific (science-heavy, business-heavy) topics, have grown exponentially. I've already adapted my approach to developing domain-specific skills, for instance, instead of relying solely on MOOCs, I also now have regular sessions with domain experts (business folks with advanced industry-relevant university degrees), something my boss encourages and expects me to continue to do. I have now also considered the prospect of going to university myself, something my employer would sponsor.

So the question is, how can I best invest my personal development time so that as I progress in my career I can continue to meet, or even surpass, exponentially growing expectations?

I'm sure someone will have a great idea of how to approach this challenge. Also, there is a quote I appreciate from Alex Chiou that gives me hope that I can do it.

It wasn't due to natural talent or anything - I'm honestly not that smart.

Show more
154 Views
2 Likes
4 Comments
9 days ago

Learning new Tools for Interviews?

Data Engineer at Financial Company profile pic
Data Engineer at Financial Company

I'm a Data Engineer. Within the data engineering realm, there are a lot of tools, just like in the software engineering realm. The modern data stack is pretty popular these days. It includes things like Spark for ETL at scale, Docker for virtualized environments, Airflow for orchestration, dbt (data build tool) for transformations in SQL, Fivetran for automated data connectors, Snowflake for data warehousing, and more.

I'm far from knowing all of these tools well, primarily because I use very few of them in my day job. The main reason I want to change jobs is because of this.

I'm worried I'm caught in a catch-22 situation where I don't know the tools so I can't get jobs that have them, which I guess is similar to the new-grad cold start problem.

My question is, how should I think about learning new tools for job interviews? My current instinct is to learn via failure. That is, I have almost all of the above tools on my resume. If someone asks me about them and I'm not able to give a good answer, I will learn that part about the tool so if I'm in the same situation I can answer properly.

Another approach I can think of is to do Udemy courses of them so I have a deeper understanding of how they work. I've learned to be wary of course not tied to projects, though, so I'm hesitant.

I guess I could do projects to learn more about them, but those take time and right now I'm focused on applying to jobs.

I imagine some answers might focus on what my current problem is: can I get interviews or am I failing interviews? I don't think my issue is with failing interviews right now, and certainly not because of specific knowledge people have called me out for for not knowing these tools. I think my issue is more with sourcing interviews currently.

If there's general advice regarding how to think about prepping for an interview when you only have some of the requirements on the Job Description, would love to hear that too.

Thanks!

Show more
57 Views
1 Like
3 Comments
2 months ago

Taking a Learning Break/Upskilling to get the role you want - How to think about it?

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

I’ve seen questions recently about people wondering whether to pursue an MBA of a CS Masters which comes at the expense of either maintaining your current tech job or searching for a new one. My question is slightly different: When is it worth taking a learning sabbatical if ever?

By learning sabbatical, I mean I have seen people put on LinkedIn that they did quit their jobs to do a bootcamp in some field (Mobile, Blockchain, etc) or even just self-study on their own. I have a coworker who’s a business analyst and told me he’s quitting to do a data science bootcamp. Doesn’t seem like a good idea to me, but not my decision.

I think the general rule people follow is to have a job while looking for one, particularly in this economy. Still, I’m wondering about what circumstances actually warrant quitting a job to invest in getting one in a different field. Obviously being in a toxic environment is the best reason to get out of a current job. Similarly, if you really need the money, you probably can’t leave the job.

So let’s assume that neither is the case. You don’t need the money and the environment is positive, but you’re really not doing what you’re passionate about and feel like every day you are missing learning cool stuff. Say you’re a business analyst and want to become a data scientist or backend software engineer. An obvious move is to try and switch into these roles within your current company. But if you can’t do that, how to think about taking a learning break?

Show more
66 Views
0 Likes
1 Comment
3 months ago

How Long to Complete Take-Home Assignment II

Data Engineer at Financial Company profile pic
Data Engineer at Financial Company

My was “When given a take-home assignment, what is a reasonable turnaround time to get it back to them?” I now know it’s within a week.

I was given the assignment to create a basic Django app and was told to spend no more than 3 hours on it. Here’s the short text of the assignment description:

Table Metadata Extractor (Python)

Please provide a Python Django application that has one API endpoint which accepts a database connection string from your DB of choice (Redshift, BigQuery, Snowflake, MySQL, Postgres), connects to the database using and returns a list of the TableMetadata data objects (see below) for all tables in the database.

TableMetadata = {

columns: List[ColumnMetadata]

num_rows: int

schema: str

database: str

}

ColumnMetadata = {

col_name: str

col_type: str

}

Bonus points for:

·         Instructive error messages for improper connection strings or other invalid input

·         A solution that is efficient

As a Data Engineer/Analyst, I haven’t done web-dev stuff in years and have never used Django. My immediate instinct upon reading this project description was to find a resource to learn Django online. I’m not sure this is the right instinct, because software is about doing more than learning as Alex has mentioned so many times.

The way I see it, I have 3 ways to approach this assignment:

  1. The way I just mentioned. Go down a learning path (hopefully not a rabbit hole), learn about Django and try completing the assignment.
  2. Dive right in, try building the solution from scratch, Googling and ChatGPTing liberally.
  3. Don’t do the assignment, spare myself the time and headache, and beef up my Python web-dev skills for the future.

The first approach requires the most upfront time. The second might be longer or shorter than the first. And the third doesn’t require any upfront time but requires a commitment to being in a much better position to do the assignment in future.

This is the second time in a couple of months I’ve been in this position since I was given an assignment for a different company to build a Flask app and did a shoddy job with it.

My first question is, which of the 3 options should I do to address this time-sensitive situation?

My second is, how should I address this situation long-term? Building some web-dev projects in Python with Flask/Django/FastAPI seems pretty logical. I don’t get to work with them at work, but I could spend a few weeks building stuff with them. I guess that’s the answer, the key is to avoid tutorial hell.

My third is, how should I think about take-home assignments in general? Should they stretch me a lot in terms of learning new things or conversely, should I be, say, 80% comfortable with what I need to do, just stretching a bit here and there to do stuff?

Thanks!

Show more
226 Views
3 Likes
5 Comments
3 months ago

Is there a way to "grind" system design or soft skills?

Mid-Level Software Engineer at Twitch profile pic
Mid-Level Software Engineer at Twitch

I'm not sure exactly how to phrase this, but to give an analogy, I love card games (ex: Legends of Runeterra, Race for the Galaxy, Hearthstone, etc). There are a fixed set of rules and a fixed set of cards. I can "grind" games and get better by noticing patterns, picking up new strategies or tactics by playing against a diverse set of players. The outcome of an interaction is usually idempotent (i.e. card 1 interaction with card 2).

In real life, things are quite complicated. Asking a certain question in a certain way to person 1 and person 2 may give wildly different responses, and may even depend on your mood, their mood, your tone, time of day, etc. It's super messy and unpredictable.

I also feel a similar way about system design. The nearly infinite possibility of inputs, outputs, TPS, throughput, scenarios make it difficult to reapply the same set of rules to different scenarios. This is just talking about one component, when we bring in N components, the interaction gets very complicated and the "rules" change" case by case. I'm sure it gets better with practice, but I also feel I have a limited opportunity to learn or practice these on the job.

Has anyone found a way to structure these learnings in terms of a repeated "grind", because oftentimes I feel overwhelmed and don't know where to start. This is a complicated question, so answers regarding either a) soft skills or b) system design separately I will treat as valid answers.

Show more
1.8K Views
38 Likes
Editor's Choice
4 Comments
4 months ago

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
110 Views
1 Like
1 Comment
5 months ago

How to become a top developer in outsourcing company?

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

Even though starting to work for a big company like Meta, Amazon, Google, etc. I believe is a hard to achieve (I haven't work for) somehow it looks pretty straightforward. Learn for interview, get the job, level up. Yes, I am sure it's hard and not many will do it but still you know what should be done (yes, may don't know how). But let me tell you a different story:

I work in a not that famous country in the EU and non of the top tech companies is there. Actually 90+% of the companies are outsourcing companies. As a SE with 10 years of experience in the outsourcing world I can tell you how it works: you work on a legacy code which is so old and so bad (hundreds of people have tried write code there) you can't see good practice at all, no code reviews (sometimes there is bad it is very rare), no unit tests, performance review is only about client's feedback and so on, you got the point. It's about the money only and nobody cares if you are good or not if the client is happy. In very rare cases I have started something from scratch but all of my colleagues were so bad progmmers like myself that we messed up all. It's a deadlock. After 10 years I realized I am a bad programmer and I've seen so many bad practices that I have no passion to do anything anymore. Now to the questions:

  1. Is it possible to apply best standards in an outsourcing company like those in FAANG and if yes, how?
  2. How can I fill all the gaps I have at the moment? Can I fill all the gaps with side projects only? How can I fill them when nobody will teach me anything new. Nowone will review my code and like @Alex said, they are the main source to learn :) How would I know is the code good or not? Could it be better?

The ultimate goal of my career (and maybe in life) is to fill the gap not only in my skills but to create a company (product based or outsourcing) where everyone who join to have a chance to become a great programmer. But before helping others, I need to help myslelf. This is how I found Taro.

Show more
255 Views
3 Likes
7 Comments
8 months ago

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
162 Views
7 Likes
2 Comments
a year ago