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
Yaoi Gagarin
Feb 20, 2014

sarehu posted:

The real gap of software engineering knowledge in programmers today isn't that of being on a team, using version control, communicating with coworkers, and the like. It's in the actual code -- how to write good software. How to make an API that's difficult to gently caress up, how to make one that's practical to update in the future, how to take advantage of a type system, exactly what is it about global variables that will gently caress you up, how to minimize the risks of mutable state, how to design your datatypes so that they're aren't a big nest of pointers, good opinions regarding "be liberal in what you accept," that sort of thing. I mean, everybody who's fresh out of college is going to be terrible at communicating with coworkers, customers, and such, but I think people generally pick that stuff up (anyway, it's not like you can teach it in a class). It's architecture scale things like, don't don't GOD DAMMIT YOU NOOB-rear end FRESHER DO NOT PUT THAT VARIABLE IN THAT CLASS! WHAT IS ITS LIFETIME??? DO YOU KNOW????

This is from a few pages back, but I got to thinking about this post and realized that I really don't know what I'm doing when it comes to some of this stuff. I learned some OO principles from internships, reading blogs, and Internet hearsay, but not nearly enough. For example, "big nest of pointers" is exactly how I'd describe my senior project right now, and my partner and I both agree that it's a goddamn mess. I know some ways to clean it up, but I'm sure that after the refactoring it'll steadily become nasty again as we implement more and more features in the future.

So, in general, what should I read/study to become better at programming? I'm sure that I'll get better with experience once I start working, but what can I do to accelerate the process?

Adbot
ADBOT LOVES YOU

Steve French
Sep 8, 2003

KidDynamite posted:

I meant just in case as just in case I want to leave before I have to pay it back. Which is 23 months in this instance.
Am I interpreting this correctly to mean that you are expected to return the entire bonus if you leave in under 2 years? Not prorated? Or am I reading between the lines too much?

If I'm reading it right, that's kinda lovely.

KidDynamite
Feb 11, 2005

Steve French posted:

Am I interpreting this correctly to mean that you are expected to return the entire bonus if you leave in under 2 years? Not prorated? Or am I reading between the lines too much?

If I'm reading it right, that's kinda lovely.

It's pro-rated not sure at what rate since I haven't gotten that paperwork yet. I feel like I will probably be at the place a few years, but I just don't want to feel locked in if I can find a better opportunity elsewhere. I will keep it liquid in a high yield account.

Space Whale
Nov 6, 2014
When asking for a signing bonus, do you just ask bluntly, or offer to have the first year's salary cut or prorate or whatever in the initial request? I'm finally employable enough people a thousand miles away like me (YAY) but I've only ever done the poo poo game in my unknown semi-major city.

the talent deficit
Dec 20, 2003

self-deprecation is a very british trait, and problems can arise when the british attempt to do so with a foreign culture





I just ask what kind of signing bonus I should expect. I wouldn't ever structure a bonus as an advance on first year salary, if you need money for relocation ask for relocation.

sarehu
Apr 20, 2007

(call/cc call/cc)

VostokProgram posted:

So, in general, what should I read/study to become better at programming? I'm sure that I'll get better with experience once I start working, but what can I do to accelerate the process?

That list is a short list of where I improved since graduating, by the way. I think you mostly just have to do a bunch of programming and get burned a few times, especially on teams and doing maintenance on pre-existing projects. It helps to have a variety of experience (different languages, different fields)*, code review helps too, getting a job at a company with good coworkers is a good idea.

*For example, how I'm organizing my in-memory data structures in one low-level project was influenced by how I might organize them in an SQL database, experience I got from doing web programming.

comedyblissoption
Mar 15, 2006

VostokProgram posted:

This is from a few pages back, but I got to thinking about this post and realized that I really don't know what I'm doing when it comes to some of this stuff. I learned some OO principles from internships, reading blogs, and Internet hearsay, but not nearly enough. For example, "big nest of pointers" is exactly how I'd describe my senior project right now, and my partner and I both agree that it's a goddamn mess. I know some ways to clean it up, but I'm sure that after the refactoring it'll steadily become nasty again as we implement more and more features in the future.

