Before WhatsApp there was ICQ.
Before Facebook there was MySpace.
First isn't always that important. Whatever your current vision is ... it's likely to evolve in ways your competitor may view differently. It's rarely about the original idea, but often way more about how you execute, and how your idea evolves over the long-term.
To put it another way: If you had zero well-funded competitors, you might have to second-guess moving forward. This is the opposite; this is a great thing. You just have to focus on becoming the Google to their Lycos.
Make sure your version of the idea is differentiated in a way that's not too easy to reproduce.
You make a good version of your idea => they have more money => they clone what you've done and market it more effectively => not a winner for you.
"Do it better than them" is the right idea, but they should be thinking the same about you.
Unless you're Microsoft or Google, there are always audiences in your niche who haven't even heard of the other guys. I encounter this all the time in my own business.
So unless your business was something specific like creating a scheduling system for vetinary surgeons based in Utah, you've just had your business idea partially validated and you still have a huge audience who are not yet your customers. Be agile, outinnovate your competition, and use all the advantages you have. There's room for both of you.
On the minus side, try to avoid focusing too much on competing and not enough on listening to the market directly and reasoning from first principles. It's good to watch this competitor and learn from them, paying particular attention to their weaknesses. But it's not good to fixate on them and direct your attention to trying to "beat" the other guy instead of giving the market what it wants. The market is your customer, not your competitor. It's also good to try to do things a little bit differently so your product doesn't end up being a mere imitation -- if you do that, you'll probably lose.
Good ideas are ubiquitous and are neither necessary nor sufficient for building a successful company.
They have spent the last few months raising money, not building a product. They will likely end up doing this again.
They now have a different incentives than you. Their investors will encourage them to sacrifice short term growth for potential explosive growth (likely to the detriment of the company).
It's not a zero sum game.
I'd also like to point out that keeping pursuit of your idea, you should ensure that what you are offering would be at par or greater than the one which got recently funded.
(I'm defining "user interface designer" as a visual designer plus interaction designer specializing in a particular platform, its HIG, and its toolkit(s).
That is, an experienced and professional enough UI designer is likely to have specialized in e.g. iOS, and asking them to design for e.g. Android will result in a potentially poorer UI than a similarly experienced Android specialist.)
There are no "best" or even "good" user interface designers as defined by external measures.
There can only be "popular" user interface designers, because a "good" user interface designer designs the interface that is "good" (visually comprehensible, accessible, follows the HIG, breaks the HIG rules in useful ways) for a particular platform, for a particular application, to be used by a particular user. A "best" UI designer is a function of experience: having designed more apps and having more experience, they are likely to make fewer mistakes, and come up with more refined interactions, and more usable new interactions, in the same amount of time. "Best" may also characterize how they are able to interact with a development team, such as having better estimates or a more professional working style.
These designers know they did good work because they conducted, or at least received feedback from, their users in usability tests, comprehension tests, etc. They did not rely solely on whether their client or employer continued to pay them for their work. Almost no-one publishes their UI test results, so there's no way you can find someone just by looking around, or even asking around. So all you have to go by, publicly, is the people who talk the loudest about design.
The only way to find a "good" or "best" UI designer is to look at well-designed applications on your platform that target your same users, and find out who did the design work. Don't look for names. Look for works, and then look for who made them.
1. Most recruiters get paid a percentage of the first year salary. Depending on the position, company, recruiter, etc... that can range from 10-20%. So a recruiter filling a $100K stands to make from $10K to $20K on the one placement.
2. One of the biggest issues in the industry is what they call "back door hires". Essentially this is where the company hires a candidate referred to them by a recruiter, but does not inform the recruiter of the hire, thus avoiding paying the commission. There are numerous reasons this can happen from complete accident to intended result.
3. There are recruiters who specialize in placing very specific levels. The higher up the position = the more niche the recruiter = the higher their fees. A recruiter working for a Fortune 500 company to find a new CEO stands to make significant money. Usually these firms will have a very refined candidate pool already developed that they work from. Probably one of the most premier executive level recruiters is Heidrick & Struggles.
4. It is advantageous to the recruiter to talk to as many people as possible for positions to gain an understanding of who is out there and what their skill set is. Even though you might not be a good fit for the current position, you may be a perfect fit for the next one.
5. For non-executive recruiters it is advantageous to place as many people in positions. These recruiters while not earning the big single commissions, earn on the volume of placements they make. That is why you see the recruiter-spam you see when applying for jobs.
You can actually ask the recruiter specifically how they are being compensated. A transparent broker will share that with you. (*Red Flag if they refuse). It's also a good indicator of what their client relationship is like.
The traditional recruiter/executive search business model is currently facing tremendous downward margin pressure on fees. Conversely, the demand for seasoned software developer talent is red-hot. Lots of sharks in the water these days.
As an aside, the firm changed the comp structure because of that 200k recruiter. She was terrible at her job but adept at shoving unqualified candidates into roles. She made great money but seriously tarnished the reputation of the firm during her time there.
The company he worked for charged 15% of my salary. He himself took a percentage of that which increased at stepped intervals when hitting monthly targets reaching almost a third of the fee.
Surprisingly advertising jobs seemed to be one of the biggest costs accounting for about 1-2k per placement. Office, transport and other costs obviously had to come out of the fee too.
Overall he had about a 20K base rate and was aiming for 20-40k in commission each year.
(I am not a recruiter; I'm on the other side of the same spam, sadly. However, my partner has worked closely with recruiters and gave me a massive braindump of the space just a few days ago. Would love to hear from some actual recruiters.)
EC2 micro instance running a django applicationEC2 micro instance running CouchDBRDS micro instance running MySQLElastiCache micro instance running RedisS3 storage for user images1 Lambda function for resizing images
That set up is handling roughly 1200 sessions per month at the moment and costs me roughly $15 per month, which is mainly for the second EC2 instance. If I was paying for everything it would be more like:
EC2 instances x2: $15RDS: $25ElastiCache: $12
The S3 and Lambda services are a bit more tricky to work it and I'll worry about it when I need to. For everything else it's roughly 750 hours per month x hourly cost.
If you've got any follow up questions let me know.
I also have an Azure A0 basic running for near the same amount $13-15/month. So a little more than EC2 reserved but a little less than EC2 on-demand. However I get a lot "freebies" on Azure (email forwarding, 5 GB in backups, et al).
If anything, I find the calculators often overestimate slightly. However YMMV.
The great thing about self-directed learning is that there is so much time over which to acquire new knowledge in the area. And in the age of the internet there are vast resources available on any computing topic.
The best resource for learning algorithms is Wikipedia. It doesn't stand alone and a lot of the typical algorithm article will go over most people's head but the more you learn the more of an article will make sense each time you come back to it.
Finally, there are only a few people who are objectively good at designing algorithms - Tarjan, Hoare, Dijkstra for example. Most of what is professionally good is pattern matching existing algorithms to new situations. That's the art that Knuth has spent sixty years describing.
I also suggest you to join this Coursera course, Algorithms: Design and Analysis by Tim Roughgarden. Currently the course is open, so you can sign up for classes. The course is offered in two parts, complete both of them.
Once you are comfortable with basic concepts start solving questions/puzzles online on sites like SPOJ, UVa, (YC-funded) HackerRank. You could try TopCoder also, but the questions are bit difficult. Hope this helps.
PS - You should study math, because it is important in Algorithms Analysis. You could try reading required parts of Concrete Mathematics by Knuth or as you come across new concepts, Google and understand them.
 - http://www.amazon.com/dp/8177583581
 - http://www.amazon.com/dp/1848000693
 - https://www.coursera.org/course/algo
 - https://www.coursera.org/course/algo2
 - http://www.spoj.com
 - http://uva.onlinejudge.org
 - http://hackerrank.com
 - http://www.topcoder.com
 - http://www.amazon.com/dp/0201558025
1. Coursera Algorithms I for formal university-style learning. See https://www.coursera.org/course/algs4partI
2. Algomation.com for visualising algorithms. See http://www.algomation.com/
3. http://bigocheatsheet.com/ for time/space complexities for the most common data structures & algorithms.
4. The book - Cracking the Coding Interview which goes through the questions that top companies like Google, Amazon, Microsoft ask during interviews. For their solutions, see https://github.com/gaylemcd/ctci
Hope that helps in some ways.
If you really want to help him, you first need to talk to him about it. Tell him you've noticed how hard he's working, and you'd like to help if you can. Be clear that you don't mean you're going to help by doing his work for him. Rather, you'd like to listen to his side of the story and see if the two of you could brainstorm some solutions.
After you've done this, you may discover that some additional learning/training could help him move faster. That's a best-case scenario. Perhaps he's just not equipped for this job, and he could start job hunting while he's still employed with your firm.
You're more likely to notice some things that can't just be fixed. You may discover that anxiety or excessive attention to detail (perfectionism) are causing him to take much longer.
Those are issues that only he can work on, and he'd need to work on them only with psychiatric professionals.
No matter the size of your company, you're going to encounter people who can't do their jobs very well and are harming themselves and/or the company. It's really none of your business unless A) they're in danger, B) they're doing something illegal, or C) you're their superior. Be very certain that your coworker is in danger before you proceed.
It sounds like he would benefit from a closer inspection of his working practises. Perhaps he needs to be managed in a different way. For example same amount of work just delivered as smaller tasks with shorter deadlines to avoid overwhelm. Maybe to start with, instead of him being part of an hourly weekly meeting, maybe he needs a 10 minute chat per day to help him to catch up, prioritise and plan the next day. This obviously would be the responsibility of his manager to take on.
Perhaps some training in planning out his working day in advance would throw out some interesting changes in how he learns to manage his own time.
I think the worst thing that could be done is to restrict his working hours which would add an extra level of worry - so he is sitting at home more stressed than if he was working.
The most important thing is to help him catch up so he is then receptive to support helping him keep on track.
Also, is he really that much farther "behind" than his co-workers, or is he just "behind" based on some arbitrary and unrealistic deadline set by management?
And I agree with the other commenter who said that you shouldn't talk to this guy's manager. There are just too many ways that could end badly.
One little "problem" is that my sites are sometimes in spanish, but for I would accept a design-only review in that case.
Many thanks in advance!
Also, here's our website if you want more information.http://sitesesh.com/
While we are at it... what is your website url or are you youtube based?
The advantage however of self-learning is you choose what you want to learn, how you want to learn it and the pace. You don't need to jump through the hoops of writing essays or passing exams.
I am not sure what university is like in US but my experience is you get a lot of core topics you have to cover whether you like it or not. The pace is set for you. I found most of the time it was too slow but then sometimes too fast.
Someone else mentioned ITT a list of famous successful (as in money) people and said they had been to top universities. The question is do you want to build a $10 Billion dollar business and all of the responsibility and sacrifice that comes with that?
Or maybe you would prefer to be something like the anonymous creator of Bitcoin. No certificate required for something like that. Or create something to help lots of people for little profit. Or maybe simply doing a PhD and enjoying the subject is enough.
What does fulfilling your potential mean to you?
I feel guilty fighting with my fellow man. I feel guilty for out-doing my neighbour.
I feel... confused. Knowing that the key to monetary success in this world would require I turn into a person I could no longer be proud of. So I'd win, but I'd lose.
I feel angry, knowing that there are people in this world who knowingly work to make things harder for others.
But that's the world we live in.
I'm slowly coming to the conclusion that the only true success in life is that which you create for yourself. Doing something you believe in. Providing for your family; contributing towards the community; making the world a better place. Everything else is just a proxy for that.
I am currently between jobs with nothing on the horizon, because I chose to leave a place, a career, that I felt was abhorrent. I don't know how it'll work out. I could end up as one of those statistics; an unemployed or underemployed graduate. But there's no other option but to keep on trucking - if you think you have potential, anything else is a waste.
- Life is short, you should do what you want to do. The transition probably won't be as painful as you think it is.
- The grass is always greener on the other side. Right now someone in some dirt poor country is wishing he was you and had the opportunities you had. They may not have the opportunity to change things, but you probably do.
I'm probably exactly who you're talking to in this post, but man, lose the self-hating melodrama. You're just making excuses for yourself.
Pick what you want to do. Imagine you did it, and everything went wrong. Imagine the absolute worse case scenario. Is it that bad? I bet it's not. So go for it.
I'd also like to mention that going to a prestigious university has generally no bearing on the jobs you get, it's the people. As a result hiring companies (in the tech sector) don't really care where you came from as long as you can prove your value.
A few examples:http://en.wikipedia.org/wiki/IP_hijackinghttps://isc.sans.edu/forums/diary/BGP+multiple+banking+addre...http://arstechnica.com/security/2013/11/repeated-attacks-hij...
"(e) Authorize Coinbase to, directly or through third parties, (i) make any inquiries we consider necessary to verify your identity and/or account information, and (ii) request and obtain any consumer report, credit report or similar information relating to you and to take action we reasonably deem necessary based on the results of such inquiries and reports, and hereby authorize any and all third parties to which such inquiries or requests may be directed to fully respond to such inquiries or requests."
... I'm not saying that they're awesome for doing this; but I don't think it's accurate to portray their running a credit check as "unauthorized". You definitely authorized it.
Up until recently a big pain point for me was finding code which could block within a time constrained function (aka realtime safety). There weren't any tools out there, so I ended up making one with llvm named stoat (originally static function property verification, sfpv). It's hard to say if this tool would really have wider usefulness as it essentially is just checking function attributes on the transitive closure of the callgraph, but it works for me.
My experience with these tools is that they are a great way to see how the code evolves during a project, help you keep it clean in maintenance mode, and may even teach you a couple of things about good coding practices. Just don't let it fall into the hands of management. They will love all those metrics and graphs, and soon enough you will have goals and performance reviews based on it.
Anhilliation - Fish out of water like story of exploring a mysterious, horrific, environment (2 sequels drag on for too much after this one though)
Many Ray Bradbury stories (Martian chronicles, and the Everyman collection contain the best ones)
Infinite Jest (Alternate American future of a culture of addiction and depravity, partly mediated by technology)
The Circle (haven't read, but like the author, life inside the biggest tech company of the future)
While some of his work hasn't aged well, I am still quite fond of several of Michael Moorcock's Elric novels and the first Corum trilogy.
HN has a lot of these style threads and you're going to get some good recommendations if you search for them.
The Lies of Locke Lamora (and sequels, 3 books total so far)
The Name of the Wind (and sequels, 3 books total so far)
Ancillary Justice (and sequel, 2 books total so far)
All of Iain M. Banks Culture series
Old Man's War (and sequels)
And, while not technically a book but a manga, Appleseed by Masamune Shirow is another collection I reread every few years (precursor to Ghost in the Shell).
Podcast of his short story Exhalation:
- Pandora's Star (futuristic (2380), humans are immortal through rejuvenation and are colonizing new worlds using worm hole tech(I think they have 50 or so worlds), long read - lots of sequels if you enjoy the universe)
- Ender's game (futuristic, the movie cuts off 1/2 the book that revolves around Ender's 2 siblings, both also are geniuses, short read - lots of sequels if you enjoy the universe)
Currently half way through the Lost Fleet Series, which is pretty good too.
Quite different from the 3 series above, the Rho Agenda was very good.
2001: A Space Odyssey by Arthur C. Clarke
Brave New World by Aldous Huxley
Mission of Gravity by Hal Clement
The Song and the Pendant by Magnus Von Black
Any of Ursula K Le Guin's books, but particularly The Left Hand of Tomorrow.
Anything by Peter Watts or Iain M Banks.
1. When I read "competitive salary" or "market rate" in a job description I dismiss it as underpaid. I interpret it as "average salary," and I hope I bring more than average value. To me a competitive salary is one that competes with my freelance income. Tell me the range or I'm moving on.
2. Lots of good programmers are happy as leads but don't aspire to management. If a startup advertised a technical track with the same compensation as the management track, I bet they'd attract a ton of interest. Maybe this is an "architect" role, maybe even CTO (for certain definitions of CTO), but it's pretty rare. My favorite question to ask startups is what they offer career-wise. BigCos have a plan, but I've yet to meet a startup that could answer that question, except a hand-wavy "we're growing". They definitely don't have a tech-track answer.
EDIT: 3. What kind of vacation do you offer? I see 2-3 weeks a lot and it's not interesting. When I read PTO I close the tab. When I read "unlimited vacation" I close the tab. If you can't offer an actually-competitive salary, you could try to compete here.
1. You're in NYC, where everyone is currently getting obliterated by snow. For positions like this you should hire in spring or summer if you want to attract a candidate from warmer climates.
2. You want someone who can put in the hours of a 20-something but has the experience of a 40-something. To me, that says the management team wants to hire 2-3 people for the price of one. These expectations simply aren't realistic and anyone brought in will fail in one capacity or the other.
3. The company raised or earned enough to hire you to hire for this postion. So clearly they had someone fulfilling this role but it hasn't worked out. That implies a lot of interpersonal conflict on the management team (all too common in startups).
I think if you start with hiring a VP level and focus on hiring a manager first, you will be better off. Who ever comes in should expect to promote from within and/or hire externally quickly.The management team needs to heavily involved in selling a prospective candidate on the role to alleviate any concerns about the interpersonal conflict.
Senior engineers leave their jobs all the time, but to get them to do so you have to offer them at least one of: more interesting work, more money (adjusted for local cost of living), or better working conditions (e.g., private offices for people who prefer them).
And I'd agree with the commenters who said that people who are good developers are not necessarily interested in being managers, and especially not VPs, who are managers of managers of managers, and thus pretty far away from the programming action. After being a director for many years, I decided to go back to being a developer because it made me much happier to write code, not sit in meetings and deal with management issues (hiring, layoffs, performance reviews, fighting for staff raises, employees not getting along with each other, etc.).
Also, there's no guarantee that a good developer would even make a good manager - it requires a whole different set of skills that include empathy, politics and diplomacy. Finding someone who has both programming and management skills would be exceedingly difficult. Better to hire the developer you need now, and if they show aptitude and interest in management, promote them. If not, hire a competent manager to oversee the growing department.
I'm thinking reworking my ideal profile to 8-12 year candidates that are Directors, Leads, or Architects who are still very hands-on. The tough part of the search is the intangibles, like finding someone who still has the motivation and passion of someone in their early/mid 20's.
You can browse through the inventory of similar sites to get a gauge of what you can expect, CPM wise: https://buysellads.com/buy/allsites/
Later on, you might just want to strike one-off deals with interested advertisers, or build in a more "native" ad solution into your platform, etc.
People seem quite content using shitty-looking forums.
Measure ease-of-use as 1 of the key elements.
No point making a great UI/UX when nobody knows where the login is.
Disclaimer: I work there.
We use the Spree Ecommerce system for the purpose.
I know of another idea of the same sort, which is for the establishment of an online marketplace for brewery ingredients.
I guess such marketplaces are in need, for that a good alternative to the awful ebay should exist.
Those two may give you enough to look into. I'll owe you the links.
Anniversaries at one company were commemorated by 1 year stickers that most people put on their name plate. Five and on were supposed to have more lavish rewards, such as a month-long sabbatical and so on.
Received a gift for Christmas (which was a gift card, then a hamper) and when I quit on good terms (which was a watch).
Never received or heard of anyone receiving a birthday gift or anniversary (of what?) gift from work. Maybe if someone has been there 50 years, or something there might be something special.
To be honest if a boss-like individual purchased a personal gift for someone's birthday I don't find that odd. If the company does it, that is a little odd. Even if technically both gifts come from the same pool of money in some cases.
Although, after going through your comment history, most of the comments you've been downvoted on have been downvoted for ad-hominem attacks, which is a fair response. (e.g. https://news.ycombinator.com/item?id=8815489)
This is the opposite of Reddit where, in theory, the downvote is not meant to be used to indicate disagreement but rather low quality comments (not that that works at all).
The problem is that both HN and Reddit hide comments that get too downvoted (dead/hidden respectively). And also re-ordered to the bottom (further hidden). That means that getting downvoted has a real consequence, so unpopular opinions are pushed out of HN's dialog and the site becomes a uniculture (just like Reddit).
Then HN has flag kills which are like "super downvotes." I've seen a lot of perfectly reasonable comments flag killed for no real reason (just turn on dead in your settings). In particular when they're flying in the face of the site's culture/popular opinion.
In an ideal world people who run these sites need to sit down and make up their minds, for real, if downvotes are for disagreement OR to flag "bad" comments. If they're just for disagreement then stop hiding/killing low rated comments, that makes no sense...
Also the karma score on your profile (and unlocking functionality) is a massive hornets nest that has many of the same issues described above.
Ultimately the point of the downvote and the punishment/rewards on the site are completely at odds with one another. People just haven't thought it through at all, unless their ultimate goal is to wind up with some kind of uniculture.
[My Standard Answer]
Take downvotes as editorial feedback. Perhaps your point wasn't clearly made and backed up with examples, references and sound rationales. Perhaps your tone was inappropriate in terms of the larger community.
Realize that even if you make your point clearly and with reasoned support, it may be directed at the wrong audience and that also prevents a comment from being well written and is something that can be improved.
It also explains why #3 isn't a valid approach. Yes there are more people with the downvote. That's just a fact about the audience [nevermind that there are even more people with the upvote to offset them when a comment is well written].
Looking at your two recent net negative comments. Both are poor quality.
+ When making a first comment, the word "argue" should be considered a bit of a red flag. "As I understand your argument" is about the only thing that consistently turns out well. + Use "you" with caution.
Then I often delete my comment. It hits my average karma, but it makes me a better writer, I think.
Reddit is, in my opinion, a place mostly for fluff (humor, pop culture content, etc) while HN is a place we seek out for information and discussion. Disagreement only down-votes definitely suppress discussion so I'm all for seeing HN experiment with curbing down-vote usage.
I could see "controversial down-votes" being an interesting method for identifying people abusing their down-vote privilege. If a comment gets a mix of up-votes and down-votes its likely that the down-votes are disagreement driven so that could be an easy place to start.
edit: To emphasize the point, this comment has been down-voted at least once
Nothing is as good as it was last year, and as sites grow they fill with people who act different than the past members.
Similarly, if somebody else's voice is talking over the voice in my head, then I'm screwed. I don't mind traffic, or music, or white-noise or even crowds. But a single solitary voice (like a person at a cafe talking on the phone 10 feet away) can completely upend my concentration.
Earbuds help, but there's something strange and pervasive about the human voice. I'd have to have my earbuds at deafening levels to drown out a voice nearby.
* Music - Typically something with a fast beat buy few/no words, although I sometimes do waiver and go with rock with lyrics or Jazz/Classical. I find Jazz and synthesized music are the best for me.
* A drink of some kind - If I'm at home, a good beer, however if I'm at the office then something with strong caffeine is preferred, ie. Rockstar or similar.
* Lots of gum - I've found chewing on stuff somehow focuses me a bit better. Typically some sugar-free gum is my go-to, ie. Tident or similar.
When I'm really focused, I either tend to sit up very straight and get close to the screen, or I sit back in my chair sagging a bit and shake my leg(s).
It's sort of like reading a novel. When you first start reading you see the letters on the page. It's a chore and not fun. A minute or 2 in you no longer see letters, but pictures. You are in a dream state like watching a movie. Welcome to the zone!
I would like to extrapolate and say that Lisp programming environments lend themselves to "Zoning" better. The ability to eval as you write makes it easier for me to gain inertia needed for the zone.
Little optimiztions such as key-bindings help. Gross motor arm movements to the mouse breaks my zone.
I tried to express that by giving out the old customers email they were allowing the new person to perform things like password resets or even receive email that was suppose to go the orginal account owner.
In the end I got them to revoke the email they reused and make sure it is never given out again.
I think Jiro-like programmers would similarly be distinguished by their mental attitudes, and not by their tool sets. For example, satisfying the customer - by creating code that's reliable, secure, easy to use and cost-effective - would be their most important goal. Their own satisfaction would be derived from fulfilling those goals, not from getting rich or using the latest trendy frameworks. (I have nothing against people who want to advance their careers or build billion-dollar companies, but that's not what Jiro is about. After all these years, he still has just his one hole-in-the-wall sushi bar.)
He would use all the tools that make it possible or easier to write good software (version control, tests, continuous integration, possibly code quality metric tools) without being married to one in particular. He'd switch to better languages and tools as he becomes aware of them, as far as the switches are practical.
He would have a broad overview of the underlying theories (algorithms, computability, complexity, various fields of math), and dive deep into those that matter for the problem at hand.
He'd write clear documentation that the end user can understand.
He'd continue to evolve his tools and skills, and where he finds the current tools lacking, he'd improve on them, or even write his own - but only so far as it doesn't distract him too much from actually producing the software that is his focus.
He'd be aware of his customer's requirements, and equally important, of the goals behind those requirements.
He would be aware of security and moral implications of his software, and refuse to compromise on them.
He wouldn't rant on hackernews, but be available for mentoring to those who strive to imitate him.
Surely at least until you can type quickly and accurately, you're not going to get much out of learning to use a complex editor like emacs or vim, and indeed most command-line tools are going to be a chore to use.
As Jeff Atwood says, "When was the last time you saw a hunt-and-peck pianist?" 
 This is of course not an original thought. Here's Jeff Atwood saying the same thing: http://blog.codinghorror.com/we-are-typists-first-programmer...
 http://blog.codinghorror.com/the-keyboard-cult/ (I should mention that I don't agree with most of this post, but the line about pianists has always stuck with me.)
