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
return0
Apr 11, 2007

Ithaqua posted:

  • What is the MVC pattern? Where would you use it? Why would you use it?
  • What is the MVVM pattern? Where would you use it? Why would you use it?

Pretty decent questions overall but these two stick out as being excessively MS stack/terminology centric; I guess if the role is for for WPF/WFC/ASP.NET development then this kind of stuff is maybe reasonable, but is it really something people would generally care about outside of the MS web dev domain?

Also a lot of the questions listed are pretty trivial (in the sense of being general knowledge) compared to the types of applied problems where a good knowledge of algorithms and data structures is required, for how they work and how to use them & when it is actually appropriate to use something over something else.


Edit: On C, it's always worth learning C. Ideally every developer should know C (but I've had to interview people who don't know it and have made them offers but I've always considered it a bit weird). Luckily when you get over it being a bit weird it's actually quite a pretty language. C++... meh; the language is fine I guess but people who self-identify as "C++ programmers" always tend to be horribly crippled.

As a disclaimer my background is games, 3D visualisation, web development and "big data" cloud poo poo.

return0 fucked around with this message at 23:44 on Jun 16, 2013

Adbot
ADBOT LOVES YOU

RICHUNCLEPENNYBAGS
Dec 21, 2010
There are like a million MVC frameworks, it's not just .NET stuff.

edit: RE: C: I would like to learn it someday. I'm just not sure it should be at the top of my list of things to learn.

RICHUNCLEPENNYBAGS fucked around with this message at 23:54 on Jun 16, 2013

return0
Apr 11, 2007

RICHUNCLEPENNYBAGS posted:

There are like a million MVC frameworks, it's not just .NET stuff.


Yes, but being concerned with the finer points of the distinction between MVVM/MVC/MVP is a condition peculiar to MS stack types (in my experience, from shooting the poo poo with knockout folk, etc).

New Yorp New Yorp
Jul 18, 2003

Only in Kenya.
Pillbug

return0 posted:

Pretty decent questions overall but these two stick out as being excessively MS stack/terminology centric; I guess if the role is for for WPF/WFC/ASP.NET development then this kind of stuff is maybe reasonable, but is it really something people would generally care about outside of the MS web dev domain?

Also a lot of the questions listed are pretty trivial (in the sense of being general knowledge) compared to the types of applied problems where a good knowledge of algorithms and data structures is required, for how they work and how to use them & when it is actually appropriate to use something over something else.

MVVM and MVC are both very commonly used patterns in UI design regardless of the technology stack. MVC shows up in pretty much any web framework, and other than modern Microsoft UIs (WPF, Silverlight, Windows Store), the JS world has Knockout for MVVM. And I would totally accept "separation of presentation from implementation" as an answer for both, although their definitely are some important distinctions between the two.

I didn't include any "applied" problems because those are something that have to come from your experience, and you can't predict what sort of applied problems are going to be asked in an interview. I was giving tips to help getting past a phone screen. Also, for a junior developer, there's a lot more leniency on applied problems. As an interviewer, I know that a guy with a year or two of professional experience might not have the skill set and experience to design a really good solution.

All I need from a junior is someone who has a decent "nuts and bolts" knowledge of the language. I want to be able to sit down with them, say "okay, the acceptance criteria on this PBI are x, y, and z. I'm envisioning <an outline of the design along with whiteboard drawings and so forth>. If you have any questions, ask!" And then I can rely on them to use the language properly to see that design through.

Their work is still going to be scrutinized pretty closely, and I insist on code reviews any time I have the authority to do so.

New Yorp New Yorp fucked around with this message at 00:03 on Jun 17, 2013

baquerd
Jul 2, 2007

by FactsAreUseless

return0 posted:

Yes, but being concerned with the finer points of the distinction between MVVM/MVC/MVP is a condition peculiar to MS stack types (in my experience, from shooting the poo poo with knockout folk, etc).

Yeah, understanding the difference between these types seems like pedantry to me; possibly to the point of uselessness. If you've ever tried to shoehorn a pattern into code that doesn't want to accept it, there's something wrong, and it seems fairly frequently that the big picture style patterns being too restrictive is the problem. That these distinctions even exist seems wrong to me - it's just sperging about classification of separation of concerns. Programming remains at its base a creative endeavor, and should stay that way.

New Yorp New Yorp
Jul 18, 2003

Only in Kenya.
Pillbug

baquerd posted:

