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
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.

TasteMyHouse posted:

If you don't know Big O, and at least have an inkling of how different common algorithms and data structures work, you're going to end up in the coding horrors thread.

This is not usually the problem in my experience.

I'm working on a project right now where people are writing a module that implements a context menu. It's taken two years to implement, consists of over 300,000 lines of code, and uses components written in three different languages: C++, C#, and javascript.

I understand given the history of the project why it was done that way, but it's my firm belief that over-engineering is a huge problem - be lazy. Write understandable code. Use simple designs. It's always the clever, over-thought solutions to problems that lead to problems.

Adbot
ADBOT LOVES YOU

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.

Orzo posted:

It is possible to pick up a programming job if you have no degree at all. Just a little bit harder to get noticed.

It is a bit of a nightmare to get a job as a programmer with no experience right now - it's very easy to find a job if you already have experience, but unless you know someone you're probably going to have to work as a contractor for a couple of years. This isn't something that a B.A. or a M.S. will help with though.

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.

Ithaqua posted:

Option 4. A graduate degree means fuckall when hiring software developers, unless, for example, you did your masters degree in some area of machine learning and my company is looking for an expert in machine learning. I've seen people with no college degree at all who were badass software developers and had no problems getting jobs.

This depends on the company. Not having a degree (or having a liberal arts 4 year degree) but being a badass developer won't get you past the phone interview at large companies. I'll concede a graduate degree is meaningless if you already have a CS degree.

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.

Orzo posted:

I'm sure there's exceptions as you pointed out, but Google is notorious for having fairly strict education requirements, at least here in the US. Searching yields a number of contradictory reports--there's definitely some horror stories from the hiring committees rejecting people based on sub-3.3 GPAs, etc.

When I applied for a job doing test software development at google a couple years back I got a pretty blunt letter back saying that I should have a CS degree, gently caress off.

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.

Picaresque posted:

From friends' experiences at Facebook, Twitter and similar companies, there were a large number of employees without CS degrees. I would say that most start ups look much more heavily at your projects and how comfortable you are discussing and thinking critically about code. Typically, the attitudes I've encountered at these companies are that, if you were self-disciplined enough to independently teach yourself how to code, you'll be able to teach yourself other needed languages & concepts.
You also have to consider that HR/recruiters arbitrarily set requirements for candidates. It's very hard for HR/recruiters to vet candidates... They do better if they set hard requirements and act as a filter - hence the proliferation of job postings asking for CS degrees.

A lot of start-ups won't have HR and will have development teams/managers vet future employees personally, and that's a situation where people are a lot more likely to be open-minded requiring hiring decisions.

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.
I'm hesitant to start up the education argument again, but I saw this today:
http://careers.epic.com/byedu.php. It may be only a medical company thing though.

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.

shrike82 posted:

I've been helping my team with resume vetting.

Setting aside how 3/4 of applicants are mainland Chinese/Indians (tough for them to stand out), it amazes me how people with great looking resumes bomb our IQ test. This is pre-contact with anyone on our team; we have them take an online 3rd party IQ test.

An inexplicable number of people coming from top CS/engineering schools/with a good work pedigree getting sub-50 percentile for the test. W T F.

A lot of people are lying their asses off on resumes, judging from what I see on paper versus what actually walks in the door.

That said, if you're using an IQ test to screen, you need to be careful or you might(probably) will get sued.

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.

Super Ninja Fish posted:

Last December, I graduated with a degree in CS. All entry level programming around me seem to want Database and SQL experience. If that's so important, then why isn't Database a required course for the CSCI curriculum? I took a Computer Security elective instead on my final semester mainly because it sounded more interesting. I regret it now.

What's the best way to get experience with Database and SQL?

Probably getting thrown a database and being forced to get it to work at your job. Like... If I had to fake my way through an interview:
1. Download SQL Express and the adventure works database off of MSDN.
2. Work through writing queries - if you don't know how to join tables and what the different joins are that ends your interview.
3. Learn what 3rd normal form is and look at some example normalized databases.
4. Look up some ADO or JDBC or other programming examples that access the database and play with them.
5. Look up CRUD, data access object, REST, three-tiered architecture and object-relational mapping off of wikipedia.
6. Work through the adventure works data warehousing example off of MSDN and get to the point where you know what data warehousing is for some bonus points.

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.

Don Mega posted:

I have begun my job search for an entry level software developer position post graduation and I am wondering how much salary I should be looking for. I live in Pittsburgh and it seems that the average entry level is in the 50's which seems low relative what most people said in this thread. But it kind of makes sense since the standard of living in Pittsburgh is so cheap compared to other major cities.

50k for fresh out of college is about what you would expect nowadays if you graduated with maybe an internship and an OK academic record and no real experience.

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.

Anal Tributary posted:

Hey, thread. I'm an 18-year freshman at a terrible joke of a community college (thanks for slacking off and getting a 2.8 GPA going into applications high school me :argh:), of course hoping to transfer in the future. Problem is, there's no way for me to get an actual CS education until I can transfer, which would be in Spring or Fall 2013.

Right now, I'm unemployed and pretty goddamn broke. I had a seasonal retail job, but it killed my time to learn and code. I'd rather not have to go back to Geek Squad anytime soon, so I'm wondering: is it worth trying to pursue freelance projects, or should I try for some sort of part-time, entry level job or paid internship position now instead? I'm in the Atlanta area, so there's not quite the same amount of opportunities available as elsewhere, but I've at least seen freelance jobs on Craigslist :v:

I'm focused pretty much entirely on web development on the moment, because that seems to be a niche that's working for me. I'm enjoying what I guess is called "front-end development," a mixture of heavy JavaScript (MVC frameworks like Backbone and Ember) and designing UIs/templates. I've done some small scale projects, and released a (now-abandoned) Chrome app that got some press and around 5k users senior year of high school, which was neat. I've also got some Django experience, mostly coding views and doing templates with a partner who did much of the backend stuff.

I think I could handle freelance projects with my skillset, but I am unsure if I could even get an interview for an entry-level job or an internship. Again, freshman at a bad community college. Is it worth pursuing, or should I just lay low and try to get freelance jobs or, god help me, another retail job for now?

The other thing is, I have zero formal background. If you dropped me in front of a whiteboard and asked me a real conceptual problem I'd probably just curl up in the fetal position. So I'm wondering what the best, cheap way to self-teach myself more advanced skills - data structures, algorithms, etc. - so that I can do well at interviews for internships, maybe not this summer (as nice as that would be) but at least by this time next year. I know that a front-end position probably wouldn't require as much of this, but I have to assume it would be at least partially expected.

Make a portfolio/resume and see if you can score an entry level web development job or an internship. Most of what you would learn in a formal CS program is going to be fairly irrelevant to front end web development (or development in general) anyway, so there are places that are willing to be relaxed about it - but you're probably going to have to network (talk to a guy who knows a guy) to get those chances. This is going to take a lot of asking around, but you'll probably break through eventually. Retail is not a good use of your time.

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.

Knyteguy posted:

I can take mean if it's constructive. Project Euler was pretty much my reintroduction to C++, and I've since moved to much more readable code (thanks to a link here on better programming habits).

Edit: Example of some c# code I've just written up: http://pastebin.com/w0Y0yfu7

here is a version of what you did that is less stab-inducing
code:
long factor = 600851475143;
bool isPrime = false;

while (isPrime == false)
{
   isPrime = true;
   for (long i = 2; i <= Math.Sqrt(factor); i++)
   {
         if (factor % i == 0)
         {
              factor /= i;
              isPrime = false;
              break;
         }                            
   }
}
Console.WriteLine("Finished.  Greatest prime factor is {0}", factor);
Console.ReadLine();

Bruegels Fuckbooks fucked around with this message at 05:31 on Mar 9, 2012

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.

Knyteguy posted:

Hm so why is this so? Is there a name for this attack so I could do some research? I really like this kind of stuff. Thanks again.
Here is the problem:
code:
$password_array = str_split($password, 2);
$hash = sha1($password_array[0] . $salt . $password_array[1]);
The problem is str_split($password, 2)...

Say password is 'hello_world'.

Resulting data is:
$password[0] = he
$password[1] = ll
$password[2] = o_
$password[3] = wo
$password[4] = rl
$password[5] = d

$hash = sha1("he" . $salt . "ll")... You're throwing away the rest of the password.

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.

Knyteguy posted:

code:
$sti = 'SALT';
$salt = md5($sti);
$password = mysql_real_escape_string(stripslashes($_POST['password']));
$hash = sha1($salt . $password);
$username = mysql_real_escape_string(stripslashes($_POST['username']));
$email = mysql_real_escape_string(stripslashes($_POST['email']));