The only excellent programmers are the ones who've written a million lines of terrible code and understand which methods have the best probability of achieving a decent deal of success before the inevitable refactor (anyone can pick up a book and turn everything into a Factory).
Write shitty code - each session is a brick in the foundation of an endless skyscraper which gets more complex the higher you go. At some point you'll start to program with the foresight to make your code easier to change down the road without breaking everything and causing headaches. That's really all that anyone needs in a programmer - making the future easier while allowing the present to function as it needs to with as little issues as possible.
At some point you'll work on code made by inexperienced programmers that's been built upon for years. If you are experienced enough, that code is actually the most interesting thing in the world to transform and simplify.
tl;dr: Languages, tools, ides, setups are all insignificant if you've implementing patterns in every wrong way as possible. Knowing what not to do is more valuable than knowing one way to do it.
I think the market reflects my assessment, where young smart developers can get paid a lot more than much more experienced developers. My view is also consistent with the common advice I see on HN, which is to develop deep expertise in a popular language/technology, and ensure this knowledge is always up to date (as opposed to mastering the art of programming in general).
(I agree that accurate touch-typing doesn't hurt!)
Having your tools where you expect them to be and mastering them (shortcuts, how to save keystrokes, how to type efficiently, how to perform daily/repetitive tasks with low friction) is key factor. Personally this is the reason why I use VIM over some modern IDE, i value more being fast and keep improving over the years than having the latest feature which is likely going to slow you down due to lack of consistency.
The beginner's mind - http://en.wikipedia.org/wiki/ShoshinAvoid at all costs to close yourself inside your craft and job. Avoid strong opinions and realize that you will never know enough, you'll likely keep learning from others and improve, this is why you should keep over the years the beginner's mind.
Be a Tenzo. http://en.wikipedia.org/wiki/Tenzo Understand that you have responsibilities and that you must work hard, both for you and for the others.
In short, i think these are the requirements to be a good programmer (as well as a good professional in general).
Good programmers never stop learning. If you have ability to learn on your own this is the only skill you will ever need. Everything else comes naturally.
I used to be in the "math all day every day" camp. My perspective has shifted quite a bit. For non-English speaking countries my recommendation would be...English. It's pretty shocking how many HS students are taught and/or write code in German here.
Learn to think/communicate in English as quickly as possible and learn good search/selflearning skills would be my #1 recommendation. Followed by "work with other people as much as possible, especially if what they do is kind of strange for you (artists etc.)"
It's not really mastering your craft and more base level but you have to start somewhere.
Jokes aside, most of the skill required to be a good programmer is independent of the tools used.
a Good Memory
Everything else is learned, but those innate skills will get you there.
Clearly, everyone commenting here must be doing so from the position of believing themselves to be good programmers with pure skill sets already in place. I have to include myself in that assessment, of course. But, note how we are all a little different. Or a lot. So I agree with those who emphasize attitude, although even in that there is a lot of wiggle room. What we have are anecdotes, not prescriptions - we can tell our stories but you know, really, everyone's path to mastery will be different. Different drives, different talents, different happy accidents. But, much time, much dedication, much passion, and not only freedom from the fear of making mistakes but rejoicing in them - opportunities for learning, and the shorter term the joys of debugging and problem solving.
For, if one does not love the journey for itself, one will never stay the course.
For myself, I fell into computers as a career entirely by accident, aided by a perceptive girlfriend's advice when I was down and out as a 2nd year Physics undergrad in 1967, forced to drop out by family issues. No degree, 19 years young, and basically a C student. She suggested I seek a job as a programmer.
Not surprisingly, none of the big 5 were particularly interested despite my perfect scores on their aptitude tests. (? what ?). But one passed me on to a different track at a sister company, and to my great surprise they hired me on the spot to debug their computers as they came out of manufacturing. I have no idea what they saw in me, but it was a revelation. I could do it. From day one. Room sized hand built discrete component monsters. Elliott 4100 series.
And ever since, that job included, I have always been surprised that people want to actually pay me to do what I love, and to ride out those unpredictable deep thought intermissions when nothing apparent is happening with me. That I am still fully employed, at senior technical levels, is I think a token of how I am perceived, and I take it t be my qualification for commenting here.
So. Passion. Joy of challenges. Endurance, persistence, and open to the luck of the draw wrt career path (mine looks like a classical Drunkards Walk - transistors to pixels, ALU to 4G graphical language design). Always learning, always doing new stuff, always going where no-one has gone before - and short of an academic career this pressing out on the boundaries has to be pretty special to computers.
And the tools. The original question. There is no prescriptive answer to that one. For every project, often even every phase, there are new things to learn and invent, and the invention part usually has to include custom tools. And, personally, I gave up learning the current technological SOA in tools just for the learning, because typically by the time they became the right one for a new task they were already outmoded and something else was in vogue. So my tool focus is whatever helps me do the work right now. Picking new tools and technology up quickly are the key. And I don't think that can be taught. It is one's mental toolkit that is the key, one's habits and tricks of thought and problem solving in their most abstract meanings. And I believe only love of the work brings those forth. Because we are all wired differently, some more differently than others, and we all have different satori moments which result in the laying down of the memes of Mind that shape those tools.
In short, stay awake, and pay attention, and love what you do. The rest will take care of itself.
Oh, yes, one more thing. Think of the poor folks who have to maintain what you did after you have moved on. Or, as was my painful jab for this, even if it is yourself six months later. Style is a tool unto itself.
However, I'd like to stree the one thing that most programmers ignore or worse still are unawre of -- Programming is NOT like making sushi simply because it is NOT a singular, individual effort. Programming is a social activity, even if you never ever meet another developer in person -- coding is communication -- it is communicating the the authors of libraries and tools using the APIs and interfaces that they have created ...while also creating your own 'story/conversation/...can't find the word for it'
To repeat the Hal Abelson quote in the context of what I am saying:
> Programs must be written for people to read, and only incidentally for machines to execute.
So, on a higher level than specific skill, I'd urge you to stop thinking of programming as a sole activity that you indulge in. A lot of good programming advice (like the quote above or the robustness principle or 'There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies and the other way is to make it so complicated that there are no obvious deficiencies.') when seen in the light of a 'more-than-one-person' activity suddenlly make a whole lot of more good sense.
Ok, I think the point is made. :-)
 Be conservative in what you do, be liberal in what you accept from others http://en.wikipedia.org/wiki/Robustness_principle