Yeah, understanding the difference between these types seems like pedantry to me; possibly to the point of uselessness. If you've ever tried to shoehorn a pattern into code that doesn't want to accept it, there's something wrong, and it seems fairly frequently that the big picture style patterns being too restrictive is the problem. That these distinctions even exist seems wrong to me - it's just sperging about classification of separation of concerns. Programming remains at its base a creative endeavor, and should stay that way.

It's not pedantry. MVVM/MVP and MVC solve the same problem, but they solve it differently for a very good reason.

It can be summed up as:
"MVC is for decoupling presentation logic and business logic in stateless UIs, MVVM/MVP are for decoupling presentation logic and business logic in stateful UIs".

baquerd
Jul 2, 2007

by FactsAreUseless

Ithaqua posted:

It can be summed up as:
"MVC is for decoupling presentation logic and business logic in stateless UIs, MVVM/MVP are for decoupling presentation logic and business logic in stateful UIs".

Sorry, that's pedantry to me. It's an important distinction, but really, the problem domain itself will constrain the implementation. The really important matter is the separation of layers.

Fuck them
Jan 21, 2011

and their bullshit
:yotj:
I really feel lucky as poo poo I managed to get a good junior position from someone who was explicitly looking for a trainable junior programmer who didn't yet have too many bad habits to unlearn, in his own words, given the way this thread has turned.

Also, to just add to the greek chorus of "learn good design patterns and have a senior dev to smack your head if you do dumb poo poo so you stop doing dumb poo poo," all I gotta say is learn good design patterns and have a senior dev to smack your head if you do dumb poo poo so you stop doing dumb poo poo.

I'm so excited I get actual code reviews at the new place, for that matter. Now I won't feel like a total idiot if I want to put poo poo on github!

Stoph
Mar 19, 2006

Give a hug - save a life.

2banks1swap.avi posted:

I'm so excited I get actual code reviews at the new place, for that matter. Now I won't feel like a total idiot if I want to put poo poo on github!

Code review has been one of my favorite things that my employer added since I started working here. I would definitely be more inclined to pick an employer that encourages or even demands peer review of all code.

qntm
Jun 17, 2009
As opposed to what? Just letting anybody commit whatever? :psyduck:

thepedestrian
Dec 13, 2004
hey lady, you call him dr. jones!

SurgicalOntologist posted:

- I should finish the Ph.D., right? On the one hand, it's psychology, on the other hand, my specific program is all about understanding organisms as complex systems and frankly I think I could sell these skills as applicable to any domain. Most of the techniques I'm using (e.g. the paper I'm submitting to PRE) come from the financial domain, for example.
- What are my job prospects with little to no formal programming experience? In the context of my department I'm the god of programming. But in the context of other programmers, I suck.
- What sort of jobs are out there that I haven't thought about? Academia is all I know. I'd consider anything really, from software development to data mining to teaching scientific computing (although the latter is probably as dysmal a job market as being a Psych professor). Ideally, I'd like to stay on the academic side and be a sort of programming consultant for researchers, but the problem there is nearly all researchers do it themselves or delegate to grad students, no matter how much they suck or how much time they're wasting. The closest thing to that is probably just being a technically-oriented researcher with lots of collaborators, but that still means going through the Professor job market. Which I don't want to do, because even if I can get a job it either won't pay well or will be in the middle of nowhere.
- What should I be working on in the meantime? Anything other languages I should pick up? Caveat: I have no interest in doing anything that requires low-level programming. I want to be doing as high-level programming as humanly possible. Is that realistic? I guess I should make an exception for databases, anything else?
- I'll have to choose a thesis eventually, assuming I stick with the program. How's this strategy: do something that requires a lot of programming, and avoid being too domain-specific if possible.

This post is a bit stale but didn't get any responses. I'm a PhD student in human-computer interaction with one foot out the door, taking a full time researcher position with a company in August, so I've gone through some of these struggles.

Finishing: Right now I'm gong to try and finish while working but my resolve lessens every day. You will need to keep that in mind: all the bullshit you put up with in academia (lack of funding, review boards, catering to faculty whims) doesn't exist in industry, making it hard sometimes to go back and deal with it. Based on my internship that led to my full time offer and talking to lots of people who went from grad school to industry, finishing the PhD won't have much effect in industry. People might think it's cool but it won't lead to much besides maybe a slight pay bump. How I see it, the only reason to finish the PhD is if you have an interest in possibly returning to academia at some point and getting a tenure track position.
Jobs: With your research background and R knowledge you are extremely qualified for data science positions, which are everywhere now. You say you really want to do programming, so you could look for maybe a data science position at a small company or a new team at a larger one where you could code internal tools, etc. Quantitative-focused UX research positions are also a possibility but there would likely be less opportunity for programming there.
In the meantime: Just keep programming. Learn new stuff. Work on your pet projects. Pick one and see it through till you have something polished that you can put up on GitHub to help with future interviews.
Thesis: Sounds like a good plan. Don't overcomplicate it, make it simple so you can get the hell out (my current plan). Unless again you may want to go back to academia one day where people actually give a crap about your research and then you may want to think about doing something that could be well received.

Our disciplines are different so YMMV obviously but after 4 years in a PhD program and 3 months in industry I am a way bigger fan of industry.

SurgicalOntologist
Jun 17, 2004

Thank you. That made me feel a lot better. I'll finish my program to keep my options open- if the perfect tenure track job opens I'd probably take it- but if (/when) it doesn't I'll be more than happy to get out of academia. Thanks for the advice.

Did you mention R specifically because it's more prevalent?

Zhentar
Sep 28, 2003

Brilliant Master Genius

Stoph posted:

Code review has been one of my favorite things that my employer added since I started working here. I would definitely be more inclined to pick an employer that encourages or even demands peer review of all code.

I really, really, really hate performing code reviews. Nonetheless, I absolutely would not want to work somewhere that releases code to customers without performing them.

Fuck them
Jan 21, 2011

and their bullshit
:yotj:

qntm posted:

As opposed to what? Just letting anybody commit whatever? :psyduck:

Haha, you think I had source control at that last job?

My final act is to just copy poo poo to a shared FTP folder. I was there for months and nobody ever told me what I needed to hook in to their SVN.

The most experienced dev there (who did this as a side job) said "I dunno!" over the phone, even. Every other dev was many states away from the office.

Is "do it all through 1099s remotely on the side" a "thing" in terms of a business strategy? If this is the future of software I expect things to suck until it passes.

gucci void main's thing about how nobody does junior devs much at all anymore has me more than a little worried. I'm thankful as hell I got a job where a requirement was that I learn how to code well structured code with reviews with other people in my area. This way I'll actually have a clue how to do agile dev with source control and with a good design pattern when I do get to greener pastures.

I really wish more programming programs actually had a source control to turn in assignments and included actual instruction time on how to structure things right and refactor things. I feel really sorry for my classmates who don't even realize what a big deal that's going to be when they get out into industry.

Zhentar
Sep 28, 2003

Brilliant Master Genius
I really think they're overstating things a big. We hire hundreds of devs fresh out of college, as do plenty of other companies.

Fuck them
Jan 21, 2011

and their bullshit
:yotj:
But how many other entities hire hundreds?

And for that matter, how many devs have my experience as a first job, where there's a huge culture of laziness and "hack it and get it over with?"

astr0man
Feb 21, 2007

hollyeo deuroga

2banks1swap.avi posted:

Is "do it all through 1099s remotely on the side" a "thing" in terms of a business strategy? If this is the future of software I expect things to suck until it passes.

No, you just happened to work at a really lovely company.

2banks1swap.avi posted:

But how many other entities hire hundreds?

And for that matter, how many devs have my experience as a first job, where there's a huge culture of laziness and "hack it and get it over with?"

Any large company hires a lot of devs out of college. You happened to have a terrible experience but again, that was a result of working for a lovely company.

You probably know this by now, but in the future, you should ask things like "do you use source control" in your interviews, so you don't end up working somewhere where their idea of source control is just uploading poo poo to an FTP server.

Cicero
Dec 17, 2003

Jumpjet, melta, jumpjet. Repeat for ten minutes or until victory is assured.
I think there's plenty of junior dev positions. That doesn't necessarily mean it's easy to get one at a good place, since said places would usually prefer to hire no one than to hire someone who's only halfway competent.

2banks1swap.avi posted:

But how many other entities hire hundreds?

And for that matter, how many devs have my experience as a first job, where there's a huge culture of laziness and "hack it and get it over with?"
A widespread problem of having broken processes or methodologies probably isn't specific to programming though.

Fuck them
Jan 21, 2011

and their bullshit
:yotj:
Oh, believe me, I grilled the poo poo out of $NEWJOBHIRINGMANAGER about that, and mentoring, for that matter.

Another good sign is he asked for a code sample before I even met him.

Learning how to get a good job is almost as important as how to DO a good job, IMO.

Tres Burritos
Sep 3, 2009

2banks1swap.avi posted:

Another good sign is he asked for a code sample before I even met him.

I got one of those after my latest phone interview, and I got asked to an in person interview so I took that as a good sign. Now I'm just waiting and waiting to hear back :(.

Quebec Bagnet
Apr 28, 2009

mess with the honk
you get the bonk
Lipstick Apathy

qntm posted:

As opposed to what? Just letting anybody commit whatever? :psyduck:

It's pretty much the top of the list of reasons I'm not extending my current contract :suicide:

thepedestrian
Dec 13, 2004
hey lady, you call him dr. jones!

SurgicalOntologist posted:

Thank you. That made me feel a lot better. I'll finish my program to keep my options open- if the perfect tenure track job opens I'd probably take it- but if (/when) it doesn't I'll be more than happy to get out of academia. Thanks for the advice.

Did you mention R specifically because it's more prevalent?

I mentioned R because you mentioned R, but yeah it is pretty widely used. I haven't been around long enough to say this definitively, but it seems most places either use R or don't care what you use and some people use R. I highly doubt you're going to run into situations where you find an 'SPSS shop' where they'll force you to use a specific statistical package.

Zero The Hero
Jan 7, 2009

2banks1swap.avi posted:

I really wish more programming programs actually had a source control to turn in assignments and included actual instruction time on how to structure things right and refactor things. I feel really sorry for my classmates who don't even realize what a big deal that's going to be when they get out into industry.

I don't know how to use source control. I can use TFS, I think it's called, Microsoft's source control server for Visual Studio, but that's it. I never figured out how to use subversion or github. I have no idea why my school didn't teach it, it wasn't a very good school for CS.

Suspicious Dish
Sep 24, 2011

2020 is the year of linux on the desktop, bro
Fun Shoe

Zhentar posted:

I really, really, really hate performing code reviews. Nonetheless, I absolutely would not want to work somewhere that releases code to customers without performing them.

It's sort of annoying occasionally, but as long as there's a good workflow, I find it really useful. If he's inexperienced about this area of the code, you can teach him, and if you're inexperienced, you can learn pretty quickly. It's not just about "good code" in the end, and finding petty formatting poo poo, but I think that over time it increases the bus number a lot.

It's also a fun way to vent if somebody pisses you off, you can always find petty stuff to keep them and their code in limbo forever.

evensevenone
May 12, 2001
Glass is a solid.

Zero The Hero posted:

I don't know how to use source control. I can use TFS, I think it's called, Microsoft's source control server for Visual Studio, but that's it. I never figured out how to use subversion or github. I have no idea why my school didn't teach it, it wasn't a very good school for CS.

It doesn't really belong in an academic context, and I don't think very many schools make it a part of a CS program. It would be having a class for art students on how to put paintings in frames. Plus it doesn't really take all that long to learn, and different organizations do version control differently anyway, so nobody is really going to expect you to know their special snowflake source control/code review/release process anyway.

Now there are some people that are just convinced that they don't need code reviews or version control, and you probably don't want to hire those people, but that's a different matter.

Cicero
Dec 17, 2003

Jumpjet, melta, jumpjet. Repeat for ten minutes or until victory is assured.

Zero The Hero posted:

I don't know how to use source control. I can use TFS, I think it's called, Microsoft's source control server for Visual Studio, but that's it. I never figured out how to use subversion or github. I have no idea why my school didn't teach it, it wasn't a very good school for CS.
Learn git now. It's kind of painful at first but it's a skill you want to have. Go get a github account and git to codin'!

New Yorp New Yorp
Jul 18, 2003

Only in Kenya.
Pillbug

Cicero posted:

Learn git now. It's kind of painful at first but it's a skill you want to have. Go get a github account and git to codin'!

Although if you work in any sort of Microsoft shop, knowing TFS too isn't a bad thing. And Git+TFS is catching on, where folks use the build and project planning capabilities of TFS in conjunction with Git for source control.

genki
Nov 12, 2003
This book is more of an large product pitch for Veracity (which isn't exactly a huge player in the VCS market), but it has some very simple introductory steps/examples in how distributed version control systems (git, mercurial) work compared to subversion. Free to check out, worth a look.
http://www.ericsink.com/vcbe/

Janitor Prime
Jan 22, 2004

PC LOAD LETTER

What da fuck does that mean

Fun Shoe

evensevenone posted:

It doesn't really belong in an academic context, and I don't think very many schools make it a part of a CS program.

I think it could fit well as part of a lab that's running in parallel to the first or second programming course.

Like you said it doesn't matter what tools they use since it will be different in every organization, but learning the concepts and making them habits are important.

carry on then
Jul 10, 2010

by VideoGames

(and can't post for 10 years!)

I certainly can't speak for everyone, but at my college the basic software engineering course had a lecture or two on configuration management from more of a theoretical view, which I could definitely see as not being all that helpful for getting students up and running with git. I taught myself the basics using SourceTree, actually.

kitten smoothie
Dec 29, 2001

It seems like version control would be something you'd want to bring up as a sidebar topic at the first course where you're doing bigger amounts of group programming work, if not earlier. At least in my CS program you're on your own for the first year or two and then every course beyond that involves large involved projects with 3-4 people.

What I wouldn't give to have had Git and Github or Bitbucket back when I was in school, even if it wasn't "taught." My monster OO-design class would have been so much less frustrating than us fighting with CVS and having to move files into one guy's school unix account to commit them, since we didn't have anywhere to stand up an actual CVS server.

JawnV6
Jul 4, 2004

So hot ...

evensevenone posted:

It doesn't really belong in an academic context,

If your CS program isn't doing complex enough projects to warrant source control it probably sucks.

return0
Apr 11, 2007

JawnV6 posted:

If your CS program isn't doing complex enough projects to warrant source control it probably sucks.


But VCS has nothing to do with CS? Also, surely these days students enrolling in a CS degree would already be using source control...

Milotic
Mar 4, 2009

9CL apologist
Slippery Tilde

return0 posted:

But VCS has nothing to do with CS? Also, surely these days students enrolling in a CS degree would already be using source control...

Well they'd have to know about it first, and certainly in Britain you can do Computer Science at uni without ever having done any programming in an academic environment prior to that, so that leaves what you pick up on your own, which is going to be all over the shop.

return0
Apr 11, 2007

Milotic posted:

Well they'd have to know about it first, and certainly in Britain you can do Computer Science at uni without ever having done any programming in an academic environment prior to that, so that leaves what you pick up on your own, which is going to be all over the shop.

Yeah, I began a CS degree in the UK in 2002, and if I recall correctly, people were using stuff like CVS and possibly the free version of Perforce (heh). There were no classes on it or anything. I think some TA's verbally suggested what they used in a tutorial, sort of like they might present a preference on vi/emacs I suppose, which seems like a decent compromise.

When interviewing someone it's pretty... surprising if they point blank have no idea what VCS is or does, even as a graduate, and even though I don't really expect them to be taught it at school. All software people follow HN and skim it occasionally, and know about things like git right?

Sang-
Nov 2, 2007
The current lot of freshers (and the year before) at my uni (imperial college) are taught git from the beginning of their degree.

No Safe Word
Feb 26, 2005

return0 posted:

But VCS has nothing to do with CS? Also, surely these days students enrolling in a CS degree would already be using source control...

That's an unnecessary assumption. While source control systems shouldn't (necessarily?) be a course unto itself, it should be a discipline that is encouraged if not enforced within a CS program.

Zero The Hero
Jan 7, 2009

Cicero posted:

Learn git now. It's kind of painful at first but it's a skill you want to have. Go get a github account and git to codin'!

I've made an account before, but I never figured out how to do anything but use vim. I never really gave it a good try, though, because everything I've done recently has been something I couldn't really use github for, at least as far as I know, stuff like Android or ASP.NET that essentially requires an IDE.

On that note, what kind of projects could I pick up that would help me get a job? What would an employer like to see?

And as for whether source control should be part of a college degree or not, I see no reason why it shouldn't. My professors would modify our grade based on how nice our code looked, formatting issues that had absolutely nothing to do with computer science itself, the efficiency or functionality of the program. But it was incredibly important to programming as a vocation. I think source control is important for the same reasons, and in fact, is really part of the same idea.

astr0man
Feb 21, 2007

hollyeo deuroga
Using git has nothing to do with IDE's? Whatever IDE you are using probably has a git plugin.

Adbot
ADBOT LOVES YOU

Safe and Secure!
Jun 14, 2008

OFFICIAL SA THREAD RUINER
SPRING 2013
Source control should be a part of intro programming courses. Yeah, okay, CS is about theory, but most programs have an introductory programming class for people who have never programmed in their lives. Introduce version control there.

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