You need your salt to vary for every entry in the DB. I would use something (well I wouldn't try to do this myself, but if I were to do this), I'd use something like 'time of account creation' or 'time password changed' to do the salt. With the above
a) If two people use the same password, the hash is the same
b) You only need to generate one rainbow table.

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.

Zilla32167 posted:

I just got let go from my 2-month old position at UCSD as a database/website developer, and I'm gearing up to begin applying for new jobs as soon as I wrap up some administrative loose ends. While both my direct boss and our mutual supervising professor were assured me there was nothing wrong with my abilities in pure programming, it turns out that a BS in CS from Caltech is very little preparation for dealing with for less theoretical tasks like web development, graphical design, project management, testing and development frameworks and methodologies, and so on. How should I go about learning how to work with these things?
The best way is to get a job in a big company where incompetence is tolerated and survive for a year or two despite being thoroughly unqualified.

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.

pigdog posted:

Given it was a phone interview, I did get the impression they were expecting an answer.

Personally, I would have truthfully answered "I can see that the most straightforward way of calculating 3^12345678 is impossible, but I'm sure there's a more optimal mathematical solution. I'll consult someone with better knowledge of math for an effective way to solve this problem, and implement it".

The question isn't in the domain of programming, it's in the domain of math. What if the (math) problem was twice or thrice as difficult and certainly not in the realm you'd expect from the average software developer?

Sure, the dev might stumble upon a solution eventually, but in real life with actual problems, a programmer mucking about and making assumptions in a domain they aren't quite familiar with, is where all sorts of bugs and inefficiencies come from. In a real project, where there isn't an interviewer with a notepad looking over their shoulder, a dev might actually try and calculate that 3^12345678. Perhaps even be successful, if the value was somewhat less astronomical. The solution is to consult someone with the necessary domain knowledge and apply their knowledge for an optimal solution. If the developer in that position himself is presumed to be that person with the necessary math knowledge in the project, then sure, that's a valid interview question.

That's true, but it's more a question of whether or not you really made it through a CS degree. I don't know how anyone could've made it through a CS degree without knowing the modulus stuff cold, it's an operator I virtually never used outside of intro to CS and cryptography.

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.

Sparta posted:

I got a degree in politics.

I had previously dropped out of Cal Poly's CSC major after a year.

I am currently trying to learn programming. Doing Codecademy (pretty far through it) to learn JS, I've been watching screencasts on things like DB design, I'm going to read through the Python tutorial and a Django tutorial and build a little website I've had an idea for (legislator lookup for stances on internet issues, planning on making it a PAC).

Additionally, I used to do a lot of web design as a kid, but now have forgotten most of it/most of what I knew has depreciated (i.e., the last time I was designing, tables were considered the norm means of coding a website). In the past month I went through a couple screencasts/tutorials on CSS/HTML5.

Currently, I haven't completed or started a project in years. This lookup-website will be my first site since I was in high school.

I would like to work for a software company.

Should I:

A) Work on my projects, build a small portfolio, then go interview.
B) Go back to school to get a relevant degree.
C) Look for a job requiring no real experience (QA?) and work my way up.
or D) Go to law school like I planned and specialize in tech law or something.

Do A/B/C at the same time.

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.

kitten smoothie posted:

There's a lot of pontificating in there about software development but it doesn't tell me why I should hire you. Tell the reader about yourself and why your experiences matter to the position.

I'm not sure the "pontifications" convey the right attitude - they don't seem borne of experience.

For example:

quote:

- I believe the hardest problems should be highest priority. Hard problems never go away by themselves, but easy ones often do.
What about the easy problem that would piss off our customers a lot versus the hard problem that no one but the developer would ever notice? Priority should be customer focused.

quote:

- There is no sense in investing time on an inferior solution
What about TDD? What if the perfect solution takes too long to develop? What if there is no perfect solution? How do you know if a solution is perfect before you undertake it?

quote:

- The job should contain more thinking than doing.
Does thinking ship products?

quote:

- A perfect product is only possible if the code (going all the way back) is perfect.
The perfect product is what meets the customer needs - luckily, the customer is usually not very perceptive. The software engineer is a con artist, trying to fool the user/system into accepting a solution that looks like it works. Some of the worst code I've seen in my life was responsible for absolutely critical systems, and it has done its job unflinchingly for over a decade with no reported bugs despite my personal belief that is an abomination.

