Taro Logo
Profile picture

Learning Quickly Q&A and Videos

About 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.

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
77 Views
3 Comments

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
82 Views
1 Comment

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
263 Views
5 Comments

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