So, in general, what should I read/study to become better at programming? I'm sure that I'll get better with experience once I start working, but what can I do to accelerate the process?
http://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882
Clean Code advises well on how to write readable code to the novice. The book will be underwhelming if you already have significant experience and already care about writing readable code, though.

Some significant pithy points I would add to the book that help immensely with not having your program collapse under its own complexity:
  • minimize mutable state
  • favor composition over inheritance
  • stop janitoring for loops and use the equivalent higher order functions
  • use a statically typed language

sarehu
Apr 20, 2007

(call/cc call/cc)
Clean Code is full of completely wrong, child-minded bad advice, amid a random sampling of common truisms you'll read about software development. Make things small! Make it simple! Be immutable (when you can)! Short names/long names! When you get down to the specifics you get a load of stupidity. Like suggesting that you rename assertEquals to assertExpectedEqualsActual. Bloviate jargon like "Monadic functions," "Dyadic functions," and "Triads," i.e. functions that take 1, 2, or 3 arguments. Passages like, "This side effect creates a temporal coupling. I.e. ..." The entire "Command Query Separation" subsection. Not to mention the idea that you should throw poo poo into member variables to avoid passing them as arguments... because that's more readable? Yeah, in a totally superficial brain-dead manner. Just to pick on one of the few chapters I bothered reading.

Not sure what else to expect from somebody that wrote a UML book and a bunch of other books though. Somebody needs to spend more time behind a keyboard. Take everything it says with skepticism.


Edit: Okay, my original abandoned read that stopped at chapter 4 before skimming might have missed good parts of the book. So I randomly chose a page and got this:

quote:

G2: Obvious Behavior is Unimplemented

Following "The Principle of Least Surprise," any function or class should implement the behaviors that another programmer could reasonably expect. For example, consider a functoin that translates the name of a day to an enum that represents the day.

code:
Day day = DayDate.StringToDay(String dayName);
We could expect the string "Monday" to be translated to Day.MONDAY. We would also expect the common abbreviations to be translated, and we would expect the function to ignore case.

When an obvious behavior is not implemented, readers and users of the code can no longer depend on their intuition about function names. They lose their trust in the original author and must fall back on reading the details of the code.

So, should that convert "Mon"? "M"? "m"? "Mon."? " Mon "? In reality you don't want to make your functions be so "helpful" -- if they are, it's an application-specific thing. How about having simple and documented behavior instead?

Ironically this paragraph is immediately followed by

quote:

G3: Incorrect Behavior at the Boundaries

sarehu fucked around with this message at 01:40 on May 29, 2015

Chill Callahan
Nov 14, 2012
'Uncle Bob' is incredibly bad

comedyblissoption
Mar 15, 2006

quote:

Not to mention the idea that you should throw poo poo into member variables to avoid passing them as arguments... because that's more readable?
This and the in-combination suggestion that 'less parameters is better!' bothered me a lot too since this line of thinking encourages hidden parameters in the form of mutable member variables.

Maybe I just have a very low bar since I see egregious errors of the 'common truisms' listed in the book frequently and have the mentality something is better than nothing.

Skandranon
Sep 6, 2008
fucking stupid, dont listen to me
Writing good code isn't something you just read about. I think, as sarehu said, you have to be exposed to a lot of things and be burned a lot to get a good impression why not to do things. Just reading "composition over inheritance" doesn't drive home how awful inheritance chains can get. It's like the Matrix, you have to see it for yourself.

Akarshi
Apr 23, 2011

Hey all, anyone have any experience with Goldman Sachs' relocation bonus and when they give it? I am in a position where I cannot really afford the costs of paying for rent upfront, getting furniture, getting electricity etc without getting my relocation bonus earlier. Asking my parents for more money is not an option. Is it possible for me to ask HR for the relocation bonus earlier, or do I have to take out some kind of loan?

Here is what the offer letter said concerning the relocation bonus: "You will receive a gross relocation payment payable only after you commence employment with the firm in 2015. Such payment will be made to you in cash no later than the last day of the year in which you commence employment."

sarehu
Apr 20, 2007

(call/cc call/cc)
Get a payday loan. Seriously.

