I think the other side of the market is isomorphic to this: any publicly available list of jobs is disproportionately filled with positions which qualified talent has seen, evaluated, and rejected as unsuitable.
[+] Citation: http://www.joelonsoftware.com/articles/FindingGreatDeveloper...
What the 0.05% equity package indicates is that the founders probably have an unrealistic expectation about how much their venture is worth at this stage. I've seen this a few times in nave, young (23-25 years old) first-time founders that don't have significant amounts of experience working in start-ups and/or technology in general. This trivial amount of equity is a huge red flag, not only because its present value is negligible (guess what the risk-adjusted rate of return is on a start-up run by first-time founders?), but because it indicates that the work environment will likely be unpleasant (hellish hours, frequently changing requirements, no clear vision -- common in companies run by first-time founders).
Also, keep in mind: if these founders are foolish / nave enough to think they'll be able to hire a credible, valuable engineer with this package (they won't), they're also likely foolish / nave to get screwed by their investors. Founders are only at the bottom-middle of the start-up hierarchy: VCs are above them and LPs are above them.
People that are insecure about what they bring to the table.
Pre series-A the risks are still huge and the stock should be priced accordingly. Say the founders think a pre series-A company is worth $2M and they offer 0.05% equity you could enter negotiations asking for 1% more if you feel like it (and walk away if it goes below 75% of your counter opening bid) if you can defend the position that there is still a 95% chance that the company won't make it unless they have you on board.
Otherwise price the stock at 0 and ask for a market conform salary.
They'll move. An offer is just an opening move, nothing more.
When it's all said and done, most of these startups will settle for a few offshore contractors or hire remote people who live in cheaper parts of the country where $90K goes a lot further.
The tried and true "solution" to this problem is to import a number of H1b visa holders from other countries who are willing to work for the lower salaries and accept the lifestyle choices that it imposes in the Bay Area. For many of them, $90K in the Valley is still an upgrade from where they are coming from.
For those of us with a decade or more of experience, it's best to focus on the post Series A startups that have the money to pay. However, many of these jobs involve cleaning up code written by those inexperienced folks who accepted less pay in the early days.
I had a similar experience recently. all the "startups" expected me to take a 30-40% paycut vs. the larger places, essentially because they expected me to be excited about their company.
Which is weird, because if the startup doesn't get really big, even if it does okay, nobody is going to care it's on my resume. But the large companies? especially the large companies with a reputation for high standards? they look good on the resume.
Another funny bit is that the same thing, as far as I can tell, is true of contract positions.
What irritated me is that I was going through headhunters... e.g. they were already paying 30% extra for the headhunter - if they just gave me that, I'd have been happy, at least for the first year.
The other thing was that they were weird about money. I talked to one startup and (after an 8 hour interview) they seemed super excited. the person who would be my supervisor gave me his email, and man, I thought I was in. "how much are you looking for?" I named a high number, about 10% higher than I expect to actually get, because that's what I always do. Let them talk me down. I even mentioned my bottom number "a guy who has been working for me for most of his career just landed a job at $x" - but nope, the mood immediately changed; I was hustled out the door and the company went completely dark. no response to the official or the personal emails. I finally got some bullshit answer from the recruiter, where he read back the "why you shouldn't hire me" things I give companies before any interview.
The solution? I ended up getting a contract gig at the large advertising company in mountain view. I'm pretty happy with how things worked out; It's closer to where I live in the south bay, it looks way more impressive on the resume, and I need three people to sign paper before I do overtime.
1. The definition of an "experienced" developer is subjective and varies widely. Startups with younger management may (incorrectly or not) apply senior labels to candidates with fewer years of experience and lower compensation expectations.
2. Anecdotally, I have seen startups in SF/NY take advantage of the lower earning expectations of candidates who are relocating into those metros and aren't prepared for the sharply different cost of living. There are places in the US where $90K goes much further and is a more competitive offering, especially for those who are willing to take less cash for the opportunity to work on something exciting.
3. "Developer" is a huge category. Some technical skills are far more scarce than others.
Startup founders are trying to go (even more) lean and cheap out on salaries, relying either on inexperienced new grads, the insecure, or on a "rah rah go team, the company is priority #1" culture of self-sacrifice. Don't play into it.
Many startup CEOs would like you to believe they are the only ones doing interesting work, but there are plenty of larger organisations that are still fun to work for, and more likely to value you as an employee.
Yes, that looks wrong. Equity should be 10X more (0.5%). Whether it's a good deal for your situation or not is a different discussion, but at least that would be more in line with typical deals.
"As long as we're on opposite sides of the negotiating table, I am going to do my best to get a fair share of possible upside from your company, and a decent salary. When we conclude this negotiation fairly, we'll be on the same side of the table and working towards the same goals."
"Now, I want half a percent and $110K."
Keep in mind that your BATNA (best alternative to a negotiated agreement) is to say, "No thanks. Good luck." They need to hire somebody: time is money at their stage of business. You don't need to jump into their job.
But don't have this conversation at all unless you think their business idea is worth five years of your life.
And not all corporate jobs are boring. Find one that fits what you like to do.
If startups aren't willing to provide the means they don't deserve good engineers.
In terms of equity, since you mentioned that you are the breadwinner for your family, why are you sweating the equity? A lot of folks here will no doubt suggest that you negotiate for more equity, but equity won't pay your bills. If cash is your biggest concern, negotiating around equity is pointless.
It sounds like you want a very early-stage startup job with BigCo-like pay, meaningful equity and reasonable hours. For the most part, this is a dream.
For example, my Citi credit card uses "accountonline.com" as the login page. With things like that, "googledrive.com" seems less suspicious.
So to anyone building for the web: please use a single, canonical domain name!
Couldn't the app try to login, detect the 2-factor, and ask you for that in the response?
Some links to check out:
Hack Design - hackdesign.org (free)
Design and Aesthetics course on Treehouse - teamtreehouse.com (25 USD / month)
Design Lab's Design 101 - trydesignlab.com/web-design-course (299 USD, six weeks. You work through the couse with a professional designer from mostly well-known Valley companies and startups, who you send assignments to and they give you feedback. Check out their profiles pages of students, so you can see the feedback received by other students, it's a good way to learn. I'm looking to try it in the near future).
Nathan Barry's books on design - nathanbarry.com/books (39 - 249 USD, depending on if you want the videos and supporting materials too).
Codeschool has a Fundamentals of design course, but I didn't take the course myself. But judging by the quality of their other content it's probably good material: https://www.codeschool.com/courses/fundamentals-of-design
The best way to learn design is looking at existing designs and what works about them or what doesn't work. http://www.awwwards.com/websites/clean/
Design is an iterative process. Do you rough out ideas on paper before starting to build them? Paper prototyping in the beginning can save hours/days of work down the line.
If I wanted to get that "eye" I guess I would look at successful websites, learn about design and what catches/pleases readers. How readers see websites in general and what is appealing, then just try things.
I cant recommend taking my advice but that's what I would do if I wanted to increase my design knowledge.
A fact based inventory of major JS libraries with downloads, bugs and updated_at stats would be helpful. The challenge would be keeping it fresh. If project "owners" can submit their own info that would help.
e.g. https://js.org/express 301 redirects to https://www.npmjs.com/package/express
Another idea is a blog. One of my favorite blogs is http://npmawesome.com/
So you are safe, and can see if it at least work it out.
Is Java slow? Nope. Does everyone think it is? Yes. Is python? Yes.
Does Java have the best libraries? Hell no. Does everyone think it does? Yep. Is python really the language with the best libraries? Yep.
Python is easy to write, and to write well. Python makes it easy to crank something out in half an hour that isn't messy.
I am ridiciulously in love with python, although lately I have been placing more value on runtime speed than development speed, so I find myself using it less than in years prior. It is still my favorite programming language, however.
I probably regularly profess my love for python, and I'm prone to hyperbole (plus I love the word 'ridiculous') so I could totally see myself making that statement.
So now, do I know it well? I dunno, not that well I guess. I've been doing it full time for four or five years now (after a decade-plus of other languages), I imagine I'd rank pretty competent in an average shop and "lots to learn" over at say, Dropbox. I have definitely worked with it enough to be exposed to loads of it's shortcomings and flaws though. I still love it. Just like with people, love is a decision I re-make on a continual basis. I sign up for the less ideal bits because the good bits make me really delighted and "just fit".
So anyways, yeah.. I know it's popular to be the "I don't care, anything works, best tool for the job" person, but I'd prefer not to write any more Java code anytime soon if I can avoid it. I guess I'm not that kind of awesome-flexible.
Now as for employers, even I might take this as a negative signal. I love python, but hiring in one's own image on that vector seems a little strange... unless there's a really good reason a passion for python is important (like, I dunno.. Maybe the position is for the python team at NewRelic? Anywhere the company's future is pretty latched onto the language specifically).
a) the company is looking for junior level talent with specific language experience so they don't have to train them
b) the company is looking for senior level talent but thinks it can't afford them using any time to pick up the syntax or quirks of the language
c) the company is looking for senior level talent but doesn't think it's even possible a competent senior developer with mostly X experience and no Y experience can pick up Y in an "acceptable" amount of time
d) the company is so invested in their "stack" that (even considering) deviation from it will introduce a net negative (to the process, culture, whatever)
These all have a common theme: the labor that provides the bulk of the value they are able to trade and profit off of is seen as a commodity, as fungible as the brand of paper used in the printers. The company wants a developer who works "out-of-the-box" without any investment and can be discarded/upgraded at any time for any reason. They probably also want the human line-item to display a near-maniacal enthusiasm for the work and loyalty in return.
It's not that they want people who aren't discerning: they probably don't care, as long as the people they hire can fake it.
Also, being "ridiculously in love" with a language doesn't mean one doesn't know it well. For me, it's the opposite: I'm "ridiculously in love" with C++ because I know it as well as I do (which isn't to say I'm an expert). That doesn't mean I'm going to turn down non-C++ jobs or view them as being less interesting, etc.
Most of the time, it's "fast enough" for the job. But when it isn't, it really isn't.
Most of the time the standard libraries suffice for a job. But when they don't, you're suddenly in pip/easy_install hell. 
Most of the time you can get by with Python 3. But when you need to broadly distribute code with a dependency on a compiled binary, may the heavens help you. 
Most of the time, the syntax and "magic" won't bite you. But when it does, it does so hard. 
Most of the time, pylint/pychecker/etc. will find the same errors a compiler would...
You get the picture.
I still program with Python frequently, but I've increased the size of my programming language toolbox to compensate for its weaknesses.
 Or was that virtualenv, or setup.py, or apt/yum/nix, or...
 Broadly distribute means putting it on boxes where a C compiler is not available. This means you typically get to pre-compile those libraries and create either wheels or native packages. Not impossible, but for a "batteries included" high level language it's a lot of specialized low level grunt work.
 The infamous `def a(b=):` "feature" for one, anything involving metaclasses for another.
