|
Thread Rules 1. This is not a "do my homework for me" thread. If you have specific questions, ask, but don't post an assignment or homework problem and expect an exact solution. 2. No recruiting for your cockamamie projects (you won't replace facebook with 3 dudes you found on the internet and $20) 3. If you can't articulate why a language is bad, don't start slinging shit about it. Just remember that nothing is worse than making CSS IE6 compatible. 4. Use [code] tags to format code blocks. |
On July 28 2013 16:21 teamamerica wrote:Hey guys, was wondering if my code to solve fibonacci sequences with useMap set to true would qualify as dynamic programming. Code is at https://gist.github.com/anonymous/d23efa6ad0c662c9d261It was taking more then 10 sec for fib(100) to return so I was trying to speed it up a bit. If anyone has any other tips, I'd also appreciate it. Also, is there any solution to how fast I get a long overflow? edit: Some other questions I had are -would the runtime of calling fib with useMap set to false be O(n!) -would the runtime with useMap set to true be O(n) -storing the results in a map takes up more memory then not storing it. is there ever a case where the memory costs of memoring the results are offset by saved stack space of less method calls? Sorry if this is a super dumb question! I'd appreciate any tips about how to think about it.
Yeah, use Trove or Colt for <primitive, object> maps instead of Java's built-in object-based maps. The performance difference is striking.
|
|
|
On July 29 2013 15:42 Frigo wrote:Show nested quote +On July 28 2013 16:21 teamamerica wrote:Hey guys, was wondering if my code to solve fibonacci sequences with useMap set to true would qualify as dynamic programming. Code is at https://gist.github.com/anonymous/d23efa6ad0c662c9d261It was taking more then 10 sec for fib(100) to return so I was trying to speed it up a bit. If anyone has any other tips, I'd also appreciate it. Also, is there any solution to how fast I get a long overflow? edit: Some other questions I had are -would the runtime of calling fib with useMap set to false be O(n!) -would the runtime with useMap set to true be O(n) -storing the results in a map takes up more memory then not storing it. is there ever a case where the memory costs of memoring the results are offset by saved stack space of less method calls? Sorry if this is a super dumb question! I'd appreciate any tips about how to think about it. Yeah, use Trove or Colt for <primitive, object> maps instead of Java's built-in object-based maps. The performance difference is striking.
Isn't it recursive not dynamic programming or am I mistaken? For example return fibonacci(n - 1, useMap) + fibonacci(n - 2, useMap); looks like a recursive call to me.
Edit: This map thingie stores results from what I see, but isn't the last return recursive anyway?
Why is also 'static' used in this case? Isn't an instance.method better?
|
On July 29 2013 16:41 darkness wrote:Show nested quote +On July 29 2013 15:42 Frigo wrote:On July 28 2013 16:21 teamamerica wrote:Hey guys, was wondering if my code to solve fibonacci sequences with useMap set to true would qualify as dynamic programming. Code is at https://gist.github.com/anonymous/d23efa6ad0c662c9d261It was taking more then 10 sec for fib(100) to return so I was trying to speed it up a bit. If anyone has any other tips, I'd also appreciate it. Also, is there any solution to how fast I get a long overflow? edit: Some other questions I had are -would the runtime of calling fib with useMap set to false be O(n!) -would the runtime with useMap set to true be O(n) -storing the results in a map takes up more memory then not storing it. is there ever a case where the memory costs of memoring the results are offset by saved stack space of less method calls? Sorry if this is a super dumb question! I'd appreciate any tips about how to think about it. Yeah, use Trove or Colt for <primitive, object> maps instead of Java's built-in object-based maps. The performance difference is striking. Isn't it recursive not dynamic programming or am I mistaken? For example return fibonacci(n - 1, useMap) + fibonacci(n - 2, useMap); looks like a recursive call to me. Edit: This map thingie stores results from what I see, but isn't the last return recursive anyway? Why is also 'static' used in this case? Isn't an instance.method better? Dynamic programming and recursive function calls are orthogonal concepts. Dynamic programming simply means solving a problem by solving its sub-problems (and keeping the solutions to those sub-problems around so that you can more quickly solve the larger problem). In the case of fibonacci, any given element in the sequence can be solved by first solving fib(n - 1) and fib(n - 2), so those are the sub-problem solutions being kept around here.
The static/instance method thing doesn't really matter at all, I imagine it being a static method just fit better into his program.
|
Anyone have experience negotiating a job offer for entry level software development?
I recently graduated with a bachelors in IT, where I concentrated in programming, system administration, and databases. I've been applying around to various entry level software development positions and now have a job offer from one. However, the offer is extremely low: 37k a year roughly. A little more background and details:
I went to school at Rochester Institute of Technology (RIT), a well respected and damn expensive private college in upstate NY. The closest previous experience I have to professional software development is bug-fixing an in-house tool for QA using C#, and automating various manual tasks using VBScript and batch files. I've also done the usual assortment of projects during classes, but nothing major outside of there.
The place I'm applying to is a relatively small company - maybe 30 people in total. I will be working almost exclusively using javascript to help further develop and maintain their online store where they sell replacement parts (and specialize in selling projection bulbs). I also will be contributing to various other projects along the way due to the small size of the company, with a large portion of it being research and development.
I'm currently working full-time doing technical support where I have been promoted to a "level 2 technician" at the help desk. I take escalated technical calls, which are not challenging at all. Yet I make around 37k gross a year with the bonuses included.
From my research on entry level development jobs in my area Rochester NY, most people make between 42-55k. The paulty 37k is within the 2nd percentile... it's really awful.
I'm sure a big part of the reason for the low ball offer is because I did not take much time into considering my worth and how much I'm making currently - so when pressed for a salary I STUPIDLY said "at least 35k".
I really liked the people, environment, and the company and still want to work for them. But I wouldn't be happy working there at the same wage as I am now - especially considering I'll be paying really expensive student loans a few months from now. How do I best negotiate the offer?
I'm considering telling them something like: "I'm very excited for the opportunity to join your company. However, based on my skill set, work ethic, and educational background, I believe I am worth closer to 45k than the offered 37k." To which I expect some push back since I initially said "over 35k" and they are offering over 35k after all... but I really did not think that part over. Or they'll tell me they feel its fair compensation etc...
Any advice?
|
Hyrule19173 Posts
When you go in negotiating mention that 35k is the lowest salary you are willing to take, depending on the non-salary offered. This can include extra paid vacation, half days, bigger year-end bonuses, and other stuff like that. If you're confident, you can try to get an accelerated review cycle (ie: put yourself up for promotion) at 6 or 8 months instead of the normal 12. You can say you want a total compensation around 47 as long as 35 is actual money.
|
@EscPlan9 Don't know if you're a Rochester local or not but a friend of the family (10 years in the industry) gave me some advice if I was planning to stay here.
I was encouraged to learn C# and then hit up all the local temp agencies to get some (likely mind-numbing) experience to get that experience hurdle out of the way and learn some things I wouldn't pick up from textbooks. To aim for about ~40k and to keep updated with the current tech.
Since he isn't really keeping in touch with me I had a question to extend to the thread: what resources do you use to stay current in your field? Do you have any solid news / blog / forums you recommend to hook in to the loop?
I keep an eye on Slashdot and recently discovered iProgrammer which I subscribe to via RSS but those aren't nearly topical/focused enough for my preferences. C# specific or somewhat broader is fine.
|
I am a Rochester local - have lived here the majority of my life as well. No plans at the moment of moving out anytime soon. I'm asking some of my past co-workers for advice on this as well.
At the moment, the company has only just emailed the job offer and are in the process of snail-mailing the job offer. It's my first time seeing it and I was quite disappointed with how low they shot.
It'll be good experience for me going forward in my career, but I definitely need either a couple thousand more per year and/or an excellent compensation package / performance appraisal/raise within first 6 months or something to make me happy at this pay rate for the work.
At the moment I'm doing auto-pilot troubleshooting work remoting into people's computers to do things like close and re-start programs, check a box in options, clear temporary files, uninstall and reinstall a program, and so on. And so it's very disappointing to me that this new position, one that isn't a dead end job, doesn't even offer me a starting position paying more than now.
I'll think about it more and talk it over with some others in the field for more input before calling back on the job offer. They just extended it today - I'll likely call them tomorrow or Wednesday at the latest when I feel confident with negotiating it more.
|
Interesting stuff, EscPlan9. Keep us informed if possible. I still have 1 more year to finish BSc in Software Development and I also need an MSc, but I'm thinking of going to USA once I'm done with studies. It's definitely useful for me to read such posts as yours. 
Edit: Is C# more popular over there? What about e.g. Java?
|
3 things I figured out to do shortly after undergrad:
#1 (far and away biggest impact): be willing to move away. I don't know what the Rochester dev job market is like, but there are a lot of regions that pay significantly less than other regions for basically the same job. And if you're looking at going to a small shop, there's a chance that they just can't pay as much.
#2 (similar to what tofu mentioned - the putting a 35k number out there probably didn't help you). If you can get a competing offer from a different place and just use that number, that is one option - that's about the only thing I could figure out how to do coming recently out of undergrad.
#3 Consider larger companies.
Between those 3 starting points, and just trying to do good work, I'm making ~3x what I would be back home, at a smaller company, roughly 2 years after joining.
Other people may have better tips, I honestly didn't have much of a clue what I was doing. And also the more work experience you have, the more ability you have to negotiate salary.
Edit: cleaning up the format.
|
|
|
EscPlan9:
yeah, thats really low. i am not informed what the average wages are in your sector in the states, but here its (much) higher. i guess its your own fault, you said "minimum $35k", they offer you $37k, so i guess they are a nice company after all, because they even offered you more than you asked for. most companies would offer you exactly $35k, thats what you asked for. and now you sit there, are angry about yourself and try to blame the company for your mistakes.
first: calm down, dont be mad about anyone. excatly this happens to everyone. you thought asking for more would make you look greedy or offend the company, so you put up a lower number, hoping that they would reward you for this. common behaviour.
of course you should really speak with some people at the company about this, be it via mail or in person. i like your first sentence "I'm very excited for the opportunity to join your company.", but the rest is bad. "based on blabla i believe i am worth about blabla", that sounds horrible. better always go with the truth, and the truth is this: "when i wrote my job application, i was so excited to join your company, that i didnt think the numbers through. i have to pay my students debts, and with taxes, there isnt really much left to live. I am sorry to have made false promises (because thats what you have made to them, you promised to work for 35k a year, and now you wont), but after thinking it through, i am politely asking you for a salary of $xxk a year."
and dot make the same mistake twice to put a number there, that you are not happy with. at the other hand, dont go too high. your job now is shit, thats what you said, the salary maybe even worse, and you can always apply for a new job or get promoted.
i guess asking for 45k now really is a bit high, when you said you will work for $35k. maybe go for $40k, this seems fair. saying $35k and meaning $45k really is irritating and sounds like "i dont want the job anymore, only if you pay me MUCH more". but hey, you are the negotiator, so you should know what you want. but dont forget that many people have the same qualifications as you and try to find such a job for month and even years.
|
On July 28 2013 16:21 teamamerica wrote:Hey guys, was wondering if my code to solve fibonacci sequences with useMap set to true would qualify as dynamic programming. Code is at https://gist.github.com/anonymous/d23efa6ad0c662c9d261It was taking more then 10 sec for fib(100) to return so I was trying to speed it up a bit. If anyone has any other tips, I'd also appreciate it. Also, is there any solution to how fast I get a long overflow? edit: Some other questions I had are -would the runtime of calling fib with useMap set to false be O(n!) -would the runtime with useMap set to true be O(n) -storing the results in a map takes up more memory then not storing it. is there ever a case where the memory costs of memoring the results are offset by saved stack space of less method calls? Sorry if this is a super dumb question! I'd appreciate any tips about how to think about it. Yes, you are using dynamic programming, but not in the most clever way.
You will get a marginal speedup by using an array(list) instead of a map. You will see larger improvements by making it an iterative program working from the bottom up, it lets you eliminate all but the first the if (useMap) and all the if (fibMap.contains()).
A Java long can hold up to 9,223,372,036,854,775,807. Fibonacci sequence grows by φ^n, you should be able to estimate when the overflow occurs by that.
The non-memoized time complexity is lower than O(n!). Memoized is indeed O(n).
|
On July 30 2013 08:15 darkness wrote:Interesting stuff, EscPlan9. Keep us informed if possible. I still have 1 more year to finish BSc in Software Development and I also need an MSc, but I'm thinking of going to USA once I'm done with studies. It's definitely useful for me to read such posts as yours.  Edit: Is C# more popular over there? What about e.g. Java?
Both are pretty popular. Both are also very similar. Why not learn both?
|
On July 31 2013 03:54 cari-kira wrote: EscPlan9:
yeah, thats really low. i am not informed what the average wages are in your sector in the states, but here its (much) higher. i guess its your own fault, you said "minimum $35k", they offer you $37k, so i guess they are a nice company after all, because they even offered you more than you asked for. most companies would offer you exactly $35k, thats what you asked for. and now you sit there, are angry about yourself and try to blame the company for your mistakes.
first: calm down, dont be mad about anyone. excatly this happens to everyone. you thought asking for more would make you look greedy or offend the company, so you put up a lower number, hoping that they would reward you for this. common behaviour.
of course you should really speak with some people at the company about this, be it via mail or in person. i like your first sentence "I'm very excited for the opportunity to join your company.", but the rest is bad. "based on blabla i believe i am worth about blabla", that sounds horrible. better always go with the truth, and the truth is this: "when i wrote my job application, i was so excited to join your company, that i didnt think the numbers through. i have to pay my students debts, and with taxes, there isnt really much left to live. I am sorry to have made false promises (because thats what you have made to them, you promised to work for 35k a year, and now you wont), but after thinking it through, i am politely asking you for a salary of $xxk a year."
and dot make the same mistake twice to put a number there, that you are not happy with. at the other hand, dont go too high. your job now is shit, thats what you said, the salary maybe even worse, and you can always apply for a new job or get promoted.
i guess asking for 45k now really is a bit high, when you said you will work for $35k. maybe go for $40k, this seems fair. saying $35k and meaning $45k really is irritating and sounds like "i dont want the job anymore, only if you pay me MUCH more". but hey, you are the negotiator, so you should know what you want. but dont forget that many people have the same qualifications as you and try to find such a job for month and even years.
Thank you for your input (as well as everyone else, this one was just more detailed). I already made the call and email today mentioning what sort of details I'd look for in negotiating the full compensation package for working there. They haven't informed me much on the benefits, other than there is health care, paid vacations, and a 401k. I wasn't given any more detail than that. So I asked for more details on what is included for working with them as well as consideration for higher gross pay.
You're right, I didn't consider that when I said "minimum 35k" it did sound like a promise to them. From research I've done after the fact, I should not have stated the number in the first place. I should have worded it more along the lines of whether this job is a good fit for me first and foremost, and discussing the details of the benefits and wages afterwards. However, I also have read there is a possibility to still ask for more than what was originally offered and it's my only chance of getting more. I'm sure they will follow up with me on my response to the job offer shortly within the next day or two and I can word it more carefully and apologize for the false promise that I did.
Because honestly, I do not know how much my student loans are going to cost me. And living at the same wage as current, with the addition of paying student loans, may make it so I am barely making ends meet at the end of the month. And then life always can give you those emergencies - and I won't have the money to cover for it anymore.
I need to figure out how much my student loans will cost me and go back through my budgeting and bills the past few months to see what I can afford.
Thanks everyone for your advice...
|
Are you unable to move out of the Rochester area?
|
use Glassdoor as a method to see salaries from nearby companies or even the one you received an offer for
|
On July 31 2013 12:47 phar wrote: Are you unable to move out of the Rochester area?
For the time being, I am stuck in a lease that goes on for an additional 9 months. Also I am living with my gf who I would need to relocate. When it comes closer to the end of the lease, then I'll be open to relocating.
About checking salaries on Glassdoor - I have done so, as well as on PayScale, Indeed, and anywhere else that I could find such information on average going rate, such as past co-workers.
Hopefully my initial push-back on the offer for negotiating its terms doesn't immediately discard me now. I would hope we can discuss it in more detail. In the meanwhile, I'm still auto-piloting at my current job.
|
Sorry if this question has been asked and answered before in this thread (which it probably has) but I want to learn to code but not really sure on which language I should start with. Now I am not a complete noob as I have learned some basic python, which was fun and all but just didn't like how it seemed to do everything for you if that makes sense. I also completed two high school computer science classes in which we used java.
I was thinking C, thoughts? Or would I be better off with learning a higher level language first and than moving onto the "harder" stuff like C first? Or does it not matter?
|
On July 31 2013 21:18 darklordjac wrote: Sorry if this question has been asked and answered before in this thread (which it probably has) but I want to learn to code but not really sure on which language I should start with. Now I am not a complete noob as I have learned some basic python, which was fun and all but just didn't like how it seemed to do everything for you if that makes sense. I also completed two high school computer science classes in which we used java.
I was thinking C, thoughts? Or would I be better off with learning a higher level language first and than moving onto the "harder" stuff like C first? Or does it not matter?
Don't think in terms of what language should I learn, But what problem do I ant to solve and then pick a language that is most likely an appropriate tool to solve it.
I started when I was young with basic then pascal, dipped a bit into c++ then Java and C# and because my Job requires it I am mainly programming in C#.
|
|
|
|
|
|