(A credit card might be cheaper.)

You don't need to get furniture up-front. Get an air mattress.

huhu
Feb 24, 2006
For anyone that is self taught and got a job, care to share (or pm me) your resume?

huhu fucked around with this message at 03:44 on May 29, 2015

lunar detritus
May 6, 2009


sarehu posted:

Get a payday loan. Seriously.

(A credit card might be cheaper.)

You don't need to get furniture up-front. Get an air mattress.
I literally slept on the floor for a couple of weeks in my first apartment after I got a loan to pay for the upfront rent.
Sometimes you just need to do that kind of crap.

baquerd
Jul 2, 2007

by FactsAreUseless

sarehu posted:

Passages like, "This side effect creates a temporal coupling. I.e. ..."

Oh yeah, talk dirty to me baby. Don't forget the astronomy lesson!

shodanjr_gr
Nov 20, 2007

Akarshi posted:

Hey all, anyone have any experience with Goldman Sachs' relocation bonus and when they give it? I am in a position where I cannot really afford the costs of paying for rent upfront, getting furniture, getting electricity etc without getting my relocation bonus earlier. Asking my parents for more money is not an option. Is it possible for me to ask HR for the relocation bonus earlier, or do I have to take out some kind of loan?

Here is what the offer letter said concerning the relocation bonus: "You will receive a gross relocation payment payable only after you commence employment with the firm in 2015. Such payment will be made to you in cash no later than the last day of the year in which you commence employment."

Ask your HR contact about specifics on the disbursement. If you're a new college hire, they have almost certainly heard he question before. There's no shame in asking.

Early relocation allowance disbursement differs from company to company. Most don't do it.

Just get a couple of credit cards if your credit score can support it. Put your future income in the application and you should be able to get largish limits. That's how I'm financing my relo until I start work at the end of June.

Odette
Mar 19, 2011

I was just like "why is this dude putting his signing bonus in a CD case? that makes no sense whatsoever"

Is that something like a term deposit?

kitten smoothie
Dec 29, 2001

Odette posted:

I was just like "why is this dude putting his signing bonus in a CD case? that makes no sense whatsoever"

Is that something like a term deposit?

Same thing, just we call them certificates of deposit here in the US.

huhu
Feb 24, 2006
Is there a category that the languages Java, C++, and Python fall into? I've been looking at jobs and these three keep popping up together. Is there any reason why JavaScript wouldn't fall in there? I've dedicated myself to learning JS first and then moving on to Python since I played around with it before and enjoyed it.

triple sulk
Sep 17, 2014



huhu posted:

Is there a category that the languages Java, C++, and Python fall into? I've been looking at jobs and these three keep popping up together. Is there any reason why JavaScript wouldn't fall in there? I've dedicated myself to learning JS first and then moving on to Python since I played around with it before and enjoyed it.

Probably (big) data related positions.

Fellatio del Toro
Mar 21, 2009

If i had to categorize them I'd go with "the most commonly used languages in college courses."

pr0zac
Jan 18, 2004

~*lukecagefan69*~


Pillbug
Most common non-web focused languages.

Skandranon
Sep 6, 2008
fucking stupid, dont listen to me
They don't have much in common structurally. Java is purely OO based, C++ has objects bolted on, and Python only kinda. Java is compiled to bytecode to run on a VM, C++ is compiled to the specific OS/CPU architecture, and I don't know what Python does.

Maybe it's just a scattershot and hoping to pick up someone that has at least one of those three.

Munkeymon
Aug 14, 2003

Motherfucker's got an
armor-piercing crowbar! Rigoddamndicu𝜆ous.



They're all Google-approved back-end languages.

Doctor Goat
Jan 22, 2005

Where does it hurt?
Alright, so.. I'm a C# coder tentatively. I've done a semester of C#/Java, a semester of PHP that I was not fond of, and a semester of C++. The C#/Java weren't even transfer courses and I don't have a degree in anything.

I am now in dire financial straits, so I'm trying to use those skills to do something with myself.

The two things I've coded most recently to try to actually use are a mp3 player and a window resizer:

https://www.dropbox.com/s/njf7e56j66lmut0/goatMP3vF.zip?dl=0
https://www.dropbox.com/s/ef3ucvj487ypjrv/winSize.zip?dl=0

If anyone doesn't mind looking, are these something that would make a recruiter cringe or are they pretty okay?

New Yorp New Yorp
Jul 18, 2003

Only in Kenya.
Pillbug

Doctor Goat posted:

Alright, so.. I'm a C# coder tentatively. I've done a semester of C#/Java, a semester of PHP that I was not fond of, and a semester of C++. The C#/Java weren't even transfer courses and I don't have a degree in anything.

I am now in dire financial straits, so I'm trying to use those skills to do something with myself.

The two things I've coded most recently to try to actually use are a mp3 player and a window resizer:

https://www.dropbox.com/s/njf7e56j66lmut0/goatMP3vF.zip?dl=0
https://www.dropbox.com/s/ef3ucvj487ypjrv/winSize.zip?dl=0

If anyone doesn't mind looking, are these something that would make a recruiter cringe or are they pretty okay?

If you want people to look at it, put it on Github.

Doctor Goat
Jan 22, 2005

Where does it hurt?

Ithaqua posted:

If you want people to look at it, put it on Github.

Alright, sorry. I've been used to Dropboxing things to let a few friends of mine dick with things I code, since they're better at breaking things than I am.

https://github.com/DoctorGoat/winSize

https://github.com/DoctorGoat/goatMP3vF
I am not very proud of this but it's the most complex thing I've made

New Yorp New Yorp
Jul 18, 2003

Only in Kenya.
Pillbug

Doctor Goat posted:

Alright, sorry. I've been used to Dropboxing things to let a few friends of mine dick with things I code, since they're better at breaking things than I am.

https://github.com/DoctorGoat/winSize

https://github.com/DoctorGoat/goatMP3vF
I am not very proud of this but it's the most complex thing I've made

Your MP3 player has a huge problem: The entire thing is one giant class. Good OO programming dictates that you separate your application into classes that encapsulate behavior.

Another problem: WinForms is awful and encourages you to do exactly what you did. WPF is a more modern equivalent for Windows desktop applications. Although WinForms apps still exist (and you may well end up maintaining one for a job), no one is actively starting new WinForms projects anymore if they know any better.

Write unit tests whenever possible.

Use appropriate naming conventions for the language you're writing. C# has very thorough conventions: https://msdn.microsoft.com/en-us/library/ff926074.aspx

piratepilates
Mar 28, 2004

So I will learn to live with it. Because I can live with it. I can live with it.



Doctor Goat posted:

Alright, sorry. I've been used to Dropboxing things to let a few friends of mine dick with things I code, since they're better at breaking things than I am.

https://github.com/DoctorGoat/winSize

https://github.com/DoctorGoat/goatMP3vF
I am not very proud of this but it's the most complex thing I've made

That winSize program seems basically negligible, it only has 3 small functions, and still has two TODOs.

sarehu
Apr 20, 2007

(call/cc call/cc)

Doctor Goat posted:

If anyone doesn't mind looking, are these something that would make a recruiter cringe or are they pretty okay?

A recruiter wouldn't have a clue.


Ithaqua posted:

Your MP3 player has a huge problem: The entire thing is one giant class. Good OO programming dictates that you separate your application into classes that encapsulate behavior.

What classes would those be?

Ithaqua posted:

Write unit tests whenever possible.

What unit tests would you write?