Python is great because it does a lot, while being easy to understand, and it only does what matters the most.
> More broadly, who is that phrase supposed to appeal to?
I guess it tries to appeal to programmers who cares about using a technology they're comfortable with, but also that encourages good enough programming practices, design choices and programming philosophy.
Python is really a great choice for many things, and apart for the particular indenting style, I really don't think there are many users who dislikes python. It's also very unix friendly, has the good parts of C, has native tuples and hashmap, etc. I don't see many bad things about python.
Of course, python has never been designed for speed, but every programmer should know that the language will not be the source of sluggishness, the code and software design will be. I don't think there are many projects out there who will need high performance vectored data processing, and if there is, either use cython or optimize the parts you need, or even use OpenCL. Making a large video game projects is another subject, as most of them often use C++ anyways.
It wasn't that long ago people were clamoring for all the PHP in the world to be rewritten in Python. Ten years ago, I was part of one of thousands of efforts across the globe to rewrite a legacy codebase in hot new J2EE awesomeness. Around the turn of the century, it was a push to replace ancient COBOL with hip, modern C++. There's always a hot new language that makes the old hotness look ridiculous in comparison. This industry is like the fashion industry in more ways than we're willing to admit. But it's totally possible to run a successful business on a language with warts. Yes, even PHP.
If you ask them, they'll probably tell you they really do want someone discerning, someone passionate about programming languages. But right now they've prioritized their business needs over a rewrite for the sake of a rewrite.
This won't get 100% of the applicants you want but it will get some of then, and that's the whole point.
Ok, I'll describe my condition when I experienced that. I was coding in C under MS-DOS and PIC assembler at the time. C++ was starting to become a thing, and I was just starting to sniff at Linux. I needed a change of venue in several major ways.
About this time, I started picking up a little python and perl. Interpretive languages had just opened up to me, and I was IN LOVE. The things I could do without writing a framework to support it impressed me a lot.
I was so very naive that new-to-me language features were a huge deal.
Hope that helps.
Does this mean I probably don't know the language well? Maybe. Honestly, none of this really matters to me as long as I can quickly understand code other people wrote, and I can efficiently write maintainable code.
If they're asking for this, it's clearly because they're committed to Python and they want a developer equally fanatical about Python. I doubt this is the only condition for getting the job, experience will account for something.
In answer to "who this will appeal to", many people love Python, know Python and would like to use Python more. Sticking this in your advert clearly marks this as a company who you will align well with.
Me: A language is a language. I'm passionate about working in a sane environment with good practices, delivering software that doesn't suck.
This is not to say Python (or X) is a perfect language or that you have to agree with those that like it - it's just not your language.
I happen to disagree with Tor on this though (they worry about breaking sites). I've found that setting referrer to target site's host has pretty good results (this can be done with various plugins).
In general, browser maintainers seem to prioritize compatibility over security. I think a new browser or fork that prioritizes security, possibly Tor, will eventually become dominant. And I'm excited for Servo, the renderer to replace Gecko, which is written in Rust (memory safe).
The referrer itself is not at all used in tracking the user - as the visitor data is usually aggregated by referring source. Fingerprinting and evercookies are much more common ways of tracking individual users, and you can bet that there are even more advanced methods available for government agencies with service-level access.
File bugs against browser developers to remove Referer.
Meanwhile users can disable Referer,
* https://chrome.google.com/webstore/detail/referer-control/hn... * http://www.technipages.com/firefox-enable-disable-referrer * http://www.nullrefer.com/hide_referrer.html
It could also be removed by a proxy.
This becomes less of an issue as sites move to https, where Referer is not sent.
There is no legitimate purpose to the referrer within applications that isn't replaceable via internal claims based tokens, or external sites' parameterised (thus, opt in) source tracking.
One user can take up to 90% of your time, other times ten users come in and happily use the software with no complaints.
Take their feedback with gmail. Don't get too fancy.
Proactively ask for advice and comments. Sometimes people don't complain until they leave.
2. Start sending prospects to the site (post to forums where your customers hand out, run some ads via adwords or facebook etc) and let them sign up for the beta invitation. During the signup, get some additional information in order to segment them for step 4 below. Be very clear that your product will be in a beta stage, so that customers know there may be bugs/unfinished features. Promise to grandfather in the beta customers for a significant lifetime discount once the beta is over (and actually do so when the time comes).
3. Code and get your product ready for beta. This should be the minimum viable product and you can call it beta v1.0. Now segment your list so that you allow only x customers for v1.0, then later y additional customers when you go to beta v2.0 and so on. This will ensure that you do not get overwhelmed with too many customers giving you too much feedback. Depending on your product, segment the customers based on niche, so that you can focus all your energies creating a product solution fit for that specific set. Each beta cycle should be iterative - learn, build, measure.
4. Charge for the beta v1.0. This will go a long way in validating your idea and your product market fit. If you are not sure what to price your offering at, go with your gut instinct. You can always increase or decrease pricing later.
5. Take feedback over skype, phone or email. If you start with a small set of early customers, it should be possible for you to spend enough time with them. Scaling using UserVoice can be done later, since you are limiting the first set of customers.
Depending on what kind of users you have in mind, HN may or may not be a good place to find them. There are plenty of products, like patio11's stuff, that probably don't convert at all from HN since we're not his target market. Maybe find a niche and concentrate on that?
I'd just use email or the phone for feedback.
Same problem i was facing in my analytics and then i found this link and my problems is solved now.i am definitely sure the resellerclub scam refferal traffic would stop. Please follow the below article :-
(I am a senior technical resource in an environment like you describe. Read this after I was pretty far along but it basically sounds like how I operated to get where I am.)
Don't waste time. Be mission/vision focused. Be polite to everyone always. Be helpful whenever possible. Be insanely organized. Do not be That Guy/Gal who is always forgetting things, late to meetings, doing the wrong thing, asking stupid questions about stuff that's already been covered in meetings, etc. Seek and respond to constructive feedback on your work. Do the sh#t work without whining. All of this will build human capital with other people in the organization, which will both practically give you more resources of help from others to draw on in your work requirements, but also increases your visibility with people who aren't on the front lines doing the work (e.g. Management). That visibility gives you the means to move in whatever direction you might desire. It also (for want of a better way to put it) usually tends to help make you layoff-proof because people know you are competent, professional, and have some flexibility to work as part of a team.
None of this means you are anyone other than who you are. Don't kiss anyone's a##, but also don't be an a##hole. At the end of the day with two people even remotely similar in "technical" capability, personal behavior will matter for increasing your effectiveness within any organization.
Maybe you're blocked in some areas, but are there others where you can help with your unique combination of knowledge and experience?
It doesn't even have to be directed at the core of the project. Some teams aren't good at creating infrastructure; maybe there's a need in the areas of documentation, devops, or bug tracking and fixing. Stuff others don't want to touch.
Consider starting there. (And always be thinking about your next move.)
A lot of people talk about playing the game. You don't have to play any game. Besides delivering the best quality work, Be helpful to everyone around you - including your boss, his boss, your peers, etc. Emotional intelligence is a huge component in driving one's career forward. Be sensitive to everyone around you. Know when to say and what to say at which time.
In addition to marypublic mentioned about being organized, I would say being able to communicate/articulate your ideas and turn them from complex details to simple nuggets of information.
For example, in a technical organization, one dimension might be ability to quickly create production level code. Another dimension might be ability to refactor legacy code.
In a sales organization the dimensions might be different e.g. ability to make existing customers happy vs ability to find new customers.
NOTE: even in the same company, one group may have different dimensions than other groups.
The key is to:
a. figure out which dimensions your company/group/manager are using to define value
b. if there are multiple dimensions, try to find the ones that are easiest/most natural for you but are hardest/least natural for others
c. focus on maximizing b
Case in point: I once worked at a high frequency trading firm. I was one of the few people WITHOUT a STEM PhD. However, I was much better, relatively speaking, at over the phone customer interactions/support. Within a month of being there I was made Head of Customer Support purely as a function of being the group member with the best people skills.
Another key point, be wary of creating "Unspoken Covenants" e.g. "If I do X, my manager should do Y".
No they don't.
Go to your manager and say propose a mutually beneficial agreement. e.g.
You: "I would like an increase in salary/title/benefits/vacation days. I know that's a big ask but I know you value sales/code quality/production rate, correct?"
Manager: "Why, yes I do!"
You: "Great. I can improve that thanks to %ABILITY. If I do that can I get my initial ask?"
They should be saying "Hell yes!!" at this point. If not, you may have either misjudged what they value or you are dealing with someone who doesn't believe in mutually beneficial agreements.
Of course, coming home after work means I might just open same links I have opened at work.
Though, I'm not overcomplicating it all.
50-60% of my revenue is sub-contracting. I have a few firms that often take on projects that they are not suited for or do not want to increase staff to cover and they often sub out all or parts of the project to me. These relationships were built through networking with other developers who worked for these companies - never the bosses per se. Meet other devs and when the company needs help, they remember and recommend. In my experience this kind of introduction is about 5x as fertile as a cold intro.
Roughly 30% of my revenue is from direct relationships between myself and another company. These tend to merit a higher rate but also increased risk.
Very few of my direct relationships start from cold calling/intro (not sure if any ever did actually); most came via word of mouth recommendations of other people. Networking at the right kinds of events can also increase your profile and help you meet the right people.
ProTip: Networking at networking events is a terrible idea.
Lacking a sales force the best pseudo sales force you can create are acquaintances who understand your skill set and respect you as a person. They don't need to see your work, they don't need to have hired you before - to drop your name to someone who asks. They need to know your name, what you do and have a generally good feeling about you. If you pay them back for this, even with a simple thank you or lunch - they will continue to be an advocate for you.
Another tip which probably falls into the anecdotal evidence category - get off of ODesk and ELance. You are right about the price war. Your name and value to people also gets damaged because you seem to be just another guy among thousands who need to find work that way - it is a 'dime a dozen' mentality and they will always see you as that.
Normally you meet these people in unexpected ways. Just today I was offered a potential job from a girl I met while auditioning apartments. I've also gotten jobs from people I've met on dating websites, on the train at 2am coming home from a party, and on unrelated online forums.
Leave the house, keep an open mind, be friendly.
Also, don't expect much from cold emails. It's way too impersonal. Telephone calls are only slightly better, but in-person events are by far the best. Your goal should be to MEET as many people in-person as possible.
Actionable tip #1: whenever you do work for someone, be sure to get a testimonial. If possible, do a full case-study on your engagement. Feature these prominently on your site. Then, just keep in touch with everyone you do business with. DON'T directly ask for referrals. Just ask how their business is doing. Make it about them. They'll remember this and like you for it, and you'll be at the front of their mind when the topic of consultants comes up.
Actionable tip #2: read this blog post by Patrick McKenzie, the man's advice is pure gold. http://www.kalzumeus.com/2011/10/28/dont-call-yourself-a-pro...
Front of my 2015 card:
I use Moo to print the cards, quality is great and service excellent. This is a referral link, just remove the /share... if you do not want to follow the referral.
* My website. I rank reasonably well in Google for search phrases such as "Freelance Developer in $mycity". Probably if I blogged I would get more traffic. But it doesn't hurt to get a website going, and see if you can get ranked in Google for a particular geographic area. I suppose it's only really useful if you live in a city large enough that businesses are trying to find developers in via Google.
Also I've found that the people who do search Google for developers in a geographic area, are generally doing this because they want someone local, and have often previously tried offshore developers and not liked the results.
* LinkedIn / Github / Stackoverflow - occasionally I get leads from these sites. LinkedIn is easily the best of the three. I don't think you even need many connections on LinkedIn (I've only got 60). I think I just show up in the search results. Usually LinkedIn you will get recruiters looking to fill a contract job. Github/Stackoverflow are usually other developers from a company looking for someone to help out on a project.
I'm a bit disappointed in Stackoveflow Careers - I've never had a lead from there, which is odd.
* Referrals. This is probably the best way to get work - it would be hard if you were young and just starting out I guess. I've found that now and then clients will mention you to other potential clients, and it does kind of snowball a bit once you've worked for enough people.
I find events and conferences to not be much use, unless they are very specific to your industry.
Selling software development services as an individual is extremely risky, especially if you are selling services to buyers who are not tech-savvy. It takes patience and energy, and software developers have a finite amount of these resources.
Serious consulting generally requires daytime availability. It's a slippery slope from "side hustle" to "leading a double life." If extra income is what you're after, is it an option to change jobs for better pay, or to get more income from your day job?
One bit of advice if you stick with this plan: you can make the sideline nature of the contract work a benefit in your clients' eyes if you set your rates at a level where they feel like they're getting a good deal compared to what you'd be charging if you worked full-time as a consultant. You can also mitigate the cost to your performance at your day job if you consult on a different technology than you use at work.
But if your day job is in professional services, I strongly recommend against contracting on the side. If it's all you do, work-for-hire will slowly kill you.
I never had to do cold-emails.
I live in the Bay Area though where there are a lot of companies looking for somebody to build their Android app.
What's great with the network though is that I never had to negotiate rates since there's already some trust established.
Those who found me through LinkedIn though seem to negotiate a lot with rates which can be a pain.
For me, it seems obvious that referals are the best way to attract new clients, but there are times when you just don't have them. I agree with most of the comments about freelance sites not being worth the effort, but I want to contribute with my perpective on cold-emailing or cold-anything.
Although I don't have much experience, I found very usefull an advice from the blog of inboundsales.net: the people you contact when you do cold-something are regarded as "suspects" (everyone in your target market). As such, they will not be receptive to invasive sales messages, but they will value your knowledge and will appreciate any great content you are able to share with them, like infographics, non-demo videos, interesting articles about their problems, etc. Then, if they take action, they become "prospects", and so on. It is a kind of science, not easy for us computer geeks. I am starting with this in mind and hope it yields good results.
Lately I'm starting to think that both of these points apply to freelancing/contracting whether it's online or through some other channel.
Also, build a decent portfolio of your work.
As a side note: anyone doing freelancing that is struggling with the tax part of it, would love to get your feedback on http://painless1099.com - a smart bank account for your 1099 income that does automatic withholding and helps make your tax situation more like that of a W2's. Product is deep in development by some awesome folks (I'm advising) and they still need more sophisticated eyes on it to get the alpha right.
So I would personally try to network with some well-known, talented folks in your own community and let them know you're looking. If they trust you and are good, you'll likely get referrals.
From there, if you treat your clients well and do good work, freelance will find you. You'll quickly find yourself having to say "no" to too much work. Word of mouth is a very powerful referral source when it comes to contract work. It can also work against you very powerfully if you don't do a good job or screw anyone over.
Some headhunters don't mind dealing with freelancers either. Currently I'm freelancing through Computer Futures.
I've seen this question come up a lot and its part of the reason I started workshop. For me emailing companies who specifically said they were looking was great because I was able to control it directly.
Since starting workshop I've helped hundred of freelancers make a lot of money, but some continue to make nothing. It mostly has to do with the emails they send and a few big common mistakes:
-- emails too long -- blab on about themselves-- obviously scripted-- don't propose a next step
It's easy to focus on the wrong things. "What's the Best job board?" "There's not my exact perfect match" "there's not enough opportunities"
But if you focus on emailing one person everyday that needs help, and write an email focused on their problem and not you, you CAN and WILL make a lot of money.
I've seen it with hundreds in your position
There really is no good 'job' site for Contracts. There are a lot of 'Work From Home/Work Remotely' sites; but there is not one for contracting exactly.
What I do:
I network through people I know; cold calling can work if you see the company has a problem and you tailor yourself as the fix. But often those are short term gigs unless they love you.
Other than that.
Don't be afraid to post yourself on the monthly who's hiring and who wants to get hired. Making yourself visible will net a few responses that maybe gold.
Lastly, Stackoverflow Careers job has bene helpful.
Really last comment: http://thenubbyadmin.com/2014/01/20/best-list-of-remote-sysa...
Also, I'm surprised that no one has mentioned this yet, post in the HN Freelance thread on the first of every month. I've hired a number of freelancers from there.
The answer, which has been mentioned already by other commenters, is network. You need a great network and a great reputation. The real question is how do you build a great network? And how do you build a great reputation? As an introvert geek with only a drop of marketing prowess in my DNA, I struggled about the same questions.
One way I built my network is through Open Source Communities. Joomla! was just forked out of Mambo back then and there was an opportunity to participate in the then small community. So I joined the community, made friends with the right people, and I made a living out of building Joomla! Extensions. I also participated in other OS communities like Django, Kohana, and many others. The more I participated, the more my connection and reputation grows. The flow of projects from the connections I got from those communities allowed me to survive, and also thrive, which enabled be to build my own web development company (https://www.wizmedia.net).
I think that marketplace sites like oDesk/Elance/99designs/TaskRabbit etc are horrible place to be in for creative people particularly programmers and designers. I've been looking for alternative places to go to but didn't find any that is fair for both Clients and Freelancers. So it became an idea for my Startup that I'm building right now. That is Creatizens - http://www.creatizens.com. It's still under development, but you can read more about it here https://angel.co/creatizens. The idea is based on the fact that the most profitable freelancers get their projects from their professional network - mostly from colleagues who has overflow projects, or ex-coworker whose company needs contractors. I don't want to talk too much about it since I'm bordering on spammy so I leave it at that.
The freelance marketplace is a big reason I created 3cosystem - the biggest and most comprehensive tech and startup event calendar.
See if your metro area is listed. There are certainly a number of events popping up around you. Show up early and talk to the organizers. They might mention you in their pre-game presentations.
 - http://www.3cosystem.com
I drum up work by:
* Posting myself on the Monthly HN Whois hiring Freelancers thread (1st of month)
* Attending and doing talks at meetups - got a recent retainer from doing this.
* Old contacts pinging me about projects (rare)
Odesk and Elance, IMHO, are not worth my time. It is a race to the bottom honestly.
I get at least 3 hits a month from my HN posting of which one is solid enough to move forward with in some fashion. Since its part time I dont need more than two clients at a time.
I don't use it much anymore since I found a full-time job, but it kept me in great shape for almost four years.
Below is an affiliate link if you're OK with it.
Try using the sites mentioned within the thread - pickcrew, gun.io, etc. - these sites generally have higher-priced contracts and more interesting work than the classic variants. Use these sites at first to discover what work you like and build long-terms relationships with a few key clients.
1. Remember that the comms overhead with freelance work can be really lumpy and unpredictable. Programming is the fun part - the phone calls and emails can get painful really quickly
2. Avoid hourly pricing whenever possible. Do value-based pricing. Just trust me on this one.
I think the general consensus here is right. Avoid finding jobs on contractor bidding sites like Elance/Odesk (they're devaluing your work/skills). Put yourself in positions where you can tell people about your skills/services, and where people might be looking for said skills. I'd start with tech meetups, co-working spaces, other places where people you might want to work with are. Good luck!
(This is not to say it's not a question worth asking again! I look forward to today's responses.)
As a hiring manager, I currently have an availability to hire a freelancer. I just need someone responsible, mature and professional who's willing to roll up their sleeves and go from "receiving requirements" to shipping and thoroughly testing.
As others have mentioned, meeting people and letting them know what you do. Most of these will not be direct clients. Rather they will either know of someone who is seeking help, or will remember your name.
It can take some time to get your name out and get the ball rolling. When I started up again, it took about two months. When you talk to someone, you never know how long it will take to turn into something. I have had conversations with clients that took 6 months to come to fruition. Others in just a week. The moral of that story is to always be looking, not just when you need work. Get in the habit of always saying yes, and then just manage your availability.
There is a spectrum of the kind of work you can do. I don't mean which language/platform. I mean straight staff augmentation to managing projects. It is easier to find the staff augmentation gigs. These are easier since someone will just be telling you what to work on, and you do it. You will make less for these and this sort of work doesn't scale as well. I would only ever do this for straight a straight hourly rate.
Managing projects doesn't mean you will (necessarily) be managing people, just managing the project. With this, someone needs something built, but may not know how. It requires an additional skill set of knowing a bit of sales, knowing how to set/re-set expectations and how to negotiate. You can get a much higher rate for this, and it is possible to scale this a bit better because you can sub out some of the work.
Another thing you will run into very quickly is how to structure the relationship. There are people out there who are incompetent and others who are nefarious. It is important to know how to protect yourself legally and practically for both. For the legal aspect, find a local attorney who can look over contracts and help you craft a reusable template. Always have an attorney look over contracts before you sign. Most of the time someone gives you a contract to sign, it will be written to be in their best interests. Other times, they will just be poorly written.
For the practical aspect, understand there is a difference between working with someone in-state, out-of-state and out of country. You have the most legal recourse with someone in-state. If they are out-of-state, you may have to go there to pursue any legal action. (which is a massive pain) If they are out of country you may not have any legal recourse. So you will want to structure the business relationship to protect yourself, which might be as simple as half of the estimate up-front. The remainder on completion, and they get no code until it is complete.
A lot of times I structure it by milestone or iteration, with time limits, requiring permission to continue, but all billed hourly. Each iteration or milestone delivers something tangible. They get code on payment. This way I get paid for the work I do, and they won't get unexpected costs and they always have a pretty good idea where things are. Risk is mitigated in both directions. At any point, they can decide to pull the plug and they still have something for what they've paid so far.
It is not uncommon for potential clients to ask for fixed-bids. My advice is to steer away from them. They require you to be able to make good estimates then inflate them to cover your risk. That risk is all on you. They also require you to have tight definitions and manage scope changes mercilessly. If you don't, then you eat it. That said, some people like them because they're really easy.
Some other pieces of advice:
* You're not dedicated to a particular project until either they've given you a deposit, or something is set up legally so that if you start working, you'll get paid.
* Generally ask for a deposit from new clients.
* It is ok to drop bad clients. Sometimes they're not worth the trouble.
* Think about it in terms of collecting/building long term relationships rather than "work". Once you get an established base of good clients, the work will tend to come to you.
* Remember, you're not their friend and not their employee. You are in it because it is a business relationship that has mutual benefit.
* Keep good records of time, expenses and income.
Email me at curtis [at] saltydogtechnology [dot] com if you have more questions. What sort of work are you looking for?
If you want to go to the next level, create an open source project or start a blog, to get a reputation. The more people hear about you the more some of them will convert to potential customers, increasing ambient demand.
Look at Yehuda Katz with Ember for instance, or the guy Bob who wrote nvd3. Having a niche that can help businesses improve their bottom line pays very well.
-1.) It has nothing to do with your willpower or even yourskillsets.
0.) the key strategy is rule out - some big companies,even stingy and the case of CIO chef info officer is clueless - AVOID THEM like the plague. U get a great job.affter change of bosses - once every 9 months for 3 years;you get 'fired' and put on the blacklist.
IT IS A DEAD END.
1.) it's all about MBA work, screening and positioning.get to know the rankings of the S&P 500 rank listing well.this is ONLY a template and guide. oh by the way,over 51 + 7 years of experience; various fields, and someodd experiences.
4.) before I get to the GOOD SEXY FREE MILLIONAIRE STUFF,figure out how to crash the local conferences/convensions.Yes, pay off the low part time work who moved goods. I ama substitute.
get the business card. say NADADADA! research the hell outof them. then it is mano a mano. eyeball to eyeball.i know u need this. this is what your competitors knowhere a ANONYMOUS QUOTE.
oh, no i am not a journalist. media, lawyer, stranger,etc etc. U R DOING THEM A FAVOR.
5.) ask reasonable questions. no i dont need the moneybut i really love programming / s?redacted? x, etc etc
6.) remember the obscure system engineer who does unixor the assoc vp does not want a referral free. Grass isalways greener on the other side.
7.) it's just me but five dimensional programming code on an origama (YES I AM ASIAN) ORIGAMA ball /can be be fun.and a nice prop. wave it around like a big CIGAR.
8.) most of the workplace have the 'hacks'; unix engineerslike i former trying to become a database engineer consultetc. cold mail and cold call - is fine, but the wallstreet method rule applies - 250 dials a day. 4 days awekk on various times. wt ???? 250??? is a lot.note - this is dials and yes i have done freelance 'boilerroom similar looking like work' - i am not a stock brokerfilm db BOILER ROOM !! yeahhhh baaaabbyy
9.) the MEAT the millionaire the sexy the GOOD STUFF.please delete this comment. or the censors may take it out.ok with me.
here it is......the Rotary Club works on a non-compete, diversifiedP2P network. ROTARY CLUB. non-compete since onlyone real estate agent in any one circle.
THE SCENARIO:my good 'friend' and associate REAL ESTATE AGENT or fill inblank spends a lot of time in the WOMAN CLUB. So, thewife of the VP of the data center mentions how ASTOUNDINGis this person.
the VP, is a man married and will give you at least a courtesy interview. Provide value, turn down 20% of thejobs.. shadddde the truth???? but
i have read at least 20 of the top books. compiled linuxkernel,blah blah learn a new language Haskell with succkybooks so the problems are NEVER technical or delivery.
it has only to do with some clueless CIOsss who barelypassed certification Micosoft exams.sorry, no person offense meant.IT HAS ONLY at least in USA, to do with somesystem engineer who WANTS U DESPERATELY but has aoutsource contract with a guy who cannot understandcode comments in ENGLISH or deal with HR where talent TALENT talent is a priority.
and of course, U are DOOMED. sorry to say.the extra income and part time jobs / health benefits /DESTRUCTION OF THE USA MIDDLE CLASS continues!
PS. full time -?? been there, done tthat kinda.i always allocate at least 10% to make boss look good;frills and bells; make the code look pretty and beautiful;and othher WORTHLESS GARBAGE. this is called the hiddentax.
also, 20% for learning and at least finding HOLES IN THECOMPANY SOFTWARE. logic flaws, security flaws, bad code,bad process, bad procedures, bad SQL, bad db architecture,
warninggg! this can be dangerous. doing the job of the cluelesss CIO chief inof officer can lead to BLACKLIST.
does tthzyat help?
Fancy a chat? Send me an email (address in profile).
Assuming you are in Cardiff, possibly Newport, a starting salary for a graduate is around 21,000 - 25,000. With your experience however I'd expect that 25,000 - 35,000 isn't impossible if the company wants a strong Angular dev.
My advice is that you should move to the South East of England, if it's feasible, salaries are way higher than the rest of the country.
Just be careful with the Senior level jobs, I would would not recommend going for them unless you really know the technology inside/out and develop in it with ease.
If your knocking out large applications with ease
Which are you:journeyman, junior,intermediate, senior, expert, master developer?
Regular ranges here in the USA metro areas are among the following:
For your general development:(Generic Java/C#/etc. General Website Design/Development)Journeyman:$50k-$59kJunior:$60k-$79kIntermediate:$80k-$89kSenior:$90k-$180kExpert:$181k-$250kMaster:$251k-$1M+
For high demand programming languages/skills(Ruby/PHP/Java/Python/Node.js/large company Java and/or C# high performance optimization on the JVM or .NET Framework or websites and automation)Journeyman:$60k-$69kJunior:$70k-$79kIntermediate:$80k-$89kSenior:$90k-$199kExpert:$200k-$399kMaster:$400k-$1M+
For specialized programming languages/skills (GPU/Cuda/OpenGL/ORACLE/C/C++/Cryptology/Game Engine development/Finance/Graphics or Animation software)Journeyman:$90k-$99kJunior:$100k-$119kIntermediate:$120k-$250kSenior:$250k-$400kExpert:$500k-$750kMaster:$750k-$2M+
Also note these are for salaried positions, if interviewing for contract positions you would double the amounts since you are also covering the employers share, your own vacation, medical, dental, health, life insurance, savings, and investment income.
Just remember don't sell yourself short and get what you know your worth.
Literally every company needs a web presence, and it's quickly getting to the point where the usual crappy UX just isn't cutting it.
It also happens to be as hard or harder than most other types of software engineering. You have to stay on top of trends, keep building your skills. You don't deal with algorithms much, but your OOP needs to be on point if you hope to build something maintainable for the web.
Most of the potential talent has a subtle disdain for web work, everyone wants to be a game dev or do stuff that's math-heavy or algorithmic.
So giant shortage of good web programmers.
The demand for web-devs might be artificially high right now, as most normal people have not yet discovered that they do not really need a programmer to build their website. I think Squarespace / Wix / WP etc, maybe with a custom design, should cover most websites.
I've been doing back-end web programming as a freelancer for a few months, but it's really hard to find good clients, so I'm moving to something else.
There are plenty of other tech jobs, just not necessarily in the startups that YC focuses on.
More seriously, it's because web developers are in high demand, so there are going to be more postings for them; having a proper web presence is absolutely vital to modern businesses nowadays, and that requires developers to establish that presence. Hacker News is also run by YCombinator, which specializes in funding startups - a market which tends to lean very heavily on web development, since many of those startups are based on web apps - and therefore will already have an inflated quantity of web development jobs by that virtue alone.
The former will need to do several hundred writing jobs per year, while the latter may only need two. Thus, 99.5% of writing jobs may be for journalist stories. Any novelist looking for commissioned work will not want to sift through 200 posts to find even one relevant listing. So people posting such jobs would probably get better results on a site that explicitly excludes the noise.
In short, there are more "lightweight" postings because the people who solicit them and do them need to secure new work more often. If you can make 20 websites in the same time that you could build one enterprise application, you will probably see that job advertisements are 95% for websites and 5% for business software.
You Are Hereby Notified That Your Inheritance/Contract Payment Of 12,500 000 (Twelve Million Five Hundred Thousand Great British Pounds) Has Been Approved To Be Made To You Through Central Bank ATM Visa Master Card. Due to Fraud and E-mails from different Agencies without making the delivery to the rightful owners of the ATM Card We have decided to make the distribution to every individuals that was nominated as a Beneficiary by The Government Body of United Nation as a redeemable way of making life better due to the Economy Recession. and we shall send you the Certificate of deosit for you to go through it as well
You are to make available a details of Western Union or Money Gram of 3,300 for Shipment and Insurance Handling of your ATM Parcel DHL Courier Services and UPS Services.The Security Fees of 3,300 must be paid to be safe during the transaction and from unwarranted Bills from our client. After the Security Payment is paid Your ATM Card will be made available to you through your information you posted to us within 8 days because as soon as we received your information The Bank will inscribe your information on your ATM Card and send you your Operating Codes Via Alert on your Phone for Privacy and the card will be dispatch to you immediately.A certificate shall be issued to you to present to your Local Bank as a form of Identities and Recognitions as the bearer of the Funds.
For your information you are advised to call me to know your Funds Manager before you start making any payment call us through the Phone Number below.
You Are Advised To Re-Confirm To Us The Below Information Or Call Me Immediately For More Details: +(44)7024029803 You can E-mail here: (firstname.lastname@example.org)
1. Full Name:2. Phone & Fax Number:3. Address Were the ATM Card will be posted to (P.O Box Not Acceptable)4. Bank Coordinate:5. Sex/Age:6. Status & Occupation:7. Country:
Brian McAreavey,CEO- Citibank Plc.Phone Number: +(44)7024029803 +(44)7024053618
Don't work for free.
Despite that, all my code is in git so it is synced wherever and whenever I need it, as long as I am disciplined about pushing to my central repo.
There is some data that I use on both home and work machines (vim config, bashrc, etc.) and that is in an "environment" git repository so it is easily syncable.
"LiveScript is a fork of Coco and an indirect descendant of CoffeeScript"
CS makes scoping assumptions for you, because it wants to avoid syntactic clutter like "var. Maybe you'd like a different default assumption. Maybe you'd prefer to add in scoping keywords/sigils. These issues are full of tradeoffs.
The worst thing that can happen, though, is for there to be two nearly identical implementations, differing only by their subtle treatment of scope. If you think it's a showstopper now, imagine a world where your code silently manifests a variable binding security hole because you used a different fork of CoffeeScript.
When ES6 is a viable option, CoffeeScript can incorporate lexical scope in a backwards compatible way, and its scoping will become much less unexpected.
I use Swagger  and more specifically Swagger UI  to generate interactive web-based documentation like the sample at .
But rather than relying upon source code annotations to have swagger auto-generate the documentation, or hand-writing swagger's verbose JSON structure, I created a little DSL for it as demonstrated at  and available on GitHub at .
Let me know if you have any questions about swagger-dsl. It's under-documented right now but perfectly functional. I use it often.
JSON Schema and JSON Hyperschema are JSON-based formats for describing JSON and REST (hypermedia-driven) APIs. The formats make decent sense and can be used to generate docs, validators, client libraries, UIs, and more. http://json-schema.org/
API Blueprint is another emerging format for API description. It's written in Markdown, so it is very human-readable and -writable. It is not yet suitable for hypermedia APIs. Like JSON Schema, its tooling includes validators, client library generators, mock server generators, docs generators, etc. http://apiblueprint.org/
Swagger is a YAML-based format for specifying JSON APIs. It is meant to be created using the Swagger UI, rather than handwritten. It generates pretty docs, client software, etc. but is not suited to describing hypermedia APIs. http://swagger.io
Slate is an API documentation framework/template, designed to generate very handsome documentation pages. Its concern is more documentation than specification, and therefore doesn't concern itself with things like library or mock generation. https://github.com/tripit/slate
WADL is an API description language which describes API interactions in an XML format. It resembles WSDL. Not many people use it. http://en.wikipedia.org/wiki/Web_Application_Description_Lan...
Which of these is the best? Good question. I like JSON Hyperschema, but I am writing hypermedia APIs and the other formats here are lacking in their hypermedia support. API Blueprint is a nice format to write in a text editor and is easily read as-is or rendered from Markdown; no separate docs generator is necessary.
But here are few things I've learned:
* The more comprehensive the documentation gets, the the quicker it gets outdated, un-useful, or flat out pants-on-fire lying. Define what the thing does and what assumptions are made, save detail for "gotchas". Be concise.
* Start out on a white board, run through each function, what it should do, what it shouldn't. This really is a huge benefit of spec'ing out a api, just sitting there thinking about it, tons of stuff comes up and you come out with a better product in the end.
* If the format you came up with can't be put into something like a table or spreadsheet, you probably doing it wrong. Sure you can get some sort of framework that lets you create all sorts of UML and create class/function shells or what have you, but I have never found these to create value or clarity. If you are spending more than 20-30 minutes outlining even a complicated function, your probably wasting time. Use time saved to create a clear system-wide DFD.
* Don't go deep into implementation detail at this stage, but at least think about it. Some much time can be saved with a little forethought here.
The documentation they provide based on the specs looks very well designed and intuitive.
One of my favorite features about apiary was the mock backend server they use based on my API specs. So if you're doing a single page app, just write your specs then point your frontend app to the mock server they provide. This greatly simplified development process for me.
5 months in, we're happy with API Blueprint. We used to use Dredd for API validation but ran into to some limitations:
- Dredd does not perform any validation against the siren response beyond the first key level. For example, it does not validate if the class-name is user-events, or usr-events
- Dredd does not make any difference between Action parameters and Resource parameters. Then, an action POST to create user-events will have undesired url parameters. E.G: POST /user-events?take=0&skip=2 (The apib blueprint specs allows to make this difference: https://github.com/apiaryio/api-blueprint/blob/master/exampl...)
So one of our devs created a Ruby validator, https://github.com/nogates/vigia. See http://engineering.lonelyplanet.com/2014/11/18/vigia-integra... if you're interested.
API Blueprint  is an open source API description format which can be used to intuitively describe an API.
MSON  is a recent addition to the above format which makes it easy to describe all kinds of complex requests and responses in the spec.
You can email me at pavan [at] apiary [dot] io if you have any more questions.
You don't need any special tools to do that although apiary comes to mind as something worthwhile.
I tried RAML -- it makes sense for quick prototyping of your resources and methods, but I oculdn't see myself writing too much documentation as a giant nested YAML document.
I also tried apidoc which might make sense of you have internal documentation you wan to quickly expose. However my docs are longer than the code implementing them, so I don't like mixing them in as e.g. apidoc would require. I'd prefer lots of English in my documentation and it seems odd to conflate hints on how to use an API call as an external user with the implementation of it. Compare Sphinx-generated Python docs with some auto-generated python library documentation.
The apidoc versioning system is pretty cool, though if you are making a public REST API backwards-incompatible version changes should be avoided.
2) Swagger is an older option that is quite verbose but has a lot of good tooling support.
3) A third tool that is pretty decent is API blueprint.
Disclosure: I did work on an open source swagger-raml converter about four months ago.
Once the format is nailed down it's easier to write documentation, and the server side code will go quickly because less time is spent iterating changes.
1. specify the api in json2. apidoc generates really nice api documentation3. apidoc generates a single-file client for the service (currently ruby or scala)4. apidoc generates a routes file for play2
It's scala-biased at the moment because that's their tech stack, but in practice an api-first approach seems to lead to higher quality APIs compared to just hacking something together and annotating it to extract docs. Also having a really nice client without a complicated compile-time dependency graph (on the JVM) feels like a sweet spot.
There also exist an opens source project that has Swagger at its core called a127 (https://github.com/apigee-127/a127-documentation/wiki) that allows you to build enterprise-class APIs in Node.js locally and deploy to any PaaS where you can run a node app.
Disclaimer: I work with a127 project.
Ignoring the benefits of using HTTP as the request transport mechanism, this seems like another cycle of people coming up with a comprehensive but complex solution, other people getting frustrated with the complexity and developing a simpler solution, then filling in the gaps (such as documentation) until the solution is a complex patchwork of competing libraries, none clearly better than the others, leading to fragmenting of mindshare and expertise...
It is entirely free and available as a simple web app and installable as a Chrome app. Disclaimer: I work at Restlet.
It uses Swagger and swagger ui extensively and can output (and soon input) Swagger specs. It creates a virtual API based on the design you create, and you can play with it from Swagger ui sandbox or any Http client.
We have a lot of cool features on the roadmap. Feel free to sign up and give it a try. Let us know what features you'd like to see. Cheers!
Does anyone know of any API specs written for websocket APIs?
I am working on creating a websocket API and would like to at least look at a few other examples.
And been working on a tool to merge the schema with actual code for Sinatra apps:https://github.com/pedro/sinatra-schema
You define the API in comments within your code. When you run apidoc it scans your code and generates pretty documentation.
I tried various other solutions before this such as apiary.io. Apidocjs is really easy to update as it is part of your code, which also means it goes into your version control!
Aside from that whatever tool you use, having markdown as the base source is really useful as you can then display it however you want while still quickly read it in a terminal.
I was discussing my interest in documenting an API and then generating client libraries, API tests, and other artifacts automatically. Some relevant tools and projects were mentioned/discussed.
I'm developing SpyREST and will be happy to discuss if you want to learn more.
The book you want is here: http://mitpress.mit.edu/sicp/
Go forth and learn, if you want. But language doesn't matter, it's what you do and how you do it that counts.
All languages are a means to an end, through various routes and with various properties. Some are better suited to one set of problems than another.
Java may not be the most elegant language (to put it mildly) but it's a solid one and it gives you some interesting long term options such as to use your knowledge of the Java runtime and libraries by adding Clojure.
If you want to become a better programmer, to be flexible enough to write whatever software needs to be written over the next couple of decades, then diversity is important. Learn a Lisp. Learn a scripting language like Perl. Learn something low-level, like C or C++. Learn a line of business language like Java or C#.
Most software doesn't require mastery of a specific language, and having a broad background will mean you can adapt to whatever the future decides is 'in'. Learn a bit of everything.
Edit: Don't learn COBOL.
I use vagrant based VM's on Windows and OS X for development. Much better alternative than cygwin or similar. And you can custom build the vagrant VM to match your production environment.
When you are copying files, opening/closing windows, etc. all of that should be done without thinking. When it comes to differences in the OS you should go with what you are most comfortable with. They are all pretty much the same under the hood.
Right now I've been messing around trying to switch over to Linux. I'm using Arch and it's very rough around the edges.
My computer feels a lot faster but still trying to work out the kinks. Fools errand?
I opted for the Dell XPS 15 -> http://amzn.to/1JeO1T2
PS: I already own a Dell XPS 13 (2013 model) running Linux
For battery life if you want to switch to ubuntu, the issue is probably that you are not using a good power manager which OSX does automatically behind the curtain. This could be a starting point : http://askubuntu.com/questions/285434/is-there-a-power-savin...
 http://brew.sh/ https://github.com/caskroom/homebrew-cask
As a regular user, I'd choose Windows, hands down. As a developer (or long-time Linux user, like you), I'd choose Linux. Ubuntu is the only OS I run now.
I recently installed Yosemite on my 2013 MBP, hoping it had fixed some of my complaints about previous versions. It was, instead, as massive regression. Many others have pointed out the same.
Stick with Linux. If you're productive and happy, why consider anything else?
The unfortunate thing is that non-Apple hardware is lacking in some ways, but you can shop around a bit and find something close.
I switched from Linux to a custom FreeBSD setup a while ago and I'm enjoying it - I find it simpler, more stable, better engineered, better documented (the FreeBSD handbook is great!) and just generally a nicer OS to use. Hard to quantify, really, but it just feels nicer to use overall.
I just love the integration. Everything looks nice (yes I even like Yosemite), the system is very stable, I can go days without so much as a restart, it doesn't break after I install a package from a package manager, the upgrade process is seamless, the hardware is second to none (even Linus Torvalds agrees), and I can always get help from the Apple Store if something goes wrong. Some of these things you can get with Windows/Linux, you can actually get pretty close, but you never seem to get them all.
The hardware and software integration on Linux seems to be really iffy, even if you get Linux to dual boot on OS X. The hardware support isn't there unless you compile your own kernel, which you have to get (if it's a newer system) an unstable version of, the touchpad gesture support isn't as nice, the whole OS doesn't look as nice as OS X, and you miss out on the integration between iOS, which is really important to me, at least. OS X is a proper Unix system, so any Linux command line tool will also run on OS X. And you actually get the basic tools out of the box (vim, ruby, python, zsh, tmux, perl, etc, etc). If not, you can get a really good package manager in the form of homebrew, and while it's not as powerful as apt-get, it's pretty much all I want from a system package manager.
I am also not a big fan of managing windows or using a tiling window manager, I don't even use them when I'm on Linux. I actually prefer using OS X's default Mission Control/Expose behavior (I know.). I toyed around with Moom, Slate (https://github.com/jigish/slate) but gave it up. I don't like windows to snap, that's an absolute asinine behavior that seems to be the default on Linux desktops these days, that I always have to unset. I never knew why anyone would be a fan of it, unfortunately, most people are. I just have my terminal run tmux and live there. Command+Tab is enough for me.
That all said (sorry if the above turned out to be a bit of a rant), Linux desktop environments are slowly getting much better, I'm really liking the look of Plasma and Gnome 3 (although that huge chrome, seriously?), and Elementary OS is easily the best Linux distro I've used.
If even Linus uses it, then surely the heating, battery life, etc problems could be easily solved. But AFAIK, they haven't yet - it just doesn't make sense? Anybody able to shed some light on why it is so?
Also, if I accidentally unplug my ethernet cable, I have to reboot my machine to get an internet connection again
Well, that's a good thing, certainly better than the opposite.
>What makes them different from any other meal replacement shake vendor?
IMO, a focus on being a food replacement rather than a meal replacement.
A food replacement needs to have all your nutrition in one product. They don't care about taste.
Slimfast, as you suggested as a comparison, isn't meant as a 2,100 calorie/day food replacement. You'd have to drink ten 11oz cans to get that many calories and that would throw off the entire ratio of fat, carbs, protein, and nutrients per day.
In any case, soylent seems to have the right product/market fit.
Also, their product is nutritionally completely. It's not slimfast. I'm sure you've compared the nutritional information, right? Of course you have.
Underarmor had a similar revelation - selling what previously amounted to women's underwear, to men - and they've made a killing doing so.
GoPro is yet another example of this at work.
The product could be terrible, but if all those things are in place, investors could be fighting each other to get a piece of the deal.
You can fix a product in the future, with enough money. You can't fix a founding team, and you can't go back in time to join a deal that you missed out on.