Having watched Jiro Dreams Of Sushi, his task is to provide excellence in food, in service, and overall experience. And at the root he needs to understand each component of the food and the service intimately, so that he can put them together in a way that is both pleasurable and fitting to the customer. He uses what he knows and the resources he has to create the best dishes he can.
For a programmer, the core of our trade is algorithms, and their combinations. You may not need to know them at the smallest details, or even that they are called algorithms, but to accomplish anything you will use them. Combining larger programs together in a specific way to perform something novel is an algorithm, though we may not call it that.
Next, data structures, understanding how to store information in a way that your algorithms can use and alter. This underlying knowledge is key to creating larger things from many small things.
Next, simplicity, combining logic and code together to accomplish the goals alone is not enough. While it may be simple to combine large things together, the question should exist of whether it could be done more simply. Simplicity can be hard to accomplish, but is easy to appreciate. Simplicity means avoiding cleverness, if possible, as it can make the program hard to be changed or maintained. Simplicity is elegant refinement, which leads to doing small things very well.
Those three things, in my mind, are the only pure things necessary to being a programmer. Algorithms, data structures, and simplicity.
The reasons none of the other things apply in my mind to the overly-general title of just programmer is that they are not required by every programmer.
Text Editor - Cannot pen and paper be used just as well in the task of constructing a program as a text edit?
Programming Language - Maybe I could have leniency here, you do need language to describe yourself, but not necessarily a programming language.
Databases - This is much higher-level than a regular data-structure, and as such isn't a necessity. Applies more to specific fields.
Algorithms - Yes, even if not known by name.
Math - This isn't a requirement, though it is a nicety. Some get by without knowing much more than the very basics of Arithmetic and maybe a little basic Algebra. It applies more to specific fields.
Debugging & Testing - These aren't necessary, but they help ensure quality or finding issues.
Documentation/Comments - If the code is simple enough, it should describe itself. That isn't to say documentation and comments aren't important, but they aren't necessities either. You should describe as much in comments and documentation as necessary, to provide clarity and usable instruction, and is a great skill to have.
I hope I've explained things clearly enough. Knowing one's craft is understanding the fundamentals, and that comes much further ahead of the tools one uses, within reason. In my opinion the single best thing for describing the craft of programming is the Unix Philosophy.
Lots of variables there.
Tax offices in most countries have ways of ignoring cute little "bulletproof" accounting setups, throwing the book at you even retroactively (money, even jail time).
I mean, if you're a small fish, you may well slip under the radar. But obviously you're asking for trouble if you set up a company somewhere, hoping for the best, because someone on HN suggested "country XYZ, low taxes!".
For what it's worth, I "digitally nomaded" through Asia on tourist visas, acting as my normal, home legal entity. No problems. But don't take that as legal advice :)
From Panama City it's a 2.5 hour flight to Miami, 5 hours to New York / Toronto, about 7 hours to LA / Vegas, 10 hours to Amsterdam. Copa airlines has its base in Panama city and operates direct flights to many US and South American destinations.
A lot of people in Panama speak English so it's fairly easy to get by even if you don't know much Spanish. I found people in Panama City to be very friendly and helpful. Panama City also has great infrastructure, Internet, roads, apartments..
If you're a citizen of one of the 48 "friendly" countries you can be a legal permanent resident in Panama is a matter of months for under $5000.
And if your profession / business is global and online, you can likely break free of highway-robbery tax rates and the mind-numbing, time-wasting accounting / reporting requirements of your home country by moving to Panama.
Unfortunately for US citizens, they're still on the hook for US taxes even if non-resident in the US. But for citizens of 47 other countries, Panama is just about the #1 easiest and most practical residence option on the planet at the moment.
Search for "Panama Friendly Nations Visa".
: https://www.cro.ie/Registration/Overview: https://www.cro.ie/New-Act-2014/Overview
My company has been thinking of creating a sort of "world company" package for people like you: solid main entity (Wyoming LLC for example); globally accessed banking, mail scanning/forwarding, etc. I'm curious if that would appeal to you (or anybody else on HN). Email me mattknee at google's mail system if so.
Here's our general information page for international clients that might be helpful with other issues: http://www.mynewcompany.com/international.htm
Americans have it different than most others, because they are taxed globally.
A true 'digital nomad' without set residency somewhere might also encounter problems, because certain countries might challenge the tax treatment of certain transactions. (depends on if you're selling your own stuff, or doing consulting, for example)
Talk to a lawyer (or law firm), see legal500.com (-> tax) for some recommendations. A firm in the country you're currently residing in is a good starting point.
Here in Boliva we typically complaint about taxes management and government regulation, but looks like is a breeze compared to other countries.
We're taxed on personal income worldwide, with small exemptions for living overseas/based on tax treaties, etc.
But on the corporate side, can you incorporate in a 0% tax location, then leave the money in the corporation? You'll be taxed when you pull it out, but if you leave it in then you have a larger capital base to re-invest, and can grow the money faster. Then worry about taxes when you take the money out.
Is this plausible? Can you own the corporation outright without any tax implications, or would it be more ideal to put it in a trust or foundation type of ownership structure?
And obviously a lot of here us are doing digital/mostly online businesses. Could you open a US based LLC that is a subsidiary of the foreign company, for passing through Stripe payments, and for managing your salary payments?
If not legally, in practice. With the nomadic piece, you have a certain amount of momentum that makes it hard to pinpoint your origin, so you might be giving up freedoms by putting a flag in the ground when you don't need to.
Edit: Also judging by the comments so far you don't want to trust HN on this.
You find a few more details here: http://www.guidemehongkong.com/
In case you don't know already, Estonia is offering an e-residency program[-2]. For the time-being it requires a quick trip to Estonia to get this (and it's open to everybody regardless of nationality), but afterwards you can run and administer a company remotely with this smart card. (Bonus points for the fact the smart card reader plays nicely with Linux as well as OS X and Windows.) Soon you won't even need to show up in Estonia, but will be able to register as an e-resident at one of their consulates.
Estonia have made it pretty straightforward to run a business there and it doesn't appear to be especially expensive to start an Estonian company either. To the best of my knowledge you can deal with the government entirely online and IIRC in English too. (This is a big deal because some English-speaking countries like the Netherlands have tax offices that are forbidden from speaking English unless they come out to you in person, even though all the staff are fluent. I hear this might change in the Netherlands in the future.)
Banking in Estonia appears to be awesome and developed. Stripe isn't there yet, but Paymill is.
Estonians are fluent in English and just about everything the government, banks, etc publish online is in English. The Estonian government even translates some of their laws (like the ones pertaining to companies) to English too. They might be translating others but I've just never looked.
Taxes aren't super low, but are pretty sensible and IIRC corporate profits aren't taxed until they're distributed. [-1]
To the best of my knowledge, Estonia didn't really implement the EU cookie directive. They got a slap on the wrist for it but no Estonian site (even big bank and government sites) has those "y'all accept cookies?" banners. That's a good sign.
The biggest downside to Estonia is its size. It's going to be a ghastly nightmare to hire a decent number of staff if you want them to be all in the same building in Estonia, but hey, why not just run a 100% remote company? But cross that bridge if and when you come to it. You can always just open up offices in other cities around Europe or other places.
Right now I'm in the United States and I'm forming a Nevada Series Limited Liability Company. I needed a Registered Agent to do that, but the question came up for me: how long do I need to be somewhere, and what kind of mailing address do I need, to not even need a Registered Agent?
Nevada has no State tax, but there's still Federal. I'll be watching this with interest on the tax piece... otherwise to me, in this country, it seems like Nevada is the way to go.
If you just need something simple with no employees partners then you probably only need the equivalent of a u.s. LLC which separates your business income/debt from your personal income/debt. Find whatever the equivalent is where you're a resident.
If you need an actual corporation then it's much tougher. Where I live (Switzerland) you need to start out with a lot of capital, probably need a lawyer and an accountant, etc.
It will get complicated if you need to register a corporation outside of where you're a resident and paying your taxes.
On the other hand, if you can manage this I've found forming and dissolving companies in SG to be very easy, not to mention the tax and accountancy processes.
To get permanent residence you need to visit Paraguay, proof that you have a fortune of at least 5K USD and run around a few days between different agencies. I helped a US citizen some month ago with his residency and we had everything together in 4 days, it would have been 3 if we not had forgotten one paper.
The big draw to Singapore is usually for the individuals - Singapore has no Capital Gains Tax (http://en.wikipedia.org/wiki/Capital_gains_tax#Singapore). At a personal level, if you're flipping a multi-million dollar business that's a big deal.
As other commenters have mentioned, the company/personal/VAT picture becomes more murky.
There's a lot of people on nomadforum.io/ that will have first-hand experience on this FYI.
Nothing else is required (office/staff), virtual services are provided at additional fees (secretary etc ..)
As to the how and what, I'm willing to learn myself.
If you're American, this gets really sticky. The US taxes you on your worldwide income. If you have a US corporation, it is also taxed on worldwide income, so it can be double taxed. And foreign corporations in the US are taxed on US-sourced income.
However, there is a loophole. If you own a company outside the US, and the company earns money outside of the US, it's only taxed in the US when the money comes back into the US. So, many people have companies registered abroad (Hong Kong is a popular jurisdiction) and money earned offshore is accrued in the foreign corporation. Expenses abroad are also paid by the foreign corporation. So, you can effectively avoid the money being double taxed (paying personal income tax only) if you earn money offshore and your offshore corporation pays your salary.
Also, if you're working abroad, it's not a vacation. A lot of things you spend money on are legitimately considered business expenses. So, if something is a business expense, pay for it with company earnings that haven't been taxed.
Now, what about paying income tax in the jurisdiction where you were living abroad? Typically, countries only tax income sourced within the country, and many countries have tax treaties where income is only taxed once. So, for example, if you're living in China, a country that has a tax treaty with the US, and you're paid by a company outside of China, and you pay taxes in the US, you don't actually have to pay taxes in China. Technically you are supposed to file there (at least in Beijing), but this isn't actually enforced unless you're on a Z-type visa and you are working for a Chinese company. And, if you're on a tourist visa pretty much anywhere in the world, you won't owe any tax in the country you were visiting. As best I know, no country in the world charges tourists income tax!
One thing that WILL happen if you're living abroad, and have foreign bank accounts: You will get audited if you claim tax exemptions that apply when you live outside the US. In my case, this came in the form of a letter to my Chinese address which basically said "prove you're really living in China," and gave me a list of documents to supply as evidence of same. There was a list of 8 or so things, of which I had to supply 3. I just sent the IRS everything on the list (not only 3 of the things, but all of the things), mailed the package from Beijing, and I never heard from them again. I think they just wanted to make sure I really was living abroad."
edit : this comment come from here http://nomadforum.io/t/what-is-the-tax-situation-for-perpetu...
These links might be really helpful : http://www.irs.gov/Individuals/International-Taxpayers/Forei...http://flagtheory.com/digital-nomad/http://flagtheory.com/nevis-llc-formationhttp://nomadforum.io/t/what-is-the-tax-situation-for-perpetu...
.sg = low corp tax (first 3(?) years waived). someone else here mentioned capital gains scenario. stock market secrecy regime is designed for laundering burmese drug money. US lapdog. its boring as batshit... see https://en.wikipedia.org/wiki/Disneyland_with_the_Death_Pena...
.hk = low personal tax (none, unless resident >3 months/year). can open business and bank account within 2 hours (pay an agent). first world level of service. less US-friendly and more fun than .sg.
.cn = low chance anyone will come looking at your balance. basically no tax. nice forex trajectory for CNY at the moment. only way to really do business in china. possible to convert inbound international SWIFT xfers to EUR/USD/RMB cash, even without a bank account, with any foreign 'id' document. online banking is crap. foreign banks are barred from providing most services despite china signing to the contrary when joining the WTO. ~impossible to process card not present credit card transactions. its bladerunner meets monkey magic meets the land of opportunity. taobao is a big win if you ever do hardware sourcing.
other countries in Asia tend to lack decent english or infrastructure, but may provide interesting fringe benefits (eg. IIRC Philippines gives you permanent in/out visa with a property purchase, has lots of good english speakers, though they recently dropped their relative bank secrecy to US pressure)
My best guess is that sellers feel uncomfortable showing strangers around their home and negotiating on price, and avoiding this discomfort is worth the agent's fee. But this feels like an unsatisfactory explanation.
 e.g: http://www.tepilo.com
- Fast food chefs (replacement still in development)
- Janitors / toilet cleaners (Roomba and friends, still a long way to go)
- Window washers (bot exists, still not widely used)
- Fruit pickers (complicated, replacements are apparently happening a fruit type at a time, lots of development)
- Street sweeping vehicles (cars have to move out of the way, etc. Smaller bots would mean streets could get cleaned at any time)
- Manual garbage recyclers (work is being done in this area, but object recognition and separation still needs a lot of work, apparently)
Not a job, but still needs big improvements: litterboxes. The automated ones still have problems: can't use certain kinds of litter, noises can scare cats, you still have to clean the filters out yourselves. It would be much better if there was some kind of auto-disposal/self-cleaning system, or even a way to turn litter into energy.
But such automation will likely cause disruption -- real disruption like civic unrest -- in several countries.
Bangladesh's economy is predominantly textiles, which accounted for 80% of exports in 2013.
I wonder whether the Bangladeshi government would assassinate people working the field. That plot would make an interesting indie dark comedy anyway.
Definitely not cheap, but the syllabus looks solid.