quote:

- Truly innovative ideas are inherently more valuable to a company than the code that implements those ideas.
You know what's better than innovative ideas? Ideas that sell. Ideas that solve the customer's problem. And better than that is code that solves the customer's problem.

quote:

- Since engineers do more thinking than doing, it is essential to have regular meetings where ideas and problems are shared with one another.
Are you on drugs? I used to spent eight hours a week in meetings with senior software engineers, and I've cut that down to four. I get way more out of emailing a single dev with a specific question.

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.

Safe and Secure! posted:

Are there (m)any development jobs/areas where a master's degree would greatly benefit my employment prospects? I want to get an MS at some point, and whether I should be looking into a CS or statistics or maybe even math MS. I am interested in all these fields, so I figure that the one most likely to help me in the most in the long run would be the best choice.

It depends on what you're trying to do.

If your undergrad was CS, I wouldn't bother with the master's in CS. There are some jobs postings that ask for it, but they seem to be few and far between (although granted, I've seen more job postings looking for a master's in computer science than for other master's degrees.)

I was a philosophy major undergrad, and I wiggled into development through QA. I'm getting a master's in CS because
a) My boss hinted at a promotion if I had the degree
b) The CS degree seems to come up a lot in all the online site job ads.
c) My tuition is reimbursed by my company.

Education alone isn't going to get you in the door for any job though - I saw enough people with M.S. in Computer Science apply for 30k manual software testing jobs back in 2009 to know how much that degree is worth without experience. The classes have shored up a lot of background information that I didn't realize I was lacking but you definitely learn faster on the job than in classes.

If you are already at a job and the people who are getting promoted have master's degrees, and they're willing to fit the bill/you get into an academic program that's willing to pay you to go to grad school, do that.

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.

Weinertron posted:

So I have made it past phone interviews and a code evaluation where they sent me some program skeletons and test cases, and am now travelling on their dime for an interview tomorrow.

I didn't think I was going to make it with these guys, so I never seriously considered the pros / cons of working at a place that does Agile development. I know little about the actual software industry, is everyone doing agile now?

Also, I know this isn't the best place for salarychat, but on glassdoor it looks like they pay general "software developers" 60k-80k, but they also have 3 people reporting "Junior Java Developer", the specific position I was applying for at 68k-73k. Salary hasn't come up at all yet, and it's an intimidating issue. If they as me how much I want, dare I ask 70k and they guide me down to where they start brand new fresh guys? I'm a fresh BS graduate with an engineering degree, but it's a company in oil & gas so I've been told by the recruiter that salaries are higher. I don't know if I trust him. I'd be happy with anything livable, $60k+.

The big gotcha is that many development places practice "fragile" development rather than "agile" development - mostly characterized as taking the not documenting everything and pushing stuff out the door fast aspects of agile, without taking the positive aspects of agile, such as automated tests, continuous integration, listening to customers, and involving all groups early in the process.

It is good to move around a bunch of places and see what works and what doesn't - I really don't like using buzzword terminology to describe processes because an abstract concept like agile can mean a lot of things to a lot of people (even though it shouldn't) and you'll often find that places claim to use it simply because lots of people think it's a good idea. You should ask more specific questions about process (How often do we release? How is testing handled? Who handles documentation? What happens if a bug is found? What kind of source control do we use? How often do we do code reviews? How is work assigned? What does the organizational structure look like? What happens if an estimate is missed? Who's doing the testing?)

I find that I get much better results (in terms of information value) if I stay away from asking about abstract or undefined concepts and focus more on specific details - a lot of time if you talk on an abstract level, people will do things like, say, confuse what has actually been implemented with what people think has been implemented.

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.

Ithaqua posted:

What sort of questions? Polymorphism? Inheritance? Design patterns?

This is a good design patterns book: http://www.amazon.com/First-Design-Patterns-Elisabeth-Freeman/dp/0596007124

You can't beat yourself up too much if your design skills aren't quite there yet; it takes a lot of experience to be able to decompose a problem into a sane object model without a lot of trial and error.

That's a pretty good book.

I'll throw in some others:

Heads First Object Oriented Design is probably tailor-made to your problem... Some overlap with the design patterns book, but it goes into more detail about how/why/when to implement design patterns.

