Register a SA Forums Account here!
JOINING THE SA FORUMS WILL REMOVE THIS BIG AD, THE ANNOYING UNDERLINED ADS, AND STUPID INTERSTITIAL ADS!!!

You can: log in, read the tech support FAQ, or request your lost password. This dumb message (and those ads) will appear on every screen until you register! Get rid of this crap by registering your own SA Forums Account and joining roughly 150,000 Goons, for the one-time price of $9.95! We charge money because it costs us money per month for bills, and since we don't believe in showing ads to our users, we try to make the money back through forum registrations.
 
  • Post
  • Reply
mes
Apr 28, 2006

Gin_Rummy posted:

Hey guys! I'm a mechanical engineer who has been working for ~8 years in my field and have recently taken a hard look at jumping ship into some sort of software/dev/coding role. I didn't really have much experience beyond VBA programming way back at school and occasionally here and there for odd jobs in some of my previous roles, but over the past month or so I have been working through Harvard's CS50 and have been feeling pretty comfortable with it. I have also been coding some small little projects up in Python... overall I am finding it to be a pretty good use of my time and way more interesting than what I do now, but at what point do I know I am ready to look at actually making the leap professionally? I am sure I am not even close to ready right now, but I don't have any real benchmark to compare myself or shoot for...

I made a switch into a full time developer role last year from my career in aerospace engineering and I had the same issue of trying to figure out if I had the right skills to apply. Ultimately I was able to make the switch with internally within my current company. If you're interested in switching sooner rather than later, you can look for opportunities that utilize your current skill set +programming which aren't necessarily "software developer/engineer" roles strictly speaking.

Otherwise you'd be "ready" to start applying for software roles whenever your have a GitHub/portfolio that demonstrates some kind of skill. That's kind of vague, but it really depends on what you're trying to get into. A really basic, database backed, web application would be a good example if you're trying to go for a web development role.

Adbot
ADBOT LOVES YOU

feedmegin
Jul 30, 2008

What's a good website for a complete beginner to programming to learn Python from, these days? I say 'these days' because I presume learning Python 2.7 would be a pretty silly idea at this point. I can write Python myself so I could help out with any tricky bits. My wife's been asking about learning it. :shobon:

She'd be either on Windows or a Mac, probably.

Lockback
Sep 3, 2006

All days are nights to see till I see thee; and nights bright days when dreams do show me thee.

Gin_Rummy posted:

Hey guys! I'm a mechanical engineer who has been working for ~8 years in my field and have recently taken a hard look at jumping ship into some sort of software/dev/coding role. I didn't really have much experience beyond VBA programming way back at school and occasionally here and there for odd jobs in some of my previous roles, but over the past month or so I have been working through Harvard's CS50 and have been feeling pretty comfortable with it. I have also been coding some small little projects up in Python... overall I am finding it to be a pretty good use of my time and way more interesting than what I do now, but at what point do I know I am ready to look at actually making the leap professionally? I am sure I am not even close to ready right now, but I don't have any real benchmark to compare myself or shoot for...

I hire people with your profile pretty frequently in what's generally considered a good entry-level engineer role (Lots of small projects and fixits, some internal tool feature development, eventually moonlighting on engineering squads). Here is what I look for based on background:

1. Good life experience (but not dev) and a bootcamp (or similar): Bootcamp tells me you actually give a crap about this and can do more than follow online guides. Bootcamps aren't magic job machines, I still need to see some decent projects (for me ideally a dynamic web page, maybe something that shows some creative use of data structures. Something useful like an android app is a plus). I'd like 1 polished project that can be spoken intelligently about, and maybe a couple others that can be class-projects/prototype-like things.

2. Good life experience (but not dev) and no bootcamp: I need to see REALLY good self projects that can be talked VERY intelligently about. Complex, polished. Basically most people who apply with this background are the equivalent of 1st year CS majors so you need to prove to me you are above that and don't need me to teach you everything over the next couple years. I have been convinced of this multiple times in the past, but the bar is pretty high. The times that I have been people had apps that were actually in use in the world as free plug-in type things or being used in a niche industry. Not millions of users but the kind of thing that is practical and used.

