|
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.
|
# ¿ Sep 10, 2011 23:54 |
|
|
# ¿ May 15, 2024 18:13 |
|
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.
|
# ¿ Nov 15, 2011 04:44 |
|
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.
|
# ¿ Dec 13, 2011 21:01 |
|
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.
|
# ¿ Dec 30, 2011 19:49 |
|
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. 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.
|
# ¿ Jan 2, 2012 17:44 |
|
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.
|
# ¿ Jan 4, 2012 21:15 |
|
shrike82 posted:I've been helping my team with resume vetting. 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.
|
# ¿ Jan 20, 2012 08:08 |
|
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. 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.
|
# ¿ Jan 27, 2012 13:05 |
|
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.
|
# ¿ Feb 11, 2012 18:59 |
|
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 ), 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. 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.
|
# ¿ Feb 21, 2012 07:03 |
|
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). here is a version of what you did that is less stab-inducing code:
Bruegels Fuckbooks fucked around with this message at 05:31 on Mar 9, 2012 |
# ¿ Mar 9, 2012 05:03 |
|
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. code:
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.
|
# ¿ Mar 10, 2012 11:23 |
|
Knyteguy posted:
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.
|
# ¿ Mar 11, 2012 00:20 |
|
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?
|
# ¿ Mar 16, 2012 20:50 |
|
pigdog posted:Given it was a phone interview, I did get the impression they were expecting an answer. 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.
|
# ¿ Mar 18, 2012 13:52 |
|
Sparta posted:I got a degree in politics. Do A/B/C at the same time.
|
# ¿ Apr 17, 2012 19:07 |
|
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. quote:- There is no sense in investing time on an inferior solution quote:- The job should contain more thinking than doing. quote:- A perfect product is only possible if the code (going all the way back) is perfect. quote:- Truly innovative ideas are inherently more valuable to a company than the code that implements those ideas. quote:- Since engineers do more thinking than doing, it is essential to have regular meetings where ideas and problems are shared with one another.
|
# ¿ May 21, 2012 05:12 |
|
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.
|
# ¿ May 22, 2012 22:50 |
|
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. 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.
|
# ¿ May 29, 2012 18:16 |
|
Ithaqua posted:What sort of questions? Polymorphism? Inheritance? Design patterns? 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 |
# ¿ May 30, 2012 13:55 |
|
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?
|
# ¿ Jun 9, 2012 16:38 |
|
pigdog posted:Either they give a proper facial or no deal. 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?)
|
# ¿ Jun 12, 2012 15:30 |
|
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.
|
# ¿ Jun 27, 2012 16:43 |
|
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.
|
# ¿ Jul 9, 2012 19:48 |
|
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 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.
|
# ¿ Jul 9, 2012 20:53 |
|
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. 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.
|
# ¿ Jul 9, 2012 22:00 |
|
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/ 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.
|
# ¿ Jul 9, 2012 22:18 |
|
Safe and Secure! posted:Today I finally got to work with the testing scripts at my internship. Found a quadruple-level for-loop. 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.
|
# ¿ Jul 11, 2012 05:10 |
|
MEAT TREAT posted:Or it operates an X-Ray machine.
|
# ¿ Jul 11, 2012 20:58 |
|
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.
|
# ¿ Aug 7, 2012 03:41 |
|
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 A company is paying a contracting company $50 an hour for a co-worker and he is only seeing $30/hr of that.
|
# ¿ Aug 20, 2012 15:42 |
|
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.
|
# ¿ Aug 20, 2012 15:58 |
|
Kim Jong III posted:Ah, yeah - I keep forgetting that I work in a state that can be actively hostile towards worker's rights 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.
|
# ¿ Aug 20, 2012 18:53 |
|
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.
|
# ¿ Aug 30, 2012 15:28 |
|
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!
|
# ¿ Aug 30, 2012 16:10 |
|
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. 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.
|
# ¿ Sep 29, 2012 04:52 |
|
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). 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.
|
# ¿ Sep 29, 2012 08:25 |
|
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.
|
# ¿ Oct 7, 2012 21:44 |
|
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. 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!
|
# ¿ Oct 12, 2012 13:19 |
|
|
# ¿ May 15, 2024 18:13 |
|
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. 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.
|
# ¿ Oct 31, 2012 13:46 |