Heads First Software Development is good if you need to brush up on agile/scrum.

Programming Interviews Exposed doesn't go into any real detail in one aspect of software development but you should know literally everything in the book to the point where you could have written it yourself. Good starting point.

Cracking the coding Interview should help you once you get to the whiteboard stage.

Bruegels Fuckbooks fucked around with this message at 13:57 on May 30, 2012

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.

Plorkyeran posted:

C# strings are immutable, so it's impossible to implement an in-place reverse or to reverse a string without the two copies that method does (one for ToArray, one in the string constructor) (although one or both could get optimized out).

Wouldn't it be better philosophically (for the purpose of the question) to use a StringBuilder then?

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.

pigdog posted:

Either they give a proper facial or no deal.


Anyway... regarding comments. Comments generate rigidity in the program as they need to be updated every time you change the code, so the effort to keep them up to date (and they will get out of date) hinders refactoring, pretty substantially at that. Focus using them, as well as unit tests, on public interfaces, or to explain what the code is for at class level.

Instead of comments, strive to make the code itself readable by using meaningful names, organizing code to methods that do one thing (and expressing that thing in the name), and perhaps less obviously make an effort to write good commit messages for your code. In a proper IDE :wink: you can turn on annotations to see the last commit message as well as commit history for every line of code in your project, so you can easily track the changes to see why any piece of code was written.

Another aspect is that comments aren't international - I have had to deal with codebases that are written entirely with Japanese comments and Russian comments before and frankly it wasn't obvious what to do with the comments in those languages (if we don't know what the comments in a section of code that we are changing mean, should we add our own comment that the original devs can't understand, do we delete the comment, do we use google translate to try to get across how trying to patch over a visual artifact bug?)

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.

pigdog posted:

In any case, it makes good sense to front-load as much of the things that may cause unexpected problems and delays (testing, integration, etc) as possible. Even for game development. I doubt any game would "tank" if a demo isn't functional for E3 or any other tradeshow; I'd reckon it's more likely for a publisher to lose patience and trust in the developers for having delivered nothing usable in the timeframe. In enterprise solutions which I'm more familiar with, I feel very confident in saying it's a huge deal to be able to constantly release and quickly react to changing requirements, as opposed to taking a huge amount of time and being forced to launch the whole thing half baked.

A lot of game people actually DON'T want to know what the real schedule is. The publisher doesn't want to know because it can book the revenue in such and such quarter without feeling guilty, and the developers don't want to know because if they plan to work their software engineers 80 hours a week, they can get sued, but if it just happens, they're all heroes and get bonuses.

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.

how!! posted:

I don't follow. You're telling me software design patterns are worthless? One should never worry about writing easy to read code because its pointless? In my experience, its the exact opposite.

At the end of day, programming problems are about getting poo poo to work - that's a minimum requirement. If you're not starting with someone who can get stuff to work, you may end up with the well-designed, well documented system that doesn't actually work. TDD and good design take time and don't really make sense in a time-boxed environment, and would be more appropriate to test for in a 'homework' style interview assignment.

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.

baquerd posted:

You reduce the number of data retrievals needed by using calculations from the previous "square". A simple example is going row by row and carrying over column values:

For each row, start on the left (one off from the edges) and calculate the total number of blacks in the left three, center three, and right three squares in the nine square block you need to examine. When you move on to the next square, set the left total to the mid, the mid to the right, and recalculate the right three squares for the new position.

Result: Immediate removal of roughly 2/3 of the data retrievals and comparisons.

For an interview question, I would be ecstatic if someone came back with a DP solution that worked in an hour, and would be able to explain how it worked and all that. Me as the interviewee would not even try and would just bring up that a DP solution is possible.

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.

Fal-Cone posted:

Just graduated two months ago in May with a B.S. in CS (No previous internships/research experience. A handful of small projects, and a 2.98 GPA), but after two months of hobbling around and applying to a handful of places, the only position I managed to snag was as a "Software Intern" at a large telecom company at $15/hr working 35/40h a week on a 6-month contract doing test automation and stuff.

Everyone else that graduated with me is either making double my expected annual income, or is still bopping around doing summer stuff. It's day five for me, here, and I'm not really digging this huge cubicle farm and the whole "worth-half-as-much-as-my-classmates thing" :ashobon:

What's the best plan in terms of trying to get a position as an actual software engineer job out there? Could I try to put the fact that I'm currently in an internship on my resume and hope it scores me some points? Or stick it out for a couple quarters or the whole six months? I mean, i'm in the SF Bay Area, it shouldn't be that difficult, right?

Write something decent, put it on github, and link your github on your resume.

You should at the minimum have something decent written for undergrad - put that poo poo there.

Keep interviewing in the 5 hours that you aren't spending actually at work - if you keep doing what you're doing without interviewing, you're going to get pigeonholed in test automation work, which can be good money with low stress... but it's still QA.

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.

how!! posted:

Let me change the topic a little. Reddit posted this a few weeks ago: http://redditgifts.com/blog/view/be-redditgifts-first-engineer/

The solution I came up with is here: https://github.com/priestc/gift_match/blob/master/match.py

That code took me three days to create. It represents exactly how I write code for production. Everything I write for my personal projects and for stuff at work, I strive for it to look like that. I never ever ever ever check in code that looks like tef's code. For that reason, I always feel like it's unfair when I'm given a programming challenge where I'm forced to turn in code that I'm not able to polish up the way I like. For the same reason, I hate it when my co-workers check in code thats not polished up either. Reddit did it right because they let me take as much time as I wanted. I feel proud of the code I wrote and feel confident in emailing it to them. Do you think I'm a terrible programmer because it took me three days to write that? I guess I could have gotten it done in one hour, but it would have been awful code and I would have been ashamed of myself for sending them a solution that was not as good as I am capable of creating.

I am a idiot savant at maintenance programming - throw me at a million lines of C code with no comments, no unit tests, and no real documentation, give me a defect report, give me a week and I can probably figure something out - two weeks if I don't have the source. It's a pretty disgusting skill but someone has to clean up once the 'real' programmers are moved onto cleaner pastures.

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.

Safe and Secure! posted:

Today I finally got to work with the testing scripts at my internship. Found a quadruple-level for-loop.
The worst I've ever seen was mobius style goto label - imagine a while loop that jumps ahead to a goto statement while reading from a buffer via pointer arithmetic, and a while loop doing pointer arithmetic placed after that label that conditionally jumps back to that goto statement before it.

Imagine that code does something life-critical. Imagine someone opened a crash bug against it. Imagine the dude who wrote it's been gone for years.

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.

MEAT TREAT posted:

Or it operates an X-Ray machine.
Medical device software is a great way to go gray really fast. Say you're a principal engineer for software that operates a cardiac assist device.... and it leaks memory.

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.

how!! posted:

In my experience, personal projects don't mean squat when it comes to hiring. In all my years of doing interviews, I've been asked to talk about my personal projects maybe twice or three times. The rest of the time they only ask me about what I've done at my previous jobs. I usually try to steer the conversation towards my personal projects, because they're easier for me to talk about, but most interviews could care less. For reference I have about 19 repos on my github which includes around 100,00 lines of code I've written over the past half decade.

It depends on the interviewer. Some companies, you interview and know off the top of your head how to answer questions about smart pointers and virtual destructors and you've nailed the tech interview, others will ask you questions about how many marbles can fit in the statue of liberty.

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.

Kim Jong III posted:

I found my current job via a recruiter -- the company didn't publicly list the position, just relied on recruiting agencies. It was a 3 month contract to hire, and as soon as I was hired full time I ended up with around an 8% bump... I'm going to guess the recruiter got around an 8% commission :q:

A company is paying a contracting company $50 an hour for a co-worker and he is only seeing $30/hr of that.

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.

Kim Jong III posted:

That's exactly why I wanted to 1099 and avoid contracting agencies. What the hell is that company doing that deserves a 66% commission?

The company is paying for the ability to fire without it being a pain in the rear end.

You are actually better off though if you are an independent contractor - independent contractor means serious money as you can get paid for overtime doing software development.

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.

Kim Jong III posted:

Ah, yeah - I keep forgetting that I work in a state that can be actively hostile towards worker's rights :v:

As for independent contracting, I've got some friends that are doing it, loving it, and making crazy money. I just wouldn't know where to begin with the whole "find clients, build relationships" -- the business side. Any tips?

The best way to become an independent contractor is to work at a software company a bunch of years, be invaluable, get burned out, leave, have a major crisis occur because you left, get offered to come back, ask to be a contractor, and then get paid the big bucks.

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.

