Once I asked too many questions so I had to wait for a few days to ask more. Is there a way to check if this is the case somewhere rather than actually trying to ask a question? Shouldn't the system warn you if you are close to being put on hold because of asking too many questions?
This type of question is not a good fit for stack overlfow - questions are expected to have clear, objective answers. This question would be a better fit for programmers.stackexchange.com — xaxxon14 secs ago
Yeah. Why are so many companies terrible at hiring? Some friends have been telling me horror stories. Online personality and knowledge assessments, terrible interview questions, asking for references. Don't companies understand how to hire? It's not that hard...
People I graduated with - 5+ years of experience after graduation, plus internships/co-ops and some with online contributions (projects, Stack Exchange, etc.). Yet they are being made to jump through hoops that don't matter.
@DavidL, thank you for your referral. The [link](meta.programmers.stackexchange) link is helpful and hopefully I can use the various links there to find further appropriate information. — XyberICE35 secs ago
Just because they are trying to be helpful doesn't mean they are doing the best thing possible.
In other news, why does it seem like Rails apps are inherently monolithic? Or maybe I'm thinking about web app architecture wrong. But let's say I was building Stack Exchange in Rails. It seems easier to have one application with users, questions, answers, comments, chat rooms, chat messages, votes, flags, etc. It seems difficult to build a "user" component that is used by "chat" component and "qa" component. There's inherently coupling between the users and permissions in other components.
@Ixrec I was going to say "not really", but it is. People do use component to refer to a class. A component, in my eyes, is just a self-contained module. Something that can be built or interpreted in isolation.
@ThomasOwens that's close to what it means for us, but "microservices" strongly implies separate executables or at least separate processes, relying solely on network communication protocols to coordinate with each other
Although there's also a smaller level. A component is the thing that reads raw hardware data and writes it to disk in a specified format. However, within that, the output sub-component is interchangable - how its stored on disk (individual message files versus some kind of rolling file versus something else entirely).
Components can be executables or libraries. The idea is that they conform to an interface so they are swappable. For example, it shouldn't matter if I'm reading my user profiles from a text file or a database, I'm interacting with a swappable users component that all implement a common interface.
And when I change my users component, I don't need to rebuild or redeploy the rest of my system.
So if I change from a users text file component to a users database component, I redeploy one component. Only when you change the interface to a component do you need to worry about other components. And even then, there are good workarounds.
And for some things, that makes sense. But going back to the web application, aren't things tightly coupled anyway?
I mean, what actual good would a user component, a chat component, and a qa component actually provide? Especially since you probably have links between them, especially to users.
@Ixrec So there's the user data (the data elements that make up a user). It's easy to return those as XML/JSON/ProtoBuf/whatever from a data store. But surely you don't want to work with XML/JSON/ProtoBuf/whatever - you want to work with a class and instances of objects. So now, every service has a way to convert from data to an object.
@Ixrec Yes. Let's say you had my example of a QA service, a chat service, and a users service. The QA service and a chat service don't want to work with XML/JSON/whatever. They want to work with user objects.
So they ask the user service for data and get it back in JSON, let's say. Now, they each have a method to turn JSON into a user class.
in C++ that takes the form of a code generator; I grab the XML schema of the service I want to call, feed it into the code generator, and now I have a bunch of header files with classes representing all the data types that service can return
or even give them a separate cluster of machines if it's something truly expensive (our team recently got its own cluster =D)
note that in our framework it is possible for multiple services to be in a single executable, so the IPC cost can be eliminated even though the serialization/deserialization cannot (though if your requests/responses are large enough for that to be a problem, you screwed up already)
I suspect I might do something like that for your SE as microservices example
now I should probably get back to that movie I was watching
I think it's an extreme. Monolithic doesn't mean "poorly designed". It just means that it's really a single entity. And some things just make more sense as a single entity. It all depends on how you want to scale.
Do you scale with instances or by distributing functions? If you scale by creating instances, then monolithic is totally OK. If you want to start moving functionality to different physical hardware, then you almost need components and services.
That's true, as well. You can refactor monolith to services.
Although my next questions are understanding the idea of "library" in an interpreted language. I understand the idea of encapsulating functionality in a library (DLL, SO, JAR, whatever). Then, you build your library and include the build output in things that are executable.
However, without a build step, how you go about packaging up common "library" functionality in say, Ruby or Python.
@ThomasOwens that would be the absolute bare minimum, yes
in practice you'd want it to do all the sanity checks you'd expect a competent package management system or CI testing and linting suite to do
along with making it easy to work out exactly what version of what bundles client X was running when he said everything broke
in the browser world, that build step usually involves running your modules through a tool like wepback or browserify which iirc combine everything into one js file, possibly removing unused code entirely
I'm an ASP.NET (C#/VB) web developer trying to break into a position that uses open-source js frameworks (specifically Angular.js or Knockout, the jobs I find interesting all seem to use this technology).
While I have a good deal of non-work experience in Angular (tutorials and building sample web apps), I think the lack of js framework work experience on my resume could be holding me back from securing an opportunity with a company that uses this technology. Are there official exams/certifications for Knockout or Angular.js that I can enhance my resume with? I've done quite a bit of web r…
I get the impression from the questions I've been asked about Angular.js that since I've had no work experience they're uninterested in training a new employee.
Unfortunately, no I don't have working projects... I've been trying to put together a website that showcases my Graphic Design work and Coding work, but it takes a long time when you're working a 80+ job.
How many companies are you talking to or have done this? Many companies I've talked to tend to care more about someone who has related background and can learn. Although a few want someone who can jump in very quickly and already know their technology stack.
I'm just worried because employers usually ask my previous salary. . .and I notice most of the other jobs (which I haven't applied for) that are in the area I'd like to move (UI Design & Implementatin) have lower stated salaries ($60-$80)
From what I've experienced here in Boston from companies contacting me, they don't care that I don't have a background in technology X or Y, for the most part. Just that I have demonstrated experience designing software and will learn X or Y.
@ThomasOwens, yeah, it seems like this is exactly what they say during any preliminary (phone) interviews, but I eventually get turned down due to "the skill set we're looking for is highly specified and requires the most thorough knowledge. It's a high bar, but you didn't make it."
I've taken that to mean that I have to come in with some proof that I have working experience in exactly the technologies that they use. . .maybe I'm misreading the response?
Another thing I've seen that is mildly annoying is I NEVER get calls from companies. . ._only_ recruiters. The only time I correspond with a company is if I initiate the contact with a resume and cover letter. Any ideas why companies aren't biting, but recruiters massively contact me?
If that's the exact wording, it either means exactly what it says or it could mean that they found someone with a matching skill set. Personally, I don't like people tied to a particular technology stack. Technology changes. I want people with some breadth of knowledge and adaptability.
@XyberICE For most companies, you're going to have to initiate contact. That's normal, IMO.
Only once have I been reached out to by a company's internal recruiter.
I've always used recruiters in the past, but this time I'm determined to find my next position myself through direct submission. I think I'll find a much better match for my somewhat unusual skill-set.
Since I've put out over 40 resumes and cover letters with little final interviews, I'm just trying to find a way to increase the effectiveness of my submissions. . .I think getting a web site demoing various technologies I know would be helpful and maybe switching to looking at smaller companies.
Well thanks @ThomasOwens, good food for thought. I appreciate your advice. TTYL
@RobertHarvey Year 2-5 of my degree program was software design. Year 2 had an intro to OO design course, and then the rest of the years had courses in enterprise applications (database-centric), concurrent systems, distributed systems, embedded systems and on and on, plus an architecture course.
So I would say...fictional scenarios?
And these courses also tended to include working with legacy code.
There were also co-ops mixed in there, and I (and most others) worked on existing projects on their co-ops.
@ThomasOwens they must have changed it, then. The whole campus was dry except for one university-run bar that would serve one drink per student per day. Anything off-campus was, well, not university rules.
They opened Salsarita's my last year. It was a Mexican themed place on the academic side of campus. The bartender there...didn't really enforce the one-drink thing. We would go to senior project a few deep.
When I was working on my M.S. (different university) I had two classes back to back one semester and the first was canceled one day. My wife was there too to study. Well, we ended up at the campus bar. After 5-6 beers I went to my second class. Made it much more bearable, that professor was... special.
There really isn't an objective measurement for "cleanest", so this question, as it currently stands, is asking for opinions... which is off-topic. Please consider adding some kind of measurement such that an answer can be deemed "correct", or look to see if your question may be on topic for Programmers by reading what's on-topic there. — Mike McCaughan17 secs ago