(Fair anti-warning: I won't argue with or respond to any answers that you write.)

Doctor Goat
Jan 22, 2005

Where does it hurt?

piratepilates posted:

That winSize program seems basically negligible, it only has 3 small functions, and still has two TODOs.

Yeah, I wrote it earlier when I got ticked that there wasn't a feature built into several games. I'm trying to set goals for a program and stop myself from overreaching.

In the case of the latter TODO, I'm going to have to learn a significant amount more about how Windows handles border styles unless I just copypaste something from stackoverflow or something. The earlier one is because I needed lunch and had to put it down, though.

Skandranon
Sep 6, 2008
fucking stupid, dont listen to me

Doctor Goat posted:

Yeah, I wrote it earlier when I got ticked that there wasn't a feature built into several games. I'm trying to set goals for a program and stop myself from overreaching.

In the case of the latter TODO, I'm going to have to learn a significant amount more about how Windows handles border styles unless I just copypaste something from stackoverflow or something. The earlier one is because I needed lunch and had to put it down, though.

You don't need to justify these things to us, we're telling you things other people will say. You need to either fix those things, or come up with excuses you would be comfortable telling an interviewer. Whatever you bother to hold up as an example of your abilities better be the best you can possibly do, not something you didn't feel like doing better on or had to go get lunch.

UnfurledSails
Sep 1, 2011

"Capable of creating and innovating solutions not by thinking outside the box, but as if there is no box"

I love dumb white noise qualifications like these.

Blotto Skorzany
Nov 7, 2008

He's a PSoC, loose and runnin'
came the whisper from each lip
And he's here to do some business with
the bad ADC on his chip
bad ADC on his chiiiiip
• Must be capable of seeing the code when in the matrix

Skandranon
Sep 6, 2008
fucking stupid, dont listen to me

Blotto Skorzany posted:

• Must be capable of seeing the code when in the matrix

They say that, but when I tell them I CAN see the code right now, they call me crazy.

huhu
Feb 24, 2006
Would anyone care to give my website a 2 minute view(as if you were hiring) or a longer view to see if there are any issues? http://www.travisbumgarner.com/

Also, my resume, thoughts?
https://drive.google.com/file/d/0B01niieJYRjKN0h3XzRXQnIzZDA/view?usp=sharing
There might be some formatting issues, mainly the content at this point, I just created it from scratch and grabbed stuff from my old resume.

Nippashish
Nov 2, 2005

Let me see you dance!

huhu posted:

Would anyone care to give my website a 2 minute view(as if you were hiring) or a longer view to see if there are any issues? http://www.travisbumgarner.com/

Your javascript page is super confusing and it took me several minutes to realize that the top two projects on the page are actually demos of things you built and aren't placeholders from a template that you forgot to fill in.

Skandranon
Sep 6, 2008
fucking stupid, dont listen to me

huhu posted:

Would anyone care to give my website a 2 minute view(as if you were hiring) or a longer view to see if there are any issues? http://www.travisbumgarner.com/

Some of the things there are really REALLY basic. FizzBuzz should not be the culmination of your abilities, that is a filter for the bare minimum of what's worth talking to.

Also, your FizzBuzz solution is wrong (supposed to print the number if it's not any of Fizz, Buzz, or FizzBuzz). And your Fibonacci summation is hugely inefficient. There is no reason to keep pushing the numbers into an array to get the sum. I'm going to stop there though, lest people start to think I'm mean (I'm not, just overly critical)

Skandranon fucked around with this message at 23:25 on May 30, 2015

Adbot
ADBOT LOVES YOU

huhu
Feb 24, 2006
Sorry I should have phrased that question differently. I just put in a ton of work building the website, custom child theme, templates for pages and posts, accordion on the education page, project sort on the engineering portfolio page, etc. I'm more focused on the quality of the actual website... HTML, CSS, and JavaScript as it relates to web design stuff. My next focus is to continue with MIT's OCW course and Eloquent JavaScript to improve my JavaScript abilities, which I know are far from good.

Skandranon posted:

Some of the things there are really REALLY basic. FizzBuzz should not be the culmination of your abilities, that is a filter for the bare minimum of what's worth talking to.

Also, your FizzBuzz solution is wrong (supposed to print the number if it's not any of Fizz, Buzz, or FizzBuzz). And your Fibonacci summation is hugely inefficient. There is no reason to keep pushing the numbers into an array to get the sum. I'm going to stop there though, lest people start to think I'm mean (I'm not, just overly critical)
So then your comment I take from this is that "JavaScript Exercises" is a bad title for stuff I write in JavaScript to answer end of the chapter problems in the book Eloquent JavaScript? What could be a better title?

Edit: Maybe it's better to throw all my solutions on Github and link to it so it's not so easy to find...since they're unpolished kind of stuff. Or maybe just don't show them at all?

huhu fucked around with this message at 00:24 on May 31, 2015

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