KNITS MY FEEDS posted:

Most programmers learned to write code on their own time. We did it because we liked it, the BSc in Computing is just there to prove that you know how to program really. Most schools don't actually teach you much of any programming past the 100 levels honestly. I'm imagining a MSc will be much the same.

The one big rule of getting a masters degree in anything is never spend any of your own money. Scholarships/paid grad school is awesome. If your company is paying for it - cool. If your parents are paying for it - only get the degree if you don't like them. Otherwise stay the gently caress away, it will not be worth it.

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.

Ithaqua posted:

ANECDOTAL EVIDENCE WARNING: Every developer I've ever met who has a masters degree has been a lovely coder but thought they were hot poo poo because of the extra degree.

I was a philosophy undergrad and got tired of people making the "philosophy, whatever are you going to do with that?" joke, so I'm working on my masters while shaking my rear end for money as a SDET by day. Don't judge!

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.

Ithaqua posted:

You're also criminally underpaid. I started my career in a similar situation, and I don't like seeing it happen to other people. People who start out at a low salary tend to make less throughout their entire careers. I managed to avoid that (my salary is pretty much dead median for my level of experience nowadays), but it was mainly through luck.

Don't let employers take advantage of you.

Never underestimate the power of getting poached. Some recruiter at [FAMOUS COMPUTER COMPANY] sent me a message on linked-in and started the interview process - I went to my boss and said that I was being paid below market value, had started to look around, and [FAMOUS COMPUTER COMPANY] had started interviewing me for a position. They asked for the emails I had with the recruiter.

Miraculously, my salary increased by 20k and I got a 10k bonus, cash, on the condition that I have to give the bonus back if I quit, literally overnight.

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.

oRenj9 posted:

Does this have a time limit on it or something? If the bonus had to be paid back if you left within a year, I could understand. But to have an indefinite liability binding you to a company sounds extremely stressful (and frankly, illegal).

Just curious though, how did Mr. Famous Computer Company know you on LinkedIn? Was it a random thing, or were you acquainted with somebody that worked for them?

I have to stay there for a year and half more if I don't want to give the bonus back. I have no idea why [FAMOUS COMPUTER COMPANY] contacted me but I had a lot of keywords relating to performance in my linked-in so I think I came up in a keyword search - my master's degree in cS was the first thing they asked about so I guess that's definitely a leg-up at that company.

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.

BirdOfPlay posted:

And, lastly, is the starting wage, my eyes were starting to glaze over when I saw the pay scale/range for the position. I mean, it's about average to a little below average for CS/tech starting salaries, but I be raising my income by several multiples and have a hard time believing that I'd be "worth" that much.

You need to get over that guilt fast - there have been times when I've gotten paid over 1k per line of code checked-in. Always look out for number one.

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.

FamDav posted:

I suppose if you want a has-a-pulse test, reversing a string isn't the worst. Realistically you'd give them something more involved as a weeder.

If you want an algorithm question, you could at least ask something more interesting like "Reverse all the words in the string".

obviously the solution is to detour the method gettextext and set up a hook so any application that calls gettextext gets inverted coordinates. this will naturally reverse all the drawn text on the system and technically be the correct answer!

Adbot
ADBOT LOVES YOU

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.

Ensign Expendable posted:

Unit test test very specific parts of your program, effectively inputting data, and then checking if output matches what you calculated manually. Also things like submitting malformed input to ensure that an exception is thrown.

The tests aren't so much testing anything difficult as making sure you didn't make an obvious mistake while writing code, or didn't break anything that worked before (called a regression). Really hardcore folks do test driven development, which involves writing the unit tests first and only then writing code to fit those tests. This has the added effect of making you think about exactly how your program will work before you write it.

A very useful metric of unit tests is code coverage. Your tests obviously can't go through every possible combination of inputs, so the next best thing is to ensure that each line of code runs at least once. There are tools to do this for you as a part of running unit tests.

One thing that screws everyone up when writing unit tests is that there are additional requirements for a program to be testable.

a) The program must have a API (application interface). This is what you write your unit tests against - the biggest problem people have with writing unit tests is testing private methods instead of the interface, as that will just lead to a lot of code that is a waste of time for everyone involved.
b) Code against interfaces instead of implementation when making calls to classes within classes - this makes it so it's easy to stub out classes.

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