Ask HN: I will work for free ...
I am willing to work for free on interesting project until you find me useful and decide to pay for my work (hope this will occur within few months).
My current location is bangalore and I'm a senior developer (10+ yrs exp.) working for Top notch software consulting company.
Very interested in mobile technologies. Love to work on iPhone or Android applications
Profile: * C#, Java, Ruby, Rails * Silverlight, AJAX * Windows, Mac, HPUX * Oracle, MySQL, SQL Server, SQL, database schema design. * Subversion, Git, ClearCase * Knowledge of object oriented design concepts and design patterns. * Proficiency with n/jUnit, n/jmock, ASP.NET framework, and CruiseControl.NET. * XP, TDD, Continuous Integration
58 comments
[ 2.8 ms ] story [ 119 ms ] threadAs an employer, I wouldn't want to invest the time in getting someone up to speed with my systems if they have no "lock-in" that means they'll stay with me until they've paid off for that initial ramp-up period (which would cost me time). I particularly wouldn't want to do so for someone who already has a job at a software company - I'd clearly be a distant second (if not third or fourth) priority in that person's life.
Next, about the profile - I suggest you pick a narrow specialty that you really want to work on (e.g. Ruby on Rails), and focus on that. I don't think many people, particularly start-ups, are interested in hiring a "C#, Java, RoR, Silverlight, Ajax" guy. That long list makes you look unfocused and implies that you probably suck at a lot of technologies rather than being very good at a few.
My suggestion to you would be: pick one technology with a thriving OS community (e.g. RoR), and contribute open-source software. That's one way to work for free that will greatly enhance your value to potential employers. Start a blog, talk about your experiences with Rails, promote your open-source projects, etc. You'll soon find paid work coming your way.
"That long list makes you look unfocused and implies that you probably suck at a lot of technologies rather than being very good at a few."
In my startup, we have everyone doing everything. If all someone knows is java, they are useless to us. Each of us had to learn 3 different new languages each just to get our product to launch. We do not have the luxury of having someone with 10 years experience who only knows Java. If something needed to be done, someone had to do it. If we did not have the skills in the group, we had to learn them.
The critical factor for success in a startup is not 10 year of experience in one narrowly defined technical specialty. Specialization is for insects. The most important characteristics for effectiveness in a startup is the ability to learn and the capacity for getting things done. This is one of the key differences between working in a startup and working in a larger company. In a startup you have to do your own marketing, sales, programming, interface design... Everything needs to be done and it is an expensive luxury to have a person specialized in each area that is required.
" That long list makes you look unfocused and implies that you probably suck at a lot of technologies rather than being very good at a few."
"That's one way to work for free that will greatly enhance your value to potential employers. Start a blog, talk about your experiences with Rails, promote your open-source projects, etc. You'll soon find paid work coming your way."
If you want to be poor for the rest of your life and at the mercy of an employer, this is probably a good strategy. Instead of attempting to make yourself more appealing for sale to your bourgeoisie overloads you would achieve greater success and freedom by focusing your efforts on creating something that has value and which people are willing to pay for.
Rubbish. The average annual pay for someone just out of school with zero experience in Bangalore is about 10,000 $. (I live in India fwiw).
The lowest salary I've heard of is about 500$/a month and this is for a "walking dead" warm body who couldn't code to save his life outsourced to dumb Western companies to pad team size. You can just about survive and live very frugally in Bangalore on this.
"you would achieve greater success and freedom by focusing your efforts on creating something that has value and which people are willing to pay for."
This is excellent advice (just discount the "burgeoise" anti employer ranty bit).
You read stuff about Bangalore. I live here. Big difference.
Even if true, 7695$ is much more than the 1200$ you claimed people were getting in your original post. That is a multiplier of 6. Exaggerate much for effect?
10k$ is an average salary for a person out of school. I guarantee you won't get a decent experienced programmer with a good degree in CS for anywhere near that amount. As a data point, my last salary (in Bangalore) was 120,000 US$ (then, I could get more today if I were to return to a 9 to 5 job) and I know many people who earn that much and more, doing technical work). Yes this is skewed towards the high end but by no means unusual, especially in product companies (vs el cheapo bodyshoppers)
You mean "much more".
Correct. Edited. thanks!
heh! classic! I rest my case. (I see you edited your original post to remove "1200 $" ;-))
Pretty sure you missed a zero there. :)
Specialising in something doesn't mean you can't do other stuff. I have done, in my time, Java, PHP, C, ActionScript, Ajax, Ruby/Rails.. hell even Basic and Pascal while I'm at it (and that's just the ones I actually built functioning software with...). But I wouldn't list those on my CV. At this point in my life, I'm primarily focused on the Rails + Flex stack, and I would be lying if I claimed that I'm proficient at all the technologies that I once was proficient at. You NEED to be able to pick up any technology required along the way, of course, but you can't be proficient in all those technologies at the same time.
I do not believe for one minute that this guy is proficient at all those technologies. It's a full time job just to keep up to date on Rails, let alone on Java and C# as well! The obvious conclusion from that list is that they're just technologies he's familiar with, rather than technologies he's good at. Therefore, the obvious conclusion from this "CV" is that he's not good at any of those technologies (or at least there's no hint as to which he might be good at), and just listed them all in a shotgun approach. That is NOT a good hiring signal.
If you want to be poor for the rest of your life and at the mercy of an employer, this is probably a good strategy. Instead of attempting to make yourself more appealing for sale to your bourgeoisie overloads you would achieve greater success and freedom by focusing your efforts on creating something that has value and which people are willing to pay for.
Bullshit. That strategy (blogging/being active in the community + copious open source contributions) will soon have you connected with more freelance work than you know what to do with. Beyond starting a start-up (which this guy is clearly not ready for yet), it's pretty much as close to freedom as you're gonna get as a programmer.
Working for YOUR start-up? That's not HIS freedom, dude, that's just slavery in service of YOUR freedom.
He said that he is willing to work for free for a couple of months and hopes to be paid eventually. I am assuming that he wants to learn some new technologies and find opportunities. An employer is taking on a large risk by having someone with no commitment on a project when it will take them several months to get up to speed and learn the required languages.
If he spends a few months in his spare time learning a project's technology and become effective at contributing and is eventually paid for his continued work on the project, I think that it is a good position to be in.
It reduces the risk to the employer and gives him some opportunity to learn a new technology platform. If he contributes significantly to a project, any employer would be more than happy to pay him at least twice what he is earning now. Even at $25,000 a year, he would cost less than a 1/3rd of the cost of a very competent American programmer.
I'm an Indian, one who has lived in Bangalore for the past 6 years. I made a conscious choice of not working for an outsourcing outfit and instead plunged into the unknown realms of entrepreneurship. But I was lucky. I'm young with no dependents. No additional responsibilities other than taking care of myself. It's OKAY for me to get my hands burnt, because I know I'll survive to fight another day. On the other hand, many of my peers have their parents and siblings to take care of. Not to mention their own family if they're married. It's a big risk in India to lose a job and there are lesser financial instruments to aid the people (it's impossible to get a credit card without a job and the govt. doesn't pay anything to the employed, rather it _can't_).
Once you've lived under these circumstances, it's understandable to see a person who wants to work in a field they enjoy while having a sense of job security. Maybe because they have 10 years of experience in their fields, (which would pay them significantly more than Rs.350,000, esp. in _Bangalore_), a chunk of which goes into settling their EMIs. In such a case, jumping to a new field won't earn them as much while it could leave them stranded (there's little or no demand for non-Java/Oracle/BI Suite/.NET specialists here).
While I hope this give's a better insight into a Bangalore office worker's way of thinking, I do agree with your suggestions.
However:
The opposite of "Everyone wants to be an entrepreneur" is "Not everyone wants to be an entrepreneur" which is (logically although not in emphasis) equivalent to "Some people don't want to be entrepreneurs."To say "everyone doesn't want to be an entrepreneur" means that there are no people in the world who want to be entrepreneurs, which is clearly false, because some people do.
Again, apologies, but this is a common mistake, and it's really worth being able to recognise it when you see it, and to be able to avoid it.
Sometimes it's worth recognising it and ignoring it. Apologies if this was one of those occasions.
English is the official second language of India (which doesn't mean an awful lot but consider that Hindi in Devanagari is the main language and is only spoken by just over 40% of Indians) and is generally spoken with Indian idioms. It's been this way for several hundred years. Indian English is generally as valid as American English, although less formalised.
In America, for example, people often say "The proof is in the pudding." Logically this does not make sense. Logically the original saying - "The proof of the pudding is in the eating" - makes sense, and can be interpreted literally.
But idioms are atomic. They cannot be understood in any way other than as a complete whole with a meaning unextractable from the components.
But idiomatic language can lead to non-understanding, and sometimes mis-understanding. Recognising it when it occurs can be important, especially when what is said can be interpreted literally and logically in a manner other than intended.
My intent is not to prevent idiomatic usage of language, that would be Sisyphean. My intent to to highlight a case where was was said, when interpreted logically, is not what was intended.
I disagree that "interpreted logically" the statement is not what was intended. It just depends how you interpret the word "everyone". Is it a single representative object which takes on the combined characteristics of all the people it represents? Or is it a stand-in for comparing each and every person that it represents?
You're saying it must be the latter. If you're talking about person A, person B, and person C, then "everyone" is short hand for comparing against each one. So, "Is everyone tall?" means "Is A tall?" AND "Is B tall?" AND "Is C tall?"
However, that isn't the only valid way it's used. "Everyone" could be its own object, so you don't need to check against each of the underlying ones. And it only has a certain characteristic when each of the underlying people has that characteristic. So, if Person A is short and has green eyes, person B is of average height and has green eyes, and person C is tall and has green eyes, then "Everyone" takes on the green eyes characteristic, but not the "short" one. Hence, "Everyone" has green eyes, but "everyone" isn't short.
It sounds convoluted when spelled out that way, but I think each usage of everyone is both valid and used by English speakers. When considering "everyone doesn't want to be entrepreneurs", I can mentally switch between the two cases. "Everyone doesn't want to be entrepreneurs" could incorrectly mean Person A doesn't want to be an entrepreneur AND person B doesn't want to AND person C, etc.... It could ALSO mean the word "everyone" did not take on the "wants to be an entrepreneur" characteristic BECAUSE there existed people in the group that did not have it. In that case, the statement "interpreted logically" is just what was intended.
For this reason, when I read the original statement, I didn't notice anything odd about it at all.
I'd like to add an interesting turn to an already interesting parallel conversation going on here; there are plenty of peculiarities between how English is spoken in the North and South of India.
Believe me, it's a cultural shock for Indians themselves, when they move to a different part of India.
Perhaps when I'm in India. However, if you're in an English class in Britain or America I don't believe any instructor would say "everyone doesn't want to be an entrepreneur" is valid as meaning "not every person wants to be an entrepreneur". If I start my own country on an island and declare English the official language, and say "I'm drinking water" actually means "I'm going fishing" it's only valid English for that meaning on my island.
Perhaps when I'm in India."
And who says HN isn't "in India"? A webapp doesn't really "exist" at a particular point in space. (sure teh server sits wherever but it could just as well bin Singapore vs Califronia). Just somethng to think about.
When someone from Japan (say) is posting here, why should he speak "American English"? I'd say just speak English the best way you know how and if someone insists on everyone speaking American English, he can go jump off the nearest cliff. If our hypothetical Japanese poster were to use a phrase which I didn't immediately understand, I would just ask him what me meant, not berate him for not speakng the exact flavor of English most familiar to me.
My 2 cents.
absurd example. No one anywhere in the world has such absurd correspondences.
"I think that would be absurd, because if we are to accept that then the construct of languages breaks down entirely, and people will eventually be hurling sounds at each another hoping someone discerns their intended meaning."
exaggerated.
I don't know about valid, but if the point is to communicate with Americans....
There are lots of phrases in English that do not mean the same thing as the literal meanings of the words would indicate.
People say "You know what I mean" and that's fine when you're talking to someone from your own culture, or even just to a human. Such an audience will interpret what you say, realise it makes no sense, find an alternative, more sensible interpretation, and go with that.
Computers, and some cultures, are otherwise. Recognising such things is important, even if you don't change the way you speak.
As Rider proposed earlier, some idioms are compressions of logical expressions, whereas some idioms are just mistakes that people have adopted. They're not the sole province of "foreign" countries like India, though. You can find these kinds of grammatically incorrect idioms in America too ("I ain't got nothing") and undoubtedly in England as well.
However widespread "I ain't got nothing" may be, though, it is still incorrect English. Children should be taught that it's not correct English. If everyone starts speaking such loose English, we'll lose the ability to communicate clearly with each other.
I think "Everyone doesn't X" falls into the same category of incorrect idioms that may be widespread, but should be stamped out at every opportunity, except in cases where they're used for humour. If someone said, seriously, "I ain't got nothing to hide,", I would regard them with the same discomfort as if they said "Everybody doesn't need to hide stuff". Both are unfortunate manglings that need to be discouraged where possible. HN seems as good a place as any to do so.
I would actually assume that someone using it in that way isn't a fluent speaker of (American) English, while using it as a reply to "Everyone does X" (perhaps with emphasis: "No, everyone doesn't X") seems like colloquial (American) English. I can't speak for Commonwealth English. :) When used that way, as a reply, it mirrors the original statement, which seems to me to have more impact than rephrasing the reply when disagreeing.
I, however, have 20 years experience in trying to teach mathematical logic and proof, and for those who use that style of expression there seem to be additional hurdles to overcome. They don't "get" why the logical converse of "For all X, Y" isn't "For all X, not Y". It's hard work convincing some of them, because it doesn't correspond to the language they use.
Similarly, in natural language people from different locations on occasion fail to understand each other.
I'm not trying to say that what one person says is right or wrong, I'm trying to point out the potential for misunderstanding, and the natural language analysis that corresponds to formal logic. Personally, I regard logic and proof as one of the intellectual highlights of human endeavor. The fact that natural language sometimes doesn't work that way needs to be understood.
That was (one of) my point(s).
I offer for consideration the difficulties that these issues create for natural language processing. If someone says "Everyone doesn't dance" - what exactly do they mean?
I offer for consideration the difficulties that these issues create for natural language processing. If someone says "Everyone doesn't dance" - what exactly do they mean?
If you want accurate reconstruction of the intended meaning, rather than wanting to constrain natural language to having a single meaning for each statement, then you'll need both contextual and general knowledge to figure out a meaning. I would say that it's clear that someone saying "Everyone doesn't dance", assuming that that was all that was said, meant "Not everyone dances", since it's rather obvious that some people do dance. If, however, they'd said "Everyone doesn't want to die", it would no longer be clear, since it's possible for people to believe that literally no one wants to die (with appropriate excuses made for suicides and posthumous heros). But I don't think that rules of English will be able to tell you anything more about the case than that it could be meant either way; outside information will have to guide the parsed meaning.
To me, with my background, the statement "Everyone doesn't X" means the following:
Everyone doesn't X.
It is the case that everyone does not X.
It is the case that every person does not X.
It is the case that for every person, they do not X.
Choose a person: they do not X.
No person does X.
If I want to negate the statement "Everyone does X", perhaps keeping as much of the original phrasing as possible for effect, then I would say:
No, not everyone does X.
Natural language is what it is, and I accept that to some people the appropriate negation is, in their idiom, expressed as "Everyone doesn't X." I'm just saying that my idiom should be accepted, just as yours should, and if you use that form, you will fail to communicate effectively with me.
I'm not claiming I'm right, or you're right, or anyone is right. Linguistics research accepts that we should allow each person their idioms. I'm saying that for effective communication, the differences should be understood and allowed for.
And I won't say any more on this topic. At least, for a while.
Although, I do stand corrected. What I meant to say was "Not everyone wants to be an entrepreneur." Thanks for the pointer.
Virtually everything programming-related that I've learned has contributed to a more rapid grokking things differently/deeper that I work with on a professional or personal basis.
I'm a generalist for two reasons.
1. I believe a renaissance style understanding of programming languages and informatics contributes to my ability to rapidly pick up and in a deep way grasp what's going in anything I have to work with, and
2. It's simply needed by my employers. I don't work in the corporate world anymore, although when I did contract for large companies, I worked as a .NET dev with a specialty in debugging and reversing. Now I'm a django/ajax/admin/db generalist and I enjoy it more.
I'm a generalist because it's simply what my employer needs from me.
They don't need someone who knows MS SQL Server in and out, they need someone who can make rapid decisions about what tool out of hundreds is going to be able to best fit their needs and rapidly learn how to deploy it for them.
There's really only two kinds of understanding when it comes to software. Structural, and memorization.
The first large chunk of learning a programming language or technology comes to grasping the structure of how something is built/designed and utilizing that knowledge to be able to predict how things should be implemented.
The second part, and certainly the more laborious/time-intensive is memorization. That's anything that falls out-side the "least-surprise" vector and that simply requires memorizing the intricacies of how things interact. (C++ and the English language are notorious for this)
Having a broad understanding of virtually any software concept is a form of human-caching. It's caching the common engineering tropes that underlie the things you have to work with on a regular basis, and if you know anything about deploying software stacks or how hardware works, you know that caching is everything.
Simply being a static human .NET/Rails/PHP machine might look attractive to an employer, but it leads to dangerously narrow decision making from a broader sense and could lead to problems later if the company wants to pivot to a better approach/technology.
Anecdote:
Over the past year, my company has moved 2 projects from Jboss/coldfusion to Django. We have 5 more projects to perform the same switch for. This coming week I'll be converting the svn repositories to mercurial. I've already centralized the repository infrastructure, switched them to Linode for the VPSs, will be setting up an extra off-site backup service soon, and we've switched them from Eroi to a local message sending system, saving them $150k per year on mailing costs.
All the while, I'm converting perl scripts that handle billing and commissions for another business within the company to python (for direct integration within django), have written an entire customer management frontend + backend, and I've only been here 6 months.
By all means, tell me a PHP/Rails/Whatever monkey is more valuable.
A good developer can do anything you ask of them in the web world. Exceptions being hardcore Quant type (statistics, huge databases) projects or embedded work (requires strong understanding of the principles of writing software closely mated to the hardware and knowing ANSI C in-and-out, if not the assembler for the target platform).
I mean, I wouldn't exactly expect a Rails dev to be able to tell me what the const and volatile type qualifications mean when combined and where you'd normally see them. For my part? I got 9/10 on an embedded.com C dev test, whereas the global average is 4-6/10. I've never even worked in the embedded industry.
But do I know x86 and arm assembler and could probably slap together a control system for a production line in a pinch? You bet.
I take great pride in being a programming chameleon and in learning as much as I can on my own time, I have no idea why you'd desire a per...
I few months back, we were hiring and Put up an ad on Monster. One of my reject criteria was "having more than 3 unconnected technologies". Even with >10 yrs exp, listing all the technologies you might be connected with doesnt look nice at all.
Also no matter how desparate I am I would never,
"I am willing to work for free on interesting projects", as that just leads to wrong people and wrong expectations, who dont value your work or time.
Also if you want this ad to be effective, a newly created account with no credentials like a Github account, a blog or your site doesnt help.
pluggd.in venturewoods.org
You might meet some interesting people at Bangalore's Barcamp and Startup Saturday.
Proto.in has a forum which has frequent job postings.
The web links for these are googlable, but I am too lazy to do this right now.
My point being that if you list all of them you probaly do not know any of these at the level I want/require.
In my own case, I guess having experience with PHP, Perl, Python and Ruby is the ultimate fail, because they all solve the same problems and are very similar to boot. Interesting way to look at it! What percentage of HN's audience did you just fail?
It all depends on what you want, of course, as I'm more of a jack of all trades, master of none kind of guy.
Of course, what the OP probably means is that these sort of random strings of technologies look, at times, a bit dubious.
Yes. If you were looking for a webdev position, you probably will not list your Perl and Rails experience with same prominance as your Tcl and C experience.
http://tcl.apache.org/rivet/
Point taken though.
Listing all of them together without further info doesnot give a good impression (to me at least). This is persional experience, so YMVV of course.
WHile it is your privilege to use whatever criteria to reject people, this is complete nonsense.
I know many excellent developers from my days at ThoughtWorks who are experts in and move seamlessly between the java/j2ee, dotNet and RoR stacks. If you understand the fundamentals behind one web stack you can shift trivially into another. Many have contributed code to both j2ee and RoR (say).
If you really understand http (and associated bits like sessions, caching etc), sql (and associated bits like database scaling/sharding etc) , an ORM, Javscript (maybe a framework like JQuery) and have worked on some large web apps for a few years, switching to "unconnected" stacks is the least of your worries. Web dev doesn't change all that much over the years.
The only significant change I see is the rise of NoSQL/"BigData" and really how much time does it take for a talented developer to come up to speed on these things especially if he is working with people experienced on the "new stuff" (for whatever values of "new stuff")? Web Dev is hardly rocket science stuff taking decades ot master.
The rest of your post though , this bit
""I am willing to work for free on interesting projects", as that just leads to wrong people and wrong expectations, who dont value your work or time.
Also if you want this ad to be effective, a newly created account with no credentials like a Github account, a blog or your site doesnt help."
is very much on the dot. Let me add to the chorus of voices here advising you to actually build something/write some open source sw so people can judge how good you are. "Free" is hardly the criterion one use when bringing on a new dev onto a critical project (All startup projects are critical projects)
I have a friend who is working on some awesome iphone games and could use someone with experience with OOP design patterns. He would be willing to split revenue generated by the applications. Right now he is doing Objective-C development for the iphone (easy to pick up).
The android platform is going to be a huge opportunity in a few years, but the iphone is still the largest app store market, so that is what he has been concentrating on. Mobile development is an awesome opportunity and a very good area to develop experience in.
What might help you a bit more in marketing yourself, swdev, is to mention a bit about some projects and/or accomplishments. hope this helps.