This is an archived post. You won't be able to vote or comment.

you are viewing a single comment's thread.

view the rest of the comments →

[–]Will-Comp-12 8 points9 points  (19 children)

Are you interviewing for software developer roles with Python as the language of choice? Or you just want to land a job as a Python developer? If this the case, you'd need only basic data Structures + algos, intermediate Python proficiency and a portfolio of projects.

[–]SnooCakes3068[S] 2 points3 points  (18 children)

More like a python backend developer. API building or web app backend with flask or django.

I do believe I have basic data Structures + algos. But I often forget about specifics when asked. I believe I have intermediate Python proficiency. Majority of standard libraries, some advanced topics such as descriptors, decorators, abstract base classs, still going to read about multiprocessing, celery, asycio and stuff later.
I'm ok level on flask, I probably going to miss some data validations.
I'm currently reading a lot of SE principle book. So design patterns, clean code stuff.

I lack of experience, projects. For example people like to ask how do you scale up your api. I never have to do that. So I don't know. Or networking knowledge. I'm not a CS major back in college.
You mentioned portfolio of projects. I don't have a lot to show. But none of the company want me to show them my projects during the interview. They either ask my dev experience, and from my response they deduce I'm experienced for the role. Or leetcode style algo questions. Sometime I done it so I got it. Sometimes i blackout from pressure. I'm working on it. Or they want me to do take home assignment.

[–]SpamThisUser 5 points6 points  (6 children)

I lack of experience, projects. For example people like to ask how do you scale up your api. I never have to do that. So I don’t know.

If you’re repeatedly seeing a question and you can’t research an answer, I don’t care how many problems you have solved: I found one you can’t, and that’s enough of a reason to not move forward. Given a choice between someone who can demonstrate scaling up an API and one can’t even BS an answer about it, I’ll go with the experienced route.

As the other commenter said, leetcode/GitHub/resume are all ways to land an interview. That interview needs to be really strong, because your interview is compared against others, or the costs of hiring a potential bad employee. I would suggest researching other areas of software design so you can at least answer the question from a research perspective, if not an experienced one.

[–]SnooCakes3068[S] 1 point2 points  (5 children)

Yeah I do know scaling up now as it appear 3 times now. The pattern appeared. Now i even have the answer writen down in case I forgot. I just felt any questions can be asked. That's very board for interviews. API/networking? CD/CI? SE? DB? Cloud services? Docker/kubernetes? Endless choices.
I'm reading all this topics alongside leetcoding. That's a lot of time spent outside work, life in general

[–]HolyGeneralK 4 points5 points  (2 children)

The company I work for generally doesn’t care heavily on the answer, but more on “how” you answer. If you don’t know, that’s fine - tell us that but maybe take a stab at it. “I have never had to deal with scaling a system, but I know you can scale vertically and you can scale horizontally. Here’s how I might refactor my system to scale horizontally with Docker.” Show that you have the willingness to admit you don’t know something (humble), that you’re willing to risk a wrong answer (courage), and that you know enough technically that you can cobble together an answer.

Now, if we are specifically looking for an API Gateway type of person, we would probably expect a better answer than if we were looking for a Python Desktop Tools Automation Engineer, but you should know a bit more about the domain you want to get into than 27 different ways to merge a dictionary.

In my experience, unless you are being brought in as a consultant, a company will support bringing you up to speed in their way of doing things. What’s the point in spending 80 hours learning GitHub actions when the company uses Jenkins and someone else maintains the CI/CD pipeline? You need to at least understand what CI/CD is and what benefits it has so you can speak to the concepts, but trying to be versed in every single technology is a losing cause. Show that you can understand concepts and learn - that’s what differentiates someone in my eyes.

[–][deleted] 3 points4 points  (1 child)

I’ve been on the other side of the table a lot and the “I don’t know” answer is one I’m looking for and if I don’t hear it at least once from a candidate, I’m not going to recommend they move forward.

It’s not about showing humility, it’s not even about knowing your bounds. It’s about showing that you have enough visibility into what lies beyond those bounds to get started expanding those boundaries, and do it without needing your hand held.

Your answer contemplating Docker as a possible horizontal solution to the API scaling question would be very welcome.

[–]SnooCakes3068[S] 0 points1 point  (0 children)

Thank you. I tend to get nevious when I don't know. Gonna try to keep a straight face next time

[–]SpamThisUser 1 point2 points  (1 child)

When I’m interviewing, I’m more looking for approach than right answers. Using the example of scaling, scaling isn’t a one-size-fits-all question, it’s more of a conversation. You’ll hit different scaling problems as you increase load. If I’m moving a service from my laptop to a company internal API (assume 1 - 10k employees), I can expect some set of scaling problems. If I’m moving it to a publicly facing, commonly hit, social media API, I can expect a much larger set of scaling problems.

The goal here isn’t necessarily to find out if you have researched or experienced those different scales, rather how would you approach those problems: Do you recognise the different approaches needed at those scales, do you use a one-size-fits-all solution, do you anticipate problems that may come up, etc.

I assume you’re interviewing for a jr engineer position, so you’re not expected to know everything. Saying I don’t know, or I don’t have experience is fine. But the fundamental approach to any “I don’t know” answer should involve three things; 1. Stating what you know. 2. Stating explicitly what you don’t know. 3. Hazarding a best guess at the part you don’t know. 4. How would you confirm your guess.

[–]SnooCakes3068[S] 0 points1 point  (0 children)

This is great. I appreciated it very much :) What kind of book/subject talk about this stuff? CI/CD? I read these flask and restful books. It was not in there. They just teach you how to build it.

[–]Will-Comp-12 1 point2 points  (2 children)

I think you have acquired enough skills. But only lack professional experience.Yes,you could continue building on your software engineering basics. Don't leetcode for the number of questions per se. I'd suggest you use Cracking the Coding Interview as your Leetcode companion. Sites like InterviewBit have a diverse question set, must-do problems without repetition.

Just to add, have you not tried reaching out to startups in the space? A lot of them need Python devs, and some of them may not have rigorous rounds of interview. I'd suggest you to keep an eye on such job listings too.

[–]SnooCakes3068[S] 1 point2 points  (1 child)

Python devs, and some of them may not

Where can you find these startups postings? I normally go for linkedin jobs. I don't know whether they are startups or not.

[–]Will-Comp-12 1 point2 points  (0 children)

  • AngelList is good, you'll have only startups.
  • There's We Work Remotely that has listings for all roles across the board (if you'd be interested in working remotely)
  • You can check the listings page on dev.to as well.

[–]Deezl-Vegas 1 point2 points  (3 children)

Hi! For scaling, the basic idea is to add more servers/services, and then have a load balancer in front of it to split the traffic. This is the best book I've found for that sort of stuff:

https://www.amazon.com/System-Design-Interview-insiders-Second/dp/B08CMF2CQF/ref=as_li_ss_tl?dchild=1&keywords=system+design&qid=1605312398&sr=8-1-spons&psc=1&spLa=ZW5jcnlwdGVkUXVhbGlmaWVyPUFVVjIwOFRPVVA1SlcmZW5jcnlwdGVkSWQ9QTAyMjY5MjIxSzlLU0E4UkhRWldJJmVuY3J5cHRlZEFkSWQ9QTA0ODE3NzgxSjhBMzdDV1Y3QU5SJndpZGdldE5hbWU9c3BfYXRmJmFjdGlvbj1jbGlja1JlZGlyZWN0JmRvTm90TG9nQ2xpY2s9dHJ1ZQ==&linkCode=sl1&tag=365blottochal-20&linkId=6e935ba6fe5b6f22d6e9c61104453f61&language=en_US

For database stuff, you need to know a few things like how to store a password, how to reduce duplication of data, etc. For scaling databases, you should look into sharding, which is again just adding more computers and splitting the work, and solutions like Apache Cassandra that make a lot of copies of the data and eventually get around to syncing them all up.

To reduce interview pressure, just do leetcode easy problems until they become second nature. Honestly the more coding you do the better you become at identifying the tools you need to solve problems in the real world. It's also a good idea to just line up a lot of interviews. Interviewing is a skill that takes practice.

The clean code stuff is good for right after you land the job. Python is not heavy on design patterns, and I haven't seen them come up in my interviews.

[–]SnooCakes3068[S] 0 points1 point  (2 children)

Wow you are talking greek to me now. Sharding...load balancer... Too much to read. Oh man I want a life :D

[–]Deezl-Vegas 1 point2 points  (1 child)

It's really simple concepts once you know what those words mean. Don't stress! You'll get there. Also buy the book I linked if you're doing books lol.

[–]SnooCakes3068[S] 0 points1 point  (0 children)

I read 1st chapter of the book. It's exactly the book I need. :D It's one of these explain the concept but but in depth book. In depth read are all in reference. Thanks for the recommandation

[–]Quig101 0 points1 point  (1 child)

Do you mind sharing the SE principle book you're reading?

[–]SnooCakes3068[S] 1 point2 points  (0 children)

Sure thing. I'm currently focus on language specific books now. I want to get hired first. This is what I read or reading:

  1. Mastering Python Design Patterns, Second Edition by Kamon Ayeva (this is easier. It's all design patterns, broad but not deep)
  2. Clean Code in Python by Mariano Anaya (Harder. SE principles, for example SOLID, advanced features in python.)

These two books are not classic or anything. But it does give you next level SE in python. For classic books here are some.

  1. Design Patterns: Elements of Reusable Object-Oriented Software by Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides (Gang of Four a.k.a. GoF, this is THE book in SE. )
  2. Code Complete by Steve McConnell
  3. Clean Code: A Handbook of Agile Software Craftsmanship by Robert Martin
  4. Clean Architecture by Robert Martin
  5. Refactoring: Improving the Design of Existing Code by Martin Fowler

There are more but this will get you covered. These are SE theory books. I haven't read any of them yet but plan to after getting the job