3. An actual comp-sci (or related) degree: Then the projects aren't that important and usually classroom/senior project type stuff is fine. I like to see people playing with technology outside the classroom but not needed.


Hope that gives you an idea. There are other jobs out there that might not have as high of a bar, but honestly are probably not as good/good paying/as good a pipeline to a more senior dev role. Finding a dev role within your existing company is a good way to jump start this.

Empress Brosephine
Mar 31, 2012

by Jeffrey of YOSPOS
When you look at projects, are you looking for more like SPA type of projects or websites?

HappyHippo
Nov 19, 2003
Do you have an Air Miles Card?

feedmegin posted:

What's a good website for a complete beginner to programming to learn Python from, these days? I say 'these days' because I presume learning Python 2.7 would be a pretty silly idea at this point. I can write Python myself so I could help out with any tricky bits. My wife's been asking about learning it. :shobon:

She'd be either on Windows or a Mac, probably.

I've heard good things about https://automatetheboringstuff.com/

Lockback
Sep 3, 2006

All days are nights to see till I see thee; and nights bright days when dreams do show me thee.

Empress Brosephine posted:

When you look at projects, are you looking for more like SPA type of projects or websites?

Usually more SPA, but I generally ask candidates to give me a project they think has a decent amount of polish and that they can walk through and answer questions about intelligently. I do this instead of coding tests. I don't expect someone to have created a full functional website or anything. You can definitely tell when someone tries to pass off something they essentially copied and lightly tweaked vs actually understands and can demonstrate why they made the decisions they made (even if they weren't good decisions).

Speaking of coding tests, that's another good topic. If you're coming into the dev world from another engineering area, you can use the various websites to measure yourself, but you need to understand WHY these questions want what they want, not just memorize a handful of solutions. I dislike coding tests as a interview tool, but they are common and the themes and topics are going to get asked at any interview.

Mush Mushi
Sep 9, 2007

feedmegin posted:

What's a good website for a complete beginner to programming to learn Python from, these days? I say 'these days' because I presume learning Python 2.7 would be a pretty silly idea at this point. I can write Python myself so I could help out with any tricky bits. My wife's been asking about learning it. :shobon:

She'd be either on Windows or a Mac, probably.

I enjoyed watching the content at py4e.com for an initial intro and am following it up with Automate the Boring Stuff. The first six chapters of Automate the Boring Stuff cover almost everything in py4e. For me it was good to go over the absolute fundamentals in those two formats and then get into the actual application examples of ATBS.

CDG
Feb 20, 2010
Hey all! I'm finishing up my cs masters and I've been looking at studios to apply to. A bunch of them ask for a portfolio with the application. I'm transitioning from a corporate sales office, and I'm not really sure what to put together for these.

Should I be setting up a website? Just a repository?All of my current quality code has been from schoolwork, should I be building up some fresh projects?

Lockback
Sep 3, 2006

All days are nights to see till I see thee; and nights bright days when dreams do show me thee.

CDG posted:

Hey all! I'm finishing up my cs masters and I've been looking at studios to apply to. A bunch of them ask for a portfolio with the application. I'm transitioning from a corporate sales office, and I'm not really sure what to put together for these.

Should I be setting up a website? Just a repository?All of my current quality code has been from schoolwork, should I be building up some fresh projects?

See my comment above, but ideally a mix of school work and personal projects. Do you know what you want to focus in (FE, BE, Datascience?) If not its not a big deal, but then I'd suggest taking a look at what you have from school and supplementing it with a personal project that shows some range. I like to see at least 1 project that's got some polish and be impressive. Its ok if others are kinda in prototype or "not quite complete" mode.

A git repository is fine, a website that can be interacted with is better. If you want to do FE stuff, a website is a REAL good idea.

Hadlock
Nov 9, 2004

feedmegin posted:

What's a good website for a complete beginner to programming to learn Python from, these days? I say 'these days' because I presume learning Python 2.7 would be a pretty silly idea at this point. I can write Python myself so I could help out with any tricky bits. My wife's been asking about learning it. :shobon:

She'd be either on Windows or a Mac, probably.

MIT has all their computer science courses online for free, along with TA office hours, lecture notes, homework etc. They start off with beginner courses all the way through at least masters level stuff. No sign up required. They use python as their base language. It's really good

And yeah there's not much reason to learn python 2.7, but most beginner level code is 100% compatible anyways, except for wrapping print statements in ()

Hadlock fucked around with this message at 22:43 on May 1, 2021

Rocko Bonaparte
Mar 12, 2002

Every day is Friday!
I got a recent list of prep topics for a Facebook interview. It was a pretty generic list of data structure and algorithms, but then "bloom filter" very specifically popped out of nowhere. Is this something that's kind of popular right now or something? It just seemed so particular in comparison to everything else.

Hughlander
May 11, 2005

Rocko Bonaparte posted:

I got a recent list of prep topics for a Facebook interview. It was a pretty generic list of data structure and algorithms, but then "bloom filter" very specifically popped out of nowhere. Is this something that's kind of popular right now or something? It just seemed so particular in comparison to everything else.

https://www.quora.com/What-are-the-best-applications-of-Bloom-filters
Facebook uses bloom filters for typeahead search, to fetch friends and friends of friends to a user typed query. The bloom filter is just 16 bits per friend connection (an edge in the facebook social graph) and they have called it "world's smallest bloom" :P !.

The talk describes Typeahead Search Tech Talk (6/15/2010) https://www.facebook.com/watch/?v=432864835468

AlphaKeny1
Feb 17, 2006

How do people prepare and study for the FAANG interview? I assume it's just, really know your algos and data structures, but even more so than normal. I saw a practice Google one and it seems like they're also interested in optimizing as much as possible to the fastest runtime as well.

jabro
Mar 25, 2003

July Mock Draft 2014

1st PLACE
RUNNER-UP
got the knowshon


AlphaKeny1 posted:

How do people prepare and study for the FAANG interview? I assume it's just, really know your algos and data structures, but even more so than normal. I saw a practice Google one and it seems like they're also interested in optimizing as much as possible to the fastest runtime as well.

https://www.academia.edu/38223757/Cracking_the_Coding_Interview_6th_Edition_189_Programming_Questions_and_Solutions was what I was referred to. And leetcode.

Just took an online for Audible(Amazon) for an iOS junior developer role. Studied all the "most common Amazon Interview" algo questions and I'm sure people received those questions but my two were light years harder than anything I studied for. One didn't care about optimization and the other wanted it.

Star War Sex Parrot
Oct 2, 2003

Hughlander posted:

https://www.quora.com/What-are-the-best-applications-of-Bloom-filters
Facebook uses bloom filters for typeahead search, to fetch friends and friends of friends to a user typed query. The bloom filter is just 16 bits per friend connection (an edge in the facebook social graph) and they have called it "world's smallest bloom" :P !.

The talk describes Typeahead Search Tech Talk (6/15/2010) https://www.facebook.com/watch/?v=432864835468
On that topic, if bloom filters are interesting you might enjoy reading about Succinct Range Filters (SuRF) which are another approximate data structure that allow range queries instead of just point queries. My understanding is that multiple commercial DBMSes have since implemented or are in the process of implementing them.

http://www.cs.cmu.edu/~huanche1/publications/surf_paper.pdf

Rocko Bonaparte
Mar 12, 2002

Every day is Friday!
I think I've gotten my fill on bloom filters now and I'm on to :siren:dynamic programming!:siren: Facebook doesn't ask for it, but Google does, so I couldn't dodge it. I can't remember ever doing this poo poo at work or for hobbies--just for interviews. However, I think I'm getting it shoved into my head so many times that the theory stuff is starting to set in and this makes me uncomfortable. I'm not really even suffering much on this topic but I do have to touch up on it since there's just enough of a space in between for me to have it all fall out again.

I didn't see dynamic programming in my computer engineering curriculum, but I'm guessing in a computer science course that it'll show up somewhere at least once. Like, there'd be an assignment to with a progression and questions targeting how you'd represent state and the transition before going into the actual code. poo poo, I don't I even got linear programming as a technique either.

I have a question (repeat question?) about the system design interview process for software engineering. Is there a good resource for the system design interview specific to Facebook or Google and a software engineering position?

Grokking the System Design Interview was what I went through last time. It goes to very high level stuff like database scaling, how you would deploy a NoSQL technology, load balancers, scheduling and distribution. Meanwhile, I suspect what people wanted to see was something like a service, what my basic endpoints might be, the kind of requests it would handle. Actually, heck, I'm not even sure if they wanted that and just wanted to hear some patterns and API. Like, they were waiting for me to shut up about the overall architecture and get into the one little business logic box.

ultrafilter
Aug 23, 2007

It's okay if you have any questions.


Designing Data-Intensive Applications isn't specifically targeted at Google/Facebook system design interviews, but if that's something you're worried about, it's definitely worth a look.

Dynamic programming is one of those techniques that the vast majority of people will only see in algorithms classes and programming interviews, but if you gotta do it, you gotta do it.

asur
Dec 28, 2012

Rocko Bonaparte posted:

I have a question (repeat question?) about the system design interview process for software engineering. Is there a good resource for the system design interview specific to Facebook or Google and a software engineering position?

Grokking the System Design Interview was what I went through last time. It goes to very high level stuff like database scaling, how you would deploy a NoSQL technology, load balancers, scheduling and distribution. Meanwhile, I suspect what people wanted to see was something like a service, what my basic endpoints might be, the kind of requests it would handle. Actually, heck, I'm not even sure if they wanted that and just wanted to hear some patterns and API. Like, they were waiting for me to shut up about the overall architecture and get into the one little business logic box.

How do you even get to scaling and distribution without outlining your service, the API and asking about expected request patterns? Both https://blog.pramp.com/how-to-succeed-in-a-system-design-interview-27b35de0df26 and https://igotanoffer.com/blogs/tech/system-design-interviews#overview are decent guides on how to answer and divide up your time. In general you want to have a complete high level design so try to avoid going down any rabbit holes until you do. It's also good to try and solicit feedback from your interviewer on what they want you to focus on.

Bruegels Fuckbooks
Sep 14, 2004

Now, listen - I know the two of you are very different from each other in a lot of ways, but you have to understand that as far as Grandpa's concerned, you're both pieces of shit! Yeah. I can prove it mathematically.

ultrafilter posted:

Designing Data-Intensive Applications isn't specifically targeted at Google/Facebook system design interviews, but if that's something you're worried about, it's definitely worth a look.

Dynamic programming is one of those techniques that the vast majority of people will only see in algorithms classes and programming interviews, but if you gotta do it, you gotta do it.

the way dynamic programming is introduced is weird to me because i feel like a lot of curriculums use it to introduce memoization - e.g. you can speed up function calls that are slow by making a cache and having the cache return the result of the call instead of doing the same thing over again. i've used memoization a ton in my day to day work (e.g. functions like measuring width/height of text can be very slow, but if you memoize the results, you can get a pretty dramatic speedup), and I imagine many others have as well. recursion is also not a difficult concept in and of itself, but the combination of recursion and memoization magically makes dynamic programming something people ask interview questions about even though the individual components of dynamic programming aren't mysterious.

blue squares
Sep 28, 2007

Hello! I've read a few pages of this thread and have a question about becoming a front-end web developer quickly. By front end web developer I mean starting out at a development agency that builds marketing sites for businesses.

Me: I'm an SEO manager with 3.5 years experience at a premiere agency, working with brands you've heard of. I have a ton of experience working in tons of platforms and dealing with HTML, CSS, and some JavaScript. I know a ton of the basics and my experience working in lots of platforms means I can do a lot of basic developer tasks, like build simple landing pages that modify an existing template, edit CSS to make a page look different, etc. I've finished the HTML and CSS sections on Free Code Camp and I am working through the JavaScript. I've made a couple little projects and think I am learning quickly.

I am very burned out of being in SEO and want to get out. I have the funds to be without income for 9-11 months.

I want to line up a boot camp, quit my job, and study web development full time so that I can transition into a decently paying gig within that time frame? Is that realistic?

blue squares fucked around with this message at 00:55 on May 12, 2021

Lockback
Sep 3, 2006

All days are nights to see till I see thee; and nights bright days when dreams do show me thee.

I hire people in this model, and yes I think it's realistic. Don't pigeonhole yourself too much though, getting some Python and maybe a little DB exposure is probably not a terrible idea even if FE stuff is your big focus. The life experience there will help quite a bit, but that first job will still be tough to land. Look to build a good portfolio of bootcamp projects and some of your own stuff. Bootcamp people have to work twice as hard to prove they actually know their stuff, so just plan on that.

blue squares
Sep 28, 2007

Lockback posted:

I hire people in this model, and yes I think it's realistic. Don't pigeonhole yourself too much though, getting some Python and maybe a little DB exposure is probably not a terrible idea even if FE stuff is your big focus. The life experience there will help quite a bit, but that first job will still be tough to land. Look to build a good portfolio of bootcamp projects and some of your own stuff. Bootcamp people have to work twice as hard to prove they actually know their stuff, so just plan on that.

Awesome. I'm really loving good so if I can find companies willing to give me the time of day, and I build enough basic skills, I like my chances. (I did some other stuff before landing in SEO, including 5 years in the Navy before college)

blue squares fucked around with this message at 02:11 on May 12, 2021

Rocko Bonaparte
Mar 12, 2002

Every day is Friday!
Does anybody have their own little reminders they note for programming riddle interviews? I'm starting to draft my own based on trends, although it's pretty much just a few things.

  • The solution should be able to fit within 40 lines without looking ugly, and possibly less than 20
  • Loop-in-loop is implying n^2 or higher and will probably get you hassled on speed/space
  • Always remember that you can use a stack data structure
  • If you need to know an optimized value but not what constitutes it then dynamic programming is possible
    • It does not mean it's the only way to do it and the solution might be really bizarre
  • Look at the requirements in reverse for quirky requirements from the solution that would screw up your initial approach
  • Guardrailing a bunch of off-by-one stuff smells like a bad approach

AlphaKeny1
Feb 17, 2006

blue squares posted:

Awesome. I'm really loving good so if I can find companies willing to give me the time of day, and I build enough basic skills, I like my chances. (I did some other stuff before landing in SEO, including 5 years in the Navy before college)

In your SEO job are you able to take on some work involving front end, or database with SQL? Anything you can get your hands on will be way more experience to put on your resume than bootcamp and self study projects, especially if they are public facing.

blue squares
Sep 28, 2007

AlphaKeny1 posted:

In your SEO job are you able to take on some work involving front end, or database with SQL? Anything you can get your hands on will be way more experience to put on your resume than bootcamp and self study projects, especially if they are public facing.

Actually, yes. I'm directing a series of page updates for one of my smaller clients. They have old, boring, bad page templates and I am helping them modernize. Best of all, the dev work is being done by my agency as well, by a colleague who knows of my web development career goals and has been really supportive.

I could work on nights and weekends to do the updates myself and have him review them. They don't involve any new JavaScript, so I could handle everything with enough time and research based on my current HTML & CSS skills (which include flexbox and grid). The only part of the project I don't know how to code is the CMS integration; I can't just have the entire page be editable by source code only. BUT I should be able to easy copy in the <div>s that the CMS looks for to insert content from the CMS admin into the page itself.

My plan was to use the next couple of months to continue to develop my skills and work on some self-projects to make sure I know 100% I want to do web development before I actually quit my job, but if being able to point to stuff that is client-approved would be a better portfolio/resume bullet, then yeah I can take over some of the dev work of my big current project.

Acer Pilot
Feb 17, 2007
put the 'the' in therapist

:dukedog:

Rocko Bonaparte posted:

Does anybody have their own little reminders they note for programming riddle interviews? I'm starting to draft my own based on trends, although it's pretty much just a few things.

  • The solution should be able to fit within 40 lines without looking ugly, and possibly less than 20
  • Loop-in-loop is implying n^2 or higher and will probably get you hassled on speed/space
  • Always remember that you can use a stack data structure
  • If you need to know an optimized value but not what constitutes it then dynamic programming is possible
    • It does not mean it's the only way to do it and the solution might be really bizarre
  • Look at the requirements in reverse for quirky requirements from the solution that would screw up your initial approach
  • Guardrailing a bunch of off-by-one stuff smells like a bad approach

Keep in mind that loop in loop isn't always n^2. Depends on your stop conditions

downout
Jul 6, 2009

Rocko Bonaparte posted:

Does anybody have their own little reminders they note for programming riddle interviews? I'm starting to draft my own based on trends, although it's pretty much just a few things.

  • The solution should be able to fit within 40 lines without looking ugly, and possibly less than 20
  • Loop-in-loop is implying n^2 or higher and will probably get you hassled on speed/space
  • Always remember that you can use a stack data structure
  • If you need to know an optimized value but not what constitutes it then dynamic programming is possible
    • It does not mean it's the only way to do it and the solution might be really bizarre
  • Look at the requirements in reverse for quirky requirements from the solution that would screw up your initial approach
  • Guardrailing a bunch of off-by-one stuff smells like a bad approach

Sorted set lends itself to binary search.

AlphaKeny1
Feb 17, 2006

blue squares posted:

My plan was to use the next couple of months to continue to develop my skills and work on some self-projects to make sure I know 100% I want to do web development before I actually quit my job, but if being able to point to stuff that is client-approved would be a better portfolio/resume bullet, then yeah I can take over some of the dev work of my big current project.

So here's my question: if you spend the next few weeks learning javascript and any other relevant languages and skills, it sounds like you can personally help develop stuff for your clients very soon?

The way I see it, if you get to that stage... you're already a programmer. Would you still need a bootcamp? You already have the job.

You'll be working to meet client needs, understand how to collaborate with other devs, have hands on experience in a team/professional setting, and be working on a live codebase developing features and resolving bugs. Sounds like a software engineer to me.

From there you can get a really good taste and decide what your next steps are going to be while bolstering your potential resume. Maybe learn cs fundamentals to pass a coding interview.

Showing employers things you worked on professionally counts as real experience, which is something crucial that bootcamp, self study, and even college people typically lack which makes it difficult to land the first job.

Is the CMS integration something you can learn on the side or have someone walk you through, and are there projects in the pipeline that involve code? Programmers already have to constantly learn new things on top of what they already do--just try not to get pigeonholed like the other goon said. Eventually you will have to pick up other non-FE knowledge, but by then you'll have a much better grasp if a bootcamp will fill that gap.

AlphaKeny1 fucked around with this message at 08:55 on May 13, 2021

blue squares
Sep 28, 2007

AlphaKeny1 posted:

So here's my question: if you spend the next few weeks learning javascript and any other relevant languages and skills, it sounds like you can personally help develop stuff for your clients very soon?

The way I see it, if you get to that stage... you're already a programmer. Would you still need a bootcamp? You already have the job.

Good points and thank you for taking the time to reply.

I do have some opportunities to build stuff for one of my clients who is smaller and doesn't have their own developer outside of my agency. I can pitch in on their site and make some stuff for them.

The main obstacle is that my SEO work is still full-time and I can't simply swap it out for dev work. I have deliverables to complete and KPIs to meet. Plus, all of my other clients have their own developers. So anything I do will need to be outside of my existing work hours, which has been tough for me to maintain as my job is stressful and mentally exhausting.

I'm unhappy in my life because of my current work, so I am looking for an exit from it and felt that completing a bootcamp would give me the credibility I need to get that first job, combined with some projects and my SEO experience. And I just want to quit my job and study full time. Of course, it would be great to not blow through my savings unnecessarily as I do have financial goals that will be delayed.

I suppose if I can suck it up and continue to work on learning dev in the evenings and weekends consistently on top of my existing work, and can build some projects and also launch a few things for 1 or 2 clients, I'd probably be in a good place to find a jr developer job. I'll be able to keep growing my savings and retirement funds rather than using them up. I'll be more stressed and unhappy for longer. It's a tough decision.

I know the "smart" thing to do is to keep my job so I can keep my finances healthy, and work toward this goal in my off time, but drat its hard when my job makes me miserable half the time. I can definitely afford to put in less effort at work in the meantime. I'm a top performer in my current role and my bosses like me so I can certainly get away with doing less and reducing my stress. Even if I lose a couple clients its not going to count much against me at this point.

blue squares fucked around with this message at 15:15 on May 13, 2021

Rocko Bonaparte
Mar 12, 2002

Every day is Friday!

Acer Pilot posted:

Keep in mind that loop in loop isn't always n^2. Depends on your stop conditions

The idea is to stop for a second, and determine if the algorithm you're thinking about does that or not. Then you can ask if it's even worth trying to do. I'd previously just do the brute-force solution as a reference but now I'm looking at a Facebook interview where they intend to drop two in 45 minutes.

downout posted:

Sorted set lends itself to binary search.

This is pretty timely. It wasn't a binary search per se, but I ran into something where they sorted and then partitioned.

Rocko Bonaparte
Mar 12, 2002

Every day is Friday!
I have more system design concerns. I once again opened up Grokking the System Design Interview and decided to just try to pen-and-paper one of the examples. I was pretty much just writing out what it was saying to practice, well, writing stuff out. Just doing that took something like 2+ A4 pages and about 45 minutes to go through. That's pretty crazy!

The one I did was Twitter. Hopefully I don't get into a fuss for posting its overview diagram:


This is pretty simple. In fact, you could say it was crude.

I think when I was doing system design interviews in the past, my interviewer was getting frustrated with this. Basically, they wanted me to mostly ignore everything but the app server and start to dig into that in particular. Meanwhile, I am trying to calculate a lot of size and throughput estimates, figure out if I could scale with a NoSQL, how stuff could be shared, and all this other stuff. I think I got a pretty consistent impression about that between an Amazon and a Google interview. For a software engineering role, should I be focusing differently?

The problem for me would be figuring out how to sketch out the app server stuff in more detail. I don't do this stuff at all and part of job switching is to actually start doing it!

asur
Dec 28, 2012
If you don't know what to focus on after you've given a high level outline then you should ask. It's also a good idea to check-in occasionally if you're diving deep into a specific area to ensure that you don't run out of time and not cover an area they wanted you to. Most interviewers will probably not have you focus on application code unless there's something interesting there e.g. for Bit.ly you need to answer how the short url is generated which may be in the application code though there are better options.

Also what is file storage?

Hug in a Can
Aug 1, 2010

NICE FLAMINGO
kind heart
fierce mind
brave spirit

:h: be good and try hard! :h:

asur posted:

If you don't know what to focus on after you've given a high level outline then you should ask. It's also a good idea to check-in occasionally if you're diving deep into a specific area to ensure that you don't run out of time and not cover an area they wanted you to. Most interviewers will probably not have you focus on application code unless there's something interesting there e.g. for Bit.ly you need to answer how the short url is generated which may be in the application code though there are better options.

Also what is file storage?

I assume...
If this is high volume social media with attachments, it’s the server that holds shared files like pictures, videos, audio clips, etc.
The files that are large and not accessed equally across the platform.
CDN poo poo :woop:

Rocko Bonaparte
Mar 12, 2002

Every day is Friday!
The "file storage" is indeed for pictures and videos.

Part of my worry is if they wanted me to further draw out the logic inside the application server section, then I wouldn't know really what to do. I have done a bit of UML and things like that but I don't know what approach to generally take for showing responsibilities between different services that could be floating in that kind of layer. I could just yack about it but I figure they're going to save that picture and have it for later--especially with the remote interviewing that could be happening.

rally
Nov 19, 2002

yospos
We ask a question like this in every interview and the depth of the answer totally depends on your engineering level. Mostly looking for stuff like knowledge of caching, cdn, etc at lower levels.

rally fucked around with this message at 18:46 on May 15, 2021

Rocko Bonaparte
Mar 12, 2002

Every day is Friday!

rally posted:

We ask a question like this in every interview and the depth of the answer totally depends on your engineering level. Mostly looking for stuff like knowledge of caching, cdn, etc at lower levels.

Huh. Then what are you looking for at higher levels?

Space Gopher
Jul 31, 2006

BLITHERING IDIOT AND HARDCORE DURIAN APOLOGIST. LET ME TELL YOU WHY THIS SHIT DON'T STINK EVEN THOUGH WE ALL KNOW IT DOES BECAUSE I'M SUPER CULTURED.

Rocko Bonaparte posted:

The "file storage" is indeed for pictures and videos.

Part of my worry is if they wanted me to further draw out the logic inside the application server section, then I wouldn't know really what to do. I have done a bit of UML and things like that but I don't know what approach to generally take for showing responsibilities between different services that could be floating in that kind of layer. I could just yack about it but I figure they're going to save that picture and have it for later--especially with the remote interviewing that could be happening.

Nobody actually uses all of UML. It's a bit like XML: trendy a while back, but nobody ever followed the full standard, so it was always an adventure in trying to figure out what subsets your consumer is actually going to want and is capable of understanding.

Boxes-with-arrows diagrams and simple sequence diagrams are the equivalent of JSON in this analogy and are typically fine in an interview setting where you can't be expected to be familiar with internal standards. Just make sure all your boxes represent roughly the same level of abstraction.

Oh, and if you're drawing them out on a whiteboard or on paper, always write out the label first and then draw the box around it.

Rocko Bonaparte posted:

Huh. Then what are you looking for at higher levels?

I'd look for an understanding of tradeoffs, discussion of potential alternatives, and the thought process that led to the decision.

For instance, in an ecommerce application, where do you rely on cached data for pricing and inventory, and where do you hit the backing source of truth? Or, for a twitter clone, what level of replication delays and eventual consistency are acceptable? What are the downsides you accept by going that way, and why are they worth it? What would make them not worth it?

Senior level interviews might also start with some components already in place, would ask build-versus-buy questions for some things that might be replaceable by off-the-shelf applications or managed services, and might get into project planning to build the whole thing out.

asur
Dec 28, 2012

Rocko Bonaparte posted:

The "file storage" is indeed for pictures and videos.

Part of my worry is if they wanted me to further draw out the logic inside the application server section, then I wouldn't know really what to do. I have done a bit of UML and things like that but I don't know what approach to generally take for showing responsibilities between different services that could be floating in that kind of layer. I could just yack about it but I figure they're going to save that picture and have it for later--especially with the remote interviewing that could be happening.

I see now, I thought the application servers were the same service for some reason. I think your main diagram is a little light as it should have some sort of caching along with a CDN specifically if you're talking about files. The next step unless the interviewer directs otherwise is going to be to breakdown your application servers into specific services.

I wouldn't use UML or anything, just a breakdown of boxes for specific services with lines, with annotations if complex, works.

mes
Apr 28, 2006

While I've been enjoying my current software development role and still <1yr after switching over from aerospace engineering , I've been occasionally putting resumes out there and was pretty surprised I got invited to do an online assessment from a FAANG company. I utterly bombed since I wasn't actually actively doing any preparation but honestly it feels like a big W to actually get some traction with my resume from a different company after making a career switch.

How common are are these Hacker Rank/Leetcode assessments generally? I assume 100% at these huge tech houses, but I wonder about smaller tier companies.

Adbot
ADBOT LOVES YOU

Harriet Carker
Jun 2, 2009

mes posted:

How common are are these Hacker Rank/Leetcode assessments generally? I assume 100% at these huge tech houses, but I wonder about smaller tier companies.

Extremely common across all sizes of companies and levels, in my experience.

  • 1
  • 2
  • 3
  • 4
  • 5
  • Post
  • Reply