a) done everything listed at https://dev.twitter.com/docs/streaming-apis/streams/site#App... ?
b) considered getting on a plane to SF, spending a few weeks there, and network like hell, in an attempt to meet face-to-face with someone at Twitter? You said you're desperate, so all options are on the table, though I suspect I'll get shot down for suggesting this.
It would mean rewriting your service but it would offer long term viability.
I personally think the concept of apprenticeship is lacking in the technology industry and we loose out on what other older professions have with clearer career paths because of their established practices of guiding people though their careers. That said I've seen it abused too so there always needs to be balance in these things.
I personally coach about five people (for free) in my current company and they come from all areas of the org not just my group. I was very lucky in the early days to have several great mentors in my life who helped me and I feel it's my job to pay that back now in the latter years of my career.
Books are wonderful but nothing beats interacting with successful people.
I'd suggest some general "business strategy" works that will help you understand the context of how/why the very highest level business decisions are made, as well as some works that deal with tying together strategy and tactical execution (which includes technical initiatives).
1. Understanding Michael Porter - John Magretta. http://www.amazon.com/Understanding-Michael-Porter-Essential...
Porter's framework is VERY influential in the business world, and having at least a passing familiarity with his work is important at the higher levels. Going straight to the primary sources (Porter's books) can be a bit daunting as they are big, dry, and academic and not exactly what you'd call "page turners". This book is a fairly solid overview of the key elements of Porter's approach, and a good read before diving into the meat of Porter's works.
2. Competitive Strategy - Michael Porter. http://www.amazon.com/Competitive-Strategy-Techniques-Indust...
3. Competitive Advantage - Michael Porter. http://www.amazon.com/Competitive-Advantage-Creating-Sustain...
4. On Competition - Michael Porter. http://www.amazon.com/On-Competition-Updated-Expanded-Editio...
5. Good Strategy, Bad Strategy - Richard Rumelt. http://www.amazon.com/Good-Strategy-Bad-Difference-Matters/d...
6. Blue Ocean Strategy - W. Chan Kim, Renee Mauborgne. http://www.amazon.com/Blue-Ocean-Strategy-Uncontested-Compet... This book has its critics, but I think it's a worthwhile read. Some people argue against the whole idea of a "blu e ocean" market, but even if the authors aren't 100% right about everything, I think the lines of thinking this book fosters are valuable in a general sense.
7. The Discipline of Market Leaders. http://www.amazon.com/Discipline-Market-Leaders-Customers-Do... I think very highly of this book and the author's approach to strategy. It's not radically different from the Porterian approach in some ways, but I'd say it's narrower in focus and simpler. The big takeway is the idea (which should be obvious, but often isn't) that "you can't be everything to everyone". The authors push a model of choosing a market discipline to appeal to a certain type of customer, and making that discipline the core of your business.
8. The Machine That Changed The World. http://www.amazon.com/Machine-That-Changed-World-Revolutioni... Have you ever wondered what this "lean" stuff is all about? Or why Toyota is so revered by business leaders? Here's a good place to find the answer to those questions.
9. Working Knowledge- Davenport and Prusak. http://www.amazon.com/Working-Knowledge-Thomas-H-Davenport/d... Perhaps the seminal book on Knowledge Management, or at least one of them. If you want to understand the importance of knowledge in an organization, this is a very valuable read.
10. Outside Innovation - Patricia Seybold. http://www.amazon.com/Outside-Innovation-Customers-Co-Design...
11. The Future of Competition. http://www.amazon.com/Future-Competition-Co-Creating-Unique-...
12. The Balanced Scorecard. http://www.amazon.com/Balanced-Scorecard-Translating-Strateg...
13. Strategy Maps. http://www.amazon.com/Strategy-Maps-Converting-Intangible-Ta...
14. The Strategy Focused Organization. http://www.amazon.com/Strategy-Focused-Organization-Scorecar...
15. If Only We Knew What We Know. http://www.amazon.com/Only-Knew-What-Know-Knowledge/dp/14516... Another seminal title in the Knowledge Management world.
16. Common Knowledge - Nancy Dixon. http://www.amazon.com/Common-Knowledge-Companies-Thrive-Shar... Another seminal title in the Knowledge Management world.
17. Winning The Knowledge Transfer Race. http://www.amazon.com/Winning-Knowledge-Transfer-Michael-Eng...
I've found a few books really useful:
* The Checklist Manifesto: How to Get Things Right (https://www.goodreads.com/book/show/6667514-the-checklist-ma...)
* Drive: The Surprising Truth About What Motivates Us (https://www.goodreads.com/book/show/6452796-drive)
* Making Ideas Happen: Overcoming the Obstacles Between Vision and Reality (https://www.goodreads.com/book/show/7696135-making-ideas-hap...)
* Delivering Happiness: A Path to Profits, Passion, and Purpose (https://www.goodreads.com/book/show/6828896-delivering-happi...)
* Rework (https://www.goodreads.com/book/show/6732019-rework)
These days I get the most value from articles and videos. Here is a list of my recommended articles on Medium, which might be useful - https://medium.com/@nickboyce/has-recommended. Some great stuff in the list recommended by ravivyas too.
Edit: Something else I have been experimenting with is buying executive summaries of major books, in order to familiarise myself with as many perspectives as possible.
One of my favorite books when stepping into a new role is M. Watkins, "The First 90 Days", which is very helpful in formalizing an effective approach to succeeding quickly when in a new management role.
It is worth trying to get some education in people management. While much of it is common-sense, it's worthwhile covering the basics -- the applicable laws, managing conflicts, that sort of thing. I have yet to find a good, practical book on organizational engineering (if anyone has a suggestion, please post it), but this is an area that I feel someone in your role should seek to understand well, because it has a big impact on the success of a business.
One of the most important, fundamental skills for a senior level manager is understanding finance. I recommend B. Knight, "Financial Intelligence" as a primer.
My favorite book on business strategy is M. Porter "Competitive Strategy", however, this book and all other business strategy books should be taken with a large grain of salt. They often suffer from survivorship bias, being applicable only to certain industries and times, and in at least one famous case, allegedly faking the data used to draw their conclusions. I treat business strategy books as leisure reading that simply provides another perspective.
When it comes to Management, I have to second vellum's advice and go with Drucker:
Classic (Mad Men era) of Marketing is ruled by Ogilvy:
However, I cannot stress enough the role of analytics in modern business strategy/marketing and Kaushik's book is the best:
Go on to reading the Toyota management style in itself, there's a couple of books about it, that's what many IT techiques are getting their ideas from.
It's mostly about finding your values so to speak and pinpoint what you really think makes up a good software development company - maybe your focus will be on organization, maybe on other things, so get an overview first.
These two articles are hopefully also an interesting nudge to think about many things:
O'Reilly has a very interesting book with analysis which practices actually work and why/how - sadly I also forget the title. There's for example a chapter about when and why pair programming works and when and why not.
Also, just watch carefully and learn to notice "good organization" - happens in surprising corners and niches and try to see WHY it's good.
It introduces a specific method to write concise, effective business documents. Then it shows how you can use the method to critique your own thinking.
I highly recommend it. It's clear, intelligent, properly defines what strategy is (which most other books fail to do) and isn't, and how to go about designing and implementing it. It's very low on bullshit and very high on examples and insights from both history and business.
It is necessary to not do great projects and not pursue great ideas, because of scarcity of resources: the organization cannot undertake all of the good and great ideas it encounters.
There is nearly no organization that is not over-committed in its operations. This is constant, challenging, and avoidable problem.
Actively deciding not to do a project, or not follow a particular line of effort...instead of failing, by default to give enough resources or effort to an idea or project aids the organization to focus and excel in particular well-chosen areas. And avoid being mediocre in multiple areas and spread thin as an organization, by actively choosing to do less. What great project will you abandon, to focus on the other great projects you're already doing?
Mission statements fail to inform about what the organization will NOT do. A strategy does.
* Stuck: Why Its So Hard to Do New Things in Old Organizations (recorded lecture, December 6, 2007)
By Rebecca M. Henderson, (now at Harvard Business School) formerly Eastman Kodak LFM Professor of Management, Sloan School of Management, Massachusetts Institute of Technology
Video lecture (skip the first 15 minutes) (total time one hour)http://video.mit.edu/watch/stuck-why-its-so-hard-to-do-new-t...
I'd read everything on that site.
1. Follow people in the same field2. Ready up on blogs and posts : I use Zite, Flipboard and medium3. A book that helped me to a large extent is Good to great by Jim Collins (http://www.amazon.com/Good-Great-Companies-Leap-Others/dp/00...)
Also The Personal MBA by Josh Kaufman http://www.amazon.com/Personal-MBA-World-Class-Business-Educ...
4. Video from people in the same field.5. This article https://medium.com/@noah_weiss/50-articles-and-books-that-wi...
Some great tools:
1. Trello - Project/product and pretty much manage any thing2. Qlikview - Data Analysis : Excel on Steroids
It's a very short list, but I am learning on the job :)
I've never worked in a startup, but I run my teams as if they were small, fairly-independent-but-often-symbiotic entities. I started as a dev back in '99 and am one step below CIO in a 45,000 employee large corporation. If you'd ever like to chat about your problems or bounce ideas off someone, I'd be happy to.
'Team Geek' is a great primer on technical leadership: http://shop.oreilly.com/product/0636920018025.do
Another recommended book is 'Shipping Greatness': http://shippinggreatness.com
Assuming you're already familiar with 'The Lean Startup', there has been a series of excellent 'sequels' on many more specific disciplines that you will likely find useful: http://theleanstartup.com/the-lean-series
A recent addition (that I am still digesting) on Agile processes beyond Scrum is 'Unblock!': http://www.continuousagile.com/unblock/ Posted to HN a few days ago: https://news.ycombinator.com/item?id=7921200)
If you are looking for reading material, consider putting the books "Execution" and "Facing Reality" (by Larry Bossidy with Ram Charan) on your list. I found these to be a good concise description of some of the more 'meta' aspects of senior leadership.
2nd Article "Leverage Points" http://www.donellameadows.org/archives/leverage-points-place...
after these two you will have enough know-how on how to identify and manage systems (i.e.: your growing company)
then the only thing between you and success is reality, for how to influence the company reality you live in please read
3rd "Seeing Systems" http://www.amazon.com/Seeing-Systems-Unlocking-Mysteries-Org...
good luck and have fun (with the books, with your new responsibilities)
and try to see how practical tips both give for decision making. Art of War is also good, but I'd prefer Clausewitz since it's much more straightforward.
And read this masterpiecehttp://www.ikea.com/ms/en_US/pdf/reports-downloads/the-testa...
In terms of agile - I believe that scrum and related are too operational-related and not really strategic. You can skip that and delegate crunching it to others.
Master delegation - 1 minute manager, etc. - read at least one short book about it. Don't fall into micromanagement trap.
To that end, I strongly recommend Michael Porter, who literally wrote the book on modern "Competitive Strategy". There is no other single source of strategic theory that is better than this. Anybody that has taken a b-school class on strategy worth their tuition will recall concepts like Porter's 5-forces.
Other answers seem to offer more recently offered books and some might dare to argue his frameworks are dated but really it's in a robust, tried-and-true-kind of way. Other books that try to cover defining strategy, value chain, industry analysis are often derivative of his work.
If you don't end up reading it at least get a list of his key concepts and google the shit out of them. They all seem like a "duh, i knew that" on paper, but you should have these theories in your back pocket whenever you need to formulate a battleplan.
Agile/XP practices are a good starting place in-between cowboy programming and micro-management hell -- as long as you don't take them as a recipe book. They're simply best practices that you can and should learn. Then prune/modify as necessary. There are really too many books to list separately. I'd advise joining a local Agile User's Group and noticing who has their shit in one sock. Then find out what they're doing. You can also bring in external coaches.
You need a couple of good books on the people part of things. I can guarantee you that the people part of things is where you'll screw up. "Drive" is really good. http://amzn.to/1qtZdEd So is PeopleWare http://amzn.to/1iBnasO
For strategic stuff, especially in a growing company, you're going to have to master large work queues without having them eat you alive. If you'll allow me to self-promote, my Backlogs series is geared exactly towards this problem. http://tiny-giant-books.com/backlogs.htm
One observation: as you grow, it's not enough that you pay extremely careful attention to whom you hire. You also need to create an on-boarding system where new hires can learn and adopt the culture -- things like pair programming, how the build works, good coding etiquette, and so on. Setting the table for strategy to work is actually more important than whatever the strategy is.
Second observation: I imagine you're going to be swimming in business book recommendations. Business books are like dieting books: everybody has a few favorites. (I imagine this is because the material inside matches how they already feel). Better to identify specific areas, like Agile Requirements Modeling, and find books targeting those areas. Then look for practical advice. Otherwise you'll just have a ton of books that you'll spend hundreds of hours reading and not really have much to show for it at the end of the process.
Six Thinking Hats - best way to think like an analyst (and to lead meetings that are effective)
Both of these are killer and quick and easy books.
I am not sure you can learn how to think from a book, but the recommendations here can be good to "know what you don't know."
Maybe the best question you should be asking is not what to read, but what problems you can solve you have not solved before. Here is one constraint: if you can solve it yourself, and not through others, then it is not a very interesting problem.
Probably not too late to catch up.
Some people find it too academic but it covers pretty much all of the essentials of strategy and business policy practices.
Wax on. Wax off.
Obviously a book won't do. You need a training montage.
The successful role models in my life have a keen ability to at least relatively measure large, nebulous things. For thinking in probabilities and ways to gauge intangibles like "effectiveness" I think this book is excellent.
He's been writing on Management for 4 decades and he's opened my eyes to what management is about. http://www.amazon.com/Managing-Henry-Mintzberg/dp/1605098744
Submitting to reddit/HN when you launch a product is a decision you need to be careful with. You need to time it right to get enough upvotes, you need to target your audience, you need to be ready to handle the traffic, and your product needs to be in a state that's ready for criticism.
This is an encouraging story, but to others out there: be careful! In the words of Eminem, "you only get one shot."
(Of course there are a million other ways to promote other than "Show HN" or reddit posts.)
I use reddit a lot to promote my blog posts but I've realized what @chatmasta mentioned to be true.
If you want to publicize your startup or project on launch day, its better to get it published on some famous blog for that stream.
Need not necessarily be techcrunch or mashable. Can also be CSS tricks or Paul Irish's blog. Equally valuable. And the HN / Reddit takes care of itself.
- Do not run unnecessary services. You probably don't need to run ntpd, for example.
- Choose your necessary service packages carefully, and learn how to configure them securely. qmail or Postfix over sendmail.
- Bind all non-public services to internal addresses or sockets only.
- Enable your host packet filter, write good rules.
- Separate services as much as practical. Jails, zones, etc, whatever your OS provides.
- Configure sshd properly. Consider blocking connections from untrusted IP addresses. Consider port knocking.
- Minimize user accounts.
- Follow security announce lists for the few public-facing servers you run.
- If you're running your own software (web app or whatever), make sure you learn how to avoid common mistakes.
- If you find you must run something with a poor security history, do it on a sacrificial host/jail/zone/etc that can be recreated with minimal effort. Make the public facing server a content-clone of some other protected instance.
That's pretty much the minimum for a standard random-acts-of-violence threat model, in my estimation. If you have more pernicious attackers, this will not be adequate. If it sounds like too much work, keep good backups and hope for the best -- but remember, recovering from a breach is a heck of a lot of work too. Time spent now saves multiples later.
If you're handling sensitive user data, hire someone who can do all of the above in his or her sleep. Or reconsider your choice to handle sensitive user data.
There is always a balance to be struck, but this is the baseline because it accomplishes two things: it prevents all known and most expected vectors of attack, and it contains the damage if you are ever surprised.
No passwords. Ever. Turn off PasswordAuthentication in sshd_config. Use SSH keys instead.
Personally, I think if you're running SSH in this mode, it's safe to run it on the default port and not really worry about locking access down to certain IP addresses/ranges.
I screen a lot of ML researchers and engineers.
The process typically starts with a 30-90 minute phone screen (it ends faster if I don't like you). I start by discussing the company and the position, in as much depth as the candidate wants. Then we discuss one project of the candidate's in depth, both for some technical expertise but also to suss out what the candidate, as opposed to a team, actually did. Good candidates should be able to discuss what the project did, why, implementation, challenges, problems overcome, tools used, etc. Then we do a quick survey of general ML technologies; we're hiring senior people so they should have a pretty good breadth of experiences. So they should know their way around regression, trees, forests, boosting, svm, linear algebra techniques, plus optimization tricks for all of the above. It's ok if a candidate hasn't used any one specific thing, but they should have a rough knowledge of which tool to use when, plusses and minuses of tools, and the typical ways one improves results (hold-out testing, k-folds, l1 and l2 penalties, etc etc.) If you've actually used most of these tools you should easily pass the phone screen.
Then we bring people in or fly them out. Here, we go more into depth in several tools. You should know the math and the practical use of several ml techniques really well. We'll also make sure you can write enough code that you don't have to be handheld. That is, you need to be able to do some data processing and string together data pipelines to get your work done.
common resume failings include (NB: this is for an ML engineer / data scientist):
* (very common) no academic prep and no demonstrable experience. ie a potential junior person applying for a senior position. If he or she has no degree but spent 4 years at netflix or somewhere good, we'll definitely at minimum talk on the phone. Demonstrable experience definitely means education barely matters.
* you live abroad, thus requiring sponsorship and a move, and aren't a really strong candidate
* (surprisingly common) you spammed all our different jobs, making us believe you just want a job, any job, and paid no attention to what we're looking for
Common failings from a phone screen or interview include:
* (weird, but happens) don't make the agreed upon phone screen time without an email before (or even an email after, if an emergency occurred)
* (really weird, but happens) you have no idea what the company does. I'm looking for you to have spent at least 5 minutes reading our site and have a 1 sentence summary of what the company does. If you haven't done even that much research, why on earth is the candidate applying to us? A perfectly fine example would be, for example, if I worked at google: You build a search engine and you want ML people to improve search results. At, say, square, a great response would be "you're handling monetary transactions and therefore have fraud problems from card holders and probably want to build risk management tools to protect yourself from bad merchants." I find it really weird many people don't even know that much. This isn't an instant fail, but it's a negative sign.
* he or she wasted his or her phd. They may (or may not) have a very deep understanding of one tiny piece, but lack a decent understanding of the breadth of the field. We need breadth. And yes, they may be able to learn, but the question is then what the hell did they spend a 6 year phd learning? Also, we're hiring senior people. And again, anyone with a good ms in ml should do fine (not just a theory; we've hired them from stanford and ga tech).
* They don't know deeply at least one or two techniques and tools. Whether its hadoop, vowpal wabbit, R, sklearn, weka, whatever, you should have become an expert in at least one tool and know it inside and out.
* (very common) an inability to program enough. Obviously most ml people aren't engineers, but they have to be able to do data processing, data cleaning, run ml tools, build their own ml tools if necessary, etc. Senior people in yahoo or google's research labs may not need to program, but for us you do.
* (somewhat common) bad communication skills. We speak english; you need to be able to speak reasonably clear english so that we can discuss technical topics clearly. How people can finish a long stretch in an american university without this escapes me. And to be clear, about 1/2 the employees here are foreign born, so we're pretty good with different accents and the typical indian and chinese esl idiosyncrasies.
The last thing I can say about job seekers is we're talking because I have a problem. That is, I really want you to succeed if there's a good chance this will work.
* As far as graduating seniors, when you post a job offer, you get maybe 10% of the resumes from people with either a CS/CE major or minor. That's not to say they can't code (in my experience a resume from a non-CS major with good experience is a much better bet than a resume from a CS major with little or poor experience). But we literally get people whose experience totals up to "took a 'How to write HTML' class once freshman year as an elective" applying to jobs involving low-level C
* Actual on-site interviews are very expensive; unless you are really hurting for people, you need a cheaper (and potentially less precise) way of weeding things out.
* With the exception of graduating seniors, there really are relatively few good candidates actively seeking work; most of the good ones have jobs (and you can hire them, but that usually isn't counted in the X% of resumes get offers, which usually refers to responses to a job posting; hiring people away from their current jobs usually starts in a different manner).
* On the other hand huge numbers of people who are desperate for work send in resumes. The less harmful of these are the ones who obviously are unqualified and clearly just spammed every job offer listed regardless of the requirements. Since we aren't talking about graduating seniors (see above) the majority of the not-obviously-unqualified often even have relevant work experience, but that's just because it takes time for people to fire you.
I am talking about people with 2-5 years of experience working in language X who are barely able to (or sometimes even completely unable to) write FizzBuzz in language X.
Another example was someone with over 5 years of OS kernel development, who in the interview was unable to describe what exactly they did in those 5 years and they didn't seem to know a much about any of the various OS topics we tried asking them about: scheduling, interrupts, DMA, filesystems, memory paging, IPC.
These people are particularly harmful, since there are very few tells at all on their resumes (and no reliable ones), you would have to interview all of them, which gets expensive. The majority can't get past a phone-interview, but when you are talking about
This leads to a lot of companies not even bothering to interview people (again ignoring those graduating from school) without referrals from current employees, or some other way of weeding out the massive numbers of "good resume, but bad candidate" submission that also will, as a side effect, weed out some of the "good resume, good candidate". It also means that if you are looking for work, and can't find it, then either you are unqualified, or need to get referrals from friends who have jobs at companies that are hiring.
From what I've seen, the other 99% of resumes are people trying to break into the field but with no actual programming experience. Competent developers with a track record get snapped up really quickly, while newbies without a track record go on to apply to 100 more jobs.
Relative to the 1/100 resumes-- if your friend took the time to dig deeper, he'd likely spot 2-3 diamonds in the rough, a moneyball misfit.
If your friend is like most senior managers, he'll scoff at the idea-- 'I'm too busy to read 100 resumes' he'll likely say, or 'that's HRs job!'
Finding & attracting talent is a mission critical competency that senior leadership must drive. Too often it's delegated to mid-tier management that don't share the same sense of urgency.
It takes an exceptionally rare manager who can assess and train-up mediocre talent into A-Player status. Fewer still, who have the guts to make a trial hire. A bad hire can be costly on a variety of levels.
But most guys would rather play it safe-- blame HR, lack of bandwidth, or the market. Meanwhile, the guys who figure it out manage to scale.
Invest more in getting the right kinds of candidates.
You can also blame it on an unrefined interview process. I've probably turned down the right candidates accidentally while trying to work out an interviewing system. With a startup, its hard to get enough feedback because you can't hire enough people to verify if your assumptions were correct.
Another issue to consider is unrealistic expectations for a candidate (has to know X, Y, Z frameworks + machine learning + mobile) If this candidate exists, you probably can't afford them.
For the rest of us, I strongly believe you can train most developers to do the job. It's how much time you're willing to invest in them. I've taken inexperienced developers that are very interested in the company vision and given them a chance to grow in the roles. After a year, they're the "good" developers I've always wanted.
Thing is, companies and jobs differ, and so do people. I've seen top performers from company A fail in the interviews at company B, and vice versa. Leaving both companies under the impression that the other company employs 'bad' developers.
Whether or not your skills+potential can be used optimally by a company depends on so much details, like cultural fit, to which extend you agree on their paradigms (methodology, problem solving ideas, prioritization, etc).
Long story short; companies are usually looking for the most optimal choice for their job openings, and so are applicants. This results a way more complex matching strategy that just 'could do the job'.
Perhaps John Nash can help us with optimizing these strategies. Until than, I think 1:50 to 1:99 ratio's are here to stay.
I still run across stuff I don't understand, all the time.
And I'm not one of those people who have "1 year of experience 15 times" instead of "15 years of experience". I'm pretty aggressive about learning new stuff and expanding my horizons. And yet the pace of change is so fast, there's always new stuff coming out, or areas of tech I'm discovering for the first time.
The moral of this little diatribe? Don't sweat it. Be curious, explore, learn, hack, and don't worry too much about comparing yourself to others. And don't assume everybody on HN is some uber-genius, super-brilliant "10x" programmer. I mean, sure, there probably are people like that here, but I'm pretty sure they are a small minority.
For another take, you might find esr's "How to become a hacker" essay useful:
Other than that, my only advice would be to start a project (open-source or not, whatever you think) that gives you a venue to challenge yourself. That is, start a project that you don't believe you're really competent to complete, and then go do it.
Also, "read a lot".
1. Explain things - either to my co-workers or to the computer. 2. Explore - navigate the codebase figuring out how different pieces connect to each other, building an adequate mental model of the system. 3. Debug - search for the root cause of a problem by examining the state of a system in between steps.
Thus, I think that to become a better programmer, you need to get better at these three things.
"Explanation", I think, is the most difficult one. I have found that studying math has improved my explanation skills dramatically, and it helps not only when talking to computers, but also when talking to people. Of course, not everyone has the opportunity or desire to study things like calculus or differential equations, but I think that reading computer science books is a nice way to exercise that math/logic muscle.
To get better at things like debugging, I had to tear down some mental barriers. Sometimes you'll have to go out of your comfort zone. Never think "oh, this is too hard for me". For example, if you're writing something in Python, you must be mentally prepared to dive into the internals of a 3rd party C module. The key is to approach it with a "we must get to the bottom of this!" mentality.
Don't worry too much about technology. Your "goodness" as a programmer isn't defined by how many languages you know. It's better to know a few very different languages than a lot of similar ones. For example, I think that knowing Java and Lisp is better than knowing Java and C#, because you can quickly pick up C# using your previous knowledge of Java, but knowing Lisp may teach you something you wouldn't know if you decided to stick only to enterprisey languages that give you higher employability.
If not, doing a good portion of the exercises in some books on [compilers](http://www.amazon.com/Compilers-Principles-Techniques-Tools-...), [DFAs/State Machines](http://www.amazon.com/Introduction-Theory-Computation-Michae...), Algorithms (http://www.amazon.com/Introduction-Algorithms-Thomas-H-Corme...) and theoretical programming (https://mitpress.mit.edu/sicp/full-text/book/book.html) can give you some common foundational lenses with which to see these articles
2> Learning the history of your field
Nothing informs the current state of the field more than how we got here! Learn the foundation of your field from people who lived it. The podcast [Debug](http://www.imore.com/debug) is Guy English (Creator of Napkin and other apps) along with Rene Ritchie interviewing people about the history of Cocoa and CocoaTouch
I found [this episode about AutoLayout and Key Ferry illuminating](http://www.imore.com/debug-33-ken-ferry-auto-layout-passbook...).
3> Go through early versions. Few systems START complex. Look at OLD books for EARLY versions of systems, and why old php made such silly choices is obvious (hint, they weren't that silly for what it was doing). Read books and commentary through the timeline. Understand the history of what's happening to the language, then you'll understand why you are where you are.
4> Go DOWN the stack. Understand the bottom of Objective C by reading [the open source implementation of Core Foundation and more](http://www.gnustep.org/). Also available elsewhere (and I think somewhere on Apple's Site still).
5> Do what you shouldn't! Don't ship it, but really use those implementation details to do something awesome and amazing. You'll learn tons about what's happening.
PS: To the mods, those aren't affiliate links
Never stop learning and never stop pushing yourself. I'm driven to know everything I possibly can about my areas.
IMO you should decide what you want to do in more concrete terms. Being a "good" programmer can mean a lot of things. Do you want to become an expert in some specific area of computer science, i.e. machine learning? Do you want to design your own language? Or an OS? Or your own framework? Do you want to be the ideal super-productive jack-of-all-trades startup first-hire/tech founder? Do you want to strive for the broad knowledge, wealth of experience, and leadership + mentorship abilities of an effective CTO? The list goes on.
You can't have it all. Pick one, or pick a few. Then spend years challenging yourself, ideally working on real projects that are meaningful to you, alongside other great programmers who give you something to aspire to.
You need to realize that there are a lot of people commenting on hacker news (or for instance Stack Overflow). On any given topic, specialists of that field will show up and share their insight. For instance, on an article on technology X, it's not uncommon that someone that helped developing X shows up.
You also need to remember it's not the same person that knows everything :) it may be the case for instance that the distributed algorithms expert is clueless about PHP for instance.
If you answered yes to all of the above, then you're probably already a "good" programmer, and you'll only get better. If not, then let's maybe discuss why not. E.g. is there something about your job that's getting in the way of you improving as a coder?
The same goes for painters, musicians, poets, writers, anyone that you think is "good" is actually just someone who found their thing and hammered the hell out of it until they squeezed out a handful of really good works if they're lucky. What you don't see is the massive pile of absolute garbage most of these people produce and keep from the public's eye. I think the defining characteristic of someone who's actually good at a creative activity is whether they can admit this and get past it as just part of creating.
So, instead of saying how can you be like all of these guys, how about how can you just improve your own skills? Since everyone sucks at this to some degree or another, all that really matters is how you improve what you do and get better at it. Ultimately, that just takes hard work, study, and trying to find any tricks and hacks that are being kept from you.
As an example, I'm teaching myself to paint and I suck at it, but I don't give a shit if I suck at it, I enjoy it. So for the last almost month I have been painting the walls of a box over and over again until I learn how to do it right. It's fun, I like it, and I don't care if other people are better at it than me because I'm finding my thing and I keep improving because I keep working at it and failing until I get it right.
Thirteen years later, I know vastly more than I did then. I've worked with a wide variety of languages, applications, and frameworks. I've spent untold hours reading blog posts, articles, code, and Reddit/HN discussions. Today, I still feel like I know a pretty good amount about programming, except now I also know (and accept) that there's effectively an infinite amount of possible programming-related knowledge out there, and I will only ever know a fraction of it.
Like you, I routinely see articles posted that make me once again feel clueless and inexperienced (such as raganwald's recent post on JS multiple dispatch, or anything involving Haskell / Lisp / assembly / cryptography). I sometimes worry about dealing with technical interviews if I ever move on from my current job. Ultimately, though, I know that I can get stuff done, and that while there's lots I don't know, I have the ability to research and learn.
The other posts give some pretty good advice. For me, it comes down to:
1) Learn by doing. No better incentive to learn how to do something than when you need that to make a project work right.
2) Keep reading technical discussions on sites like Reddit, HN, and tech blogs
3) Never be afraid to say "I don't know", and go research the subject.
Just the amount of understanding required to comprehend the keyboard press to the letter appearing on the monitor is insane.
Remember, you're not useless and inexperienced. The stigma from those words alone are holding you back. I have a feeling you are bored. You have a thirst!
Also, recall that articles and comments are much like Facebook, a peek into someone's good life that makes you feel bad about yourself. The good always seems great, and the bad goes untold. I'm on revision 744 of a 10 page website/service layer right now with only 30% of the requirements met.
The important thing is to keep learning hard things unrelated to your current development stack and methodologies. Don't get stuck on only doing tasks where you are already an expert.
You may already be "good". The thing is that there is something or someone better out there than you and this applies a lot more when it comes to HN. I feel like a loser when I browse HN because well, a lot of ppl are faaaar better than me at the things that I want to be good at. It is all relative. Stop sweating it and focus on what you want to achieve. If you get what you want, who cares whether you are good or xyz.
You're 'Good' now. When you stop getting that feeling, you're no longer good.
Personally, I just am happy dicking around with programming and never being better than an average programmer. I'm more interested in money and other things. :/
Imposter syndrome is a good sign! It means you have some understanding what "good" actually is. It's the opposite of Dunning-Kruger. You can go forth and slowly learn the stuff you're missing.
Stay humble, but don't forget that you are some good.
Read those articles and take the time to research the parts you don't understand until you really grok it. Read and try to understand good code, take every opportunity to go a little bit deeper into the tools you use (web frameworks, libraries, etc) if they are open-source. Getting better sometimes means knowing more, but mostly it's about not being afraid to dive in.
However, the idea that you can keep up with the output of the computing industry (that employs tens/hundreds? of thousands of people) is an impossibly lost cause.
Instead specialize, while keeping an eye open for large shifts such as GUI, Web, and mobile have been in the past. I would avoid technologies such as php, that do not sufficiently encourage you to do the right thing.
If you aren't familiar with something that you see, look it up. If it looks useful to you, build something with it.
A group of people will always look smarter, more knowledgeable and more accomplished because you will see the acomplishments collectively, and compare them to your own, individual work.
tl;dr - Don't let it get to you, carve out your own niche.
Also, don't sell yourself short. Impostor syndrome is real. Just because everyone in the room is smart doesn't mean that you are not smart. Intellect is not zero sum.
It's possible that you right now today may know somethings that the person who made you feel like your underwater has no idea about.
I always feel like I don't know anything and that's a good thing, it keeps this subject interesting.
How can it work?How does it work?How it should work?
And the most important thing:
Avoid involving yourself into code that is a mess before knowing how it should be written in the first place.
Also, if you're into OOP, think about access modifiers as:
private - if it's called from somewhere it has to be only in this class... (or im gonna slap someone!)
protected - only this class and its child classes...
public - does this really has to be part of an interface?
Once you start thinking this way you know you're on the right track.
...and read a lot. :)
Sometimes, folks who think they know everything just don't know how little they know. Some of your smartest people sound not terribly confident because they know the limits of what they know and how many things are unanswered. Sometimes, really talented, amazing people feel like shams and really mediocre people feel like they have conquered everything and are The Bomb.
After that, you also need to find out some kind of objective measure of "good" for x thing. I don't know enough about programming to suggest what that might be for that domain.
That said: what stops you from having an all-hands meeting and saying "Is this REALLY what we want?" If it isn't, it is your business. Change it. Client needs to be able to text you at 8 PM? Client will be assisted in finding a more appropriate service provider. Employee feels that nobody can go home at 6? Employee gets told by his boss "Go home. It will be here tomorrow. There are companies that pull all-nighters every day. This is not one of them."
Also: raise your rates.
Here's my advice from having burned out terribly and repaired it:
Take tomorrow off. Send the email out right now: "Guys, I need a personal day. I'm sure you can handle it." Sleep in. Watch some TV for like half the day. Whatever.
The problem is likely that you've been hill-climbing. What's the next problem and how do I solve it? The hill gets steeper as you go up, but you haven't had the time to find a better path up, or maybe even a different hill. What you'll need to do is take a step back and ask, what's the problem with how we're solving problems, and to do that, you need to hit the pause button on everything. That's the real reason you just took tomorrow off. So after you're done with TV...
Part of your job is to create sustainability. Working like crazy just isn't sustainable and if you burn out, you're not likely to be the only one. Fuck toughness; it's not even a thing. And fuck the superheroics, because people just don't scale. You're not trying to lift a huge mountain yourself or even with a couple of your buddies; you're trying to build an organization that will systematically take apart the mountain and ship it off in modular containers. How do you turn "I need to make 1000 decisions today!" into that?
1. Delegation. Make a list: why does your phone blow up all day? "People need me to make decisions." What kind of decisions? "Feature decisions, customer-support decisions, technical decisions..." How can you delegate each of those? "Well, I can make Jill my lead engineer and direct technical..." You get it. Actually, just read this: http://sivers.org/delegate. You probably think only you can make the decisions. You're probably wrong and people will surprise you with their ability to take this stuff on, especially with your guidance. And if they can't, fire them (seriously, this isn't optional).
2. Operationalization. With delegation comes operationalization. You always have to be careful with process, but you also need to create it. When a new problem comes up, don't just solve it. Create a process for solving it and then apply it. This doesn't have to be the all-singing, all-dancing Ultimate Process (TM); it just has to be a way to solve this particular problem for the next, say, couple of months. "How do we structure customer meetings?" "When do we give them updates?" "How do we structure projects?" What's nice about process is that it applies DRY to your thinking; the process guides your (and everyone else's) decisions so your brain doesn't have to.
3. Brutality. This is the hard one. A small company needs focus. Focus is at, like, the top of the list for attributes you're after. So you need to look carefully at the portfolio of stuff you're doing and ask, "Do we really need to be doing this? Is it essential to our existence?" You (and whoever else really has to be in this conversation) need to answer it without blinking. It's hard to turn down clients, or cool ideas, or whatever, but you have to, because there will always, always be more stuff to do than you can plausibly handle. So you have to cut out all of that stuff, and you need to do it brutally and unflinchingly. "We're not doing that." Once you kill all the extraneous projects, even the ones that are making you money or publicity or whatever, you'll feel so much better.
4. Expectation-setting. Your developers want to work really hard, but that's actually not as great as you think it is. There's a tendency for employees in a small company to match the culture around them, especially when those employees are young. (I'm pretty sure that's where my twenties went.) But it doesn't make them magical animals; they'll burn out too. It's your job to create the environment of sustainability. That starts with your client relationships and moves down into your development schedule, your individual expectations for work hours, etc. You need to make the expectations explicit. Never ever (ever!) say "whatever it takes" and don't allow your employees to say; say, "here's what we can do", where "what we can do" fits into a reasonable schedule with reasonable hours. Will you lose some deals? Of course.
5. Planning. "um we have 8 pages left to design for tomorrow, nobody is going anywhere" is the opposite of planning. How did you get here? Well, you took on work without planning for it. That's going to cause you all kinds of stress, because it's crazy and humans can't work that way. Planning would have allowed you to say, like two weeks ago, "well, we're not going to make that deadline, so let's talk to the client and push that out." But instead, it's the day before it's due and you're fucked. So the first thing you do, on Tuesday when you're back is get a nice solid list of your existing commitments and see if they fit in a schedule. They won't, so then you'll have to reorganize some stuff and have some tough conversations about what to cut or push back or outsource or whatever. But holy shit will you feel better when you have. Then create a planning process going forward.
6. Supply and demand. Do you have too many clients for you to handle? Charge more. Seriously. The work will select itself for more value for you. If people keep wanting to pay, keep raising your price until they don't. You'll have less work and at least as much money.
Whatever you do, don't say, "let's just get through this last couple of things and then we'll be in the clear". You should know by now that's wishful thinking, and wishful thinking is, frankly, what got you into this mess in the first place. You need to take responsibility now and reorganize your team and process for sustainability.
I honestly thought I was super tough and I can take this on. I actually really just want to kill myself.
First, you are super tough and this 'Tell HN' is proof of that. When you hit your absolute limit, you reached out for help. That is amazing and everyone here should be proud of you.
Second, if the anxiety is so severe that you want to kill yourself, you have a choice. You can keep doing the same thing you are doing now. Or, you can make big changes. If you keep doing the same thing you are doing, unfortunately, this is only going to get worse. If you want to fix this, you need to make some big changes.
Other commenters have suggested some good changes already. I encourage you to follow their advice. However, my email address is in my profile. If you need someone to talk to, please use it. I can even send you my phone number, or my Skype ID so that if you ever need a friendly voice that likely doesn't know you and who will never judge you, you can reach out. Alternately, go check out http://www.7cupsoftea.com/.
I've felt this exact same way, where I was so anxious that my own death felt like the only way out. You're going through something horrible and posting here represents a herculean effort.
Now, this is an ugly topic to bring up and I don't expect you to answer this on a public forum, but do you have a plan for how and when you will harm yourself? If you do, this is a medical emergency. Please take steps to protect yourself. Unfortunately, in most places, if you tell a medical professional that you have a plan, you are immediately committed for observation. So, be careful, but also take extraordinary steps to care for yourself.
I'm sorry that I don't have a solution. The best I can offer is my support. Use my email address if you need it.
First off, you CAN leave the business you started if you're getting burned out. Second off, I would try to pinpoint why you dislike working on your company. Does the problem not interest you? You keep referring to everything you are doing as 'work' and paint your coworkers / cofounders as your jailors. If you're not interested in solving that problem, you need to get out or you will bring the company down with you.
Now, you have to ask yourself if you dislike working in GENERAL. That may be a possibility and if you still want to have the dream lifestyle you've always wanted, I would look into freelancing part-time or starting a small lifestyle business that pays your bills and then some but doesn't require much effort.
If you want to fix your current situation/ burnout, try googling around for advice - http://www.businessweek.com/articles/2012-04-12/how-to-avoid... - and set expectations with your team on the hours you are available as well. If you just want out, then what's stopping you from getting out and starting over. You can't be passive aggressive about this; it's going to be awful if you stick around, don't deliver, don't show enthusiasm, and aren't willing to fix it and it's going to be awful when you have to tell everyone you're leaving. Starting a company takes more stomach than picking between these 2 decisions and you've already done that so either of these should be a cake walk in comparison!
It's your company, if you want to leave on time that is your prerogative, me I'd go pull the master breaker and shout "home time, fuck off" ;).
You sound like someone rapidly approaching burn out, you need to give yourself some time away from a screen to try and get some perspective on what you are doing.
Congratulations are in order. You have crossed a threshold that you will most likely not understand the full importance of until much later in your life. That threshold is named "Your limits". Crossing this threshold is a privilege reserved for only those worthy of learning and growing.
The long and short of it is this: The world seems to love throwing more work at competent and resourceful people. The problem is that the world is full of work and so the competent and resourceful typically fill up very quickly to the point of overflow and explosion.
You write about freedom. The lesson that you will learn is that freedom starts with saying "no". Once you start saying no you will immediately start to feel the freedom enter your body. It's very surprising how great it feels.
Lets imagine that tomorrow a client calls for a status update on their project and they ask you if it will be done on time? Tell them "No. The project will not be done on time." and see what happens. I can almost guarantee you that you will feel great for the following hours. You won't feel good because someone else didn't get what they wanted. You'll feel good because you were able to tell someone else the truth. Bonus points: if the client is reasonable they will respect you more than before because they now know they can trust you. Afraid your friends and employees won't like to hear it? Bullshit. Start saying "no" and you'll become leader that your friends and employees really need and can respect.
It's true that some people expect the entire universe to never say no to them. The good news is that those people aren't worth having in your life. When one exposes themselves by trying to make you feel guilty you can be please that now you know it and can disassociate yourself. This works in reverse as well: You can choose to associate with people that have the proper respect for your boundaries.
I've been there. I quit my job and started freelancing. Not even 3 months later I'm triple booked and sleeping 3 hours a night. One morning I cracked and my wife found me in the living room beside myself rocking back and forth, visibly shaking. Later on that day I had to make some of the most difficult decisions of my life. Guess what? Once I made the tough calls the liberation began.
As you have probably figured out already, working 14 hours a day is not the answer. Making better decisions is.
You get a text every 5 seconds? Where is it coming from? Clients? Introduce an issue tracking system, or some kind of a queue, so that you can handle those problems asynchronously.
Are those messages immediate bug fix requests? Fixing bugs should eliminate them over time. If they are not, you are not doing it right. Introduce test driven development, rewrite code. Often, most of the bugs are contained in few modules of a program. Localize and rewrite (not fix) them. (Idea source: Code Complete)
Are your colleagues pinging you for approval all the time? Introduce decision making guidelines. Possibly with some examples how they were applied in the past.
Clients asking the same questions repeatedly? Create a FAQ or some Help. I made a policy for myself once to always just answer client requests with links to the Help. If I could find answers in the Help, I linked them, otherwise I added them to the Help first. This teaches clients to first check the Help.One client was asking the same questions all them time. I made that client a custom private help page with a link collection - it helped. Another I printed a paper he could glue over his monitor on the wall because he couldn't find anything on his computer.
For all your other issues: identify what bothers you; keep asking why it is happening and how you could fix it. Fix one problem at a time so it won't recur. You will have loads of free time really soon.
That said, you might as well consider raising your prices as others noted if your current margins can't justify the effort needed to deliver. Otherwise, you just created some new jobs that pay worse than the alternatives. In that case, everyone is loosing and closing your company would make everyone better off. But most likely you could add processes to handle things better. Or cut back on 20% of the features that require most of your time, but deliver least of the value.
Also, you should talk about the problems with your colleagues. You are better off solving them together because it starts to build a culture of solving these problems.
I think the question to be asking is "What steps can I take to transition my responsibilities to other people without negatively affecting the company and my colleagues?" If you can find an answer to that question--hiring someone who you groom to replace you, making the business more institutionalized and self-sustaining so that you don't need 14-hour days, etc.--you'll be closer to getting there.
It's pretty incredible how many people I see who start their own companies hoping for freedom, and find the opposite. Responsibility often means less freedom, and having clients and employees beholden to you means more responsibility. In some ways, being employed can mean being more free. There was a great article on HN recently pointing out that the true level of freedom for entrepreneurs is likely to be found not at founding your own company, but specifically at founding your own moderately successful company--once great success comes, you have much more responsibility.
Realistically, I don't think owning a company will give you massively more freedom than being an employee of one. But it does put you in a position to enshrine freedom as a goal for everyone in the company, employees and owners alike. Economic necessity will mean absolute freedom is never possible. But in my experience, it's very possible to have good work/life balance, flexible hours, and a fun workplace so long as the leadership is on board.
You might also consider asking whether you're setting the right expectations with your clients. If you're constantly making promises that force you to work 14-hour days and always be in crisis mode, perhaps that could be adjusted.
The way out is through. A smattering of ideas:
- Take some time away, even if just a day. Yes, I know you can't afford to: do it anyway, to get some perspective and distance. If you want to hurry up, you must first slow down.  Don't forget to get a good night's sleep, too.
- Fire the clients that create the most stress or who are questionably profitable. Take a loss (in profit and/or reputation) if you have to. The first thing to do when you're in a hole is stop digging. (As suggested by others: drastically raising your prices is also a good way to separate wheat from chaff.)
- Don't shoulder it all yourself. Get whatever outside help you can from friends and family, and most importantly, be open with your employees about your circumstance. If you're upfront about where you're at, I think you'll be surprised at their willingness to problem-solve. If not, at least you were straight with them, and you can part ways amicably; if you put on a brave face while bullshitting them, they're much less likely to give you some slack.
Above all, don't forget that perfection is impossible, in your craft or in business, and you will never be able to please everyone, either clients or employees. You've got more spine than you think, or you wouldn't have started this enterprise. Use it, and make the hard decisions you don't want to make. You will hate doing it, but that dread in the pit of your stomach will finally go away.
Set 6 pm as the going-home time for EVERYBODY. If something is late because of this, that means the company should not have made commitments it can't keep (and you should take a strong interest in not making the same mistake again).
As someone said, don't answer the phone past a certain time. Most phones have some kind of do-not-interrupt mode. Use that. If people have an emergency, at the very least they can call and leave voicemail.
How about bringing a refrigerator and some beers into the office? Lead by example. If you're drinking beer at 2 pm, that tells everyone else this is the kind of startup where drinking beers at 2 pm is OK. People who are too uptight to deal with that will leave: let them.
It's _your_ startup. Run it the way _you_ think is best. What's stopping you?
"Right now I'm working 14 hour days and everyone gets mad when someone tries to leave while the others are working. There is no FREEDOM. The whole point of this venture WAS FREEDOM. Beers at 2pm? Sure! Not "um we have 8 pages left to design for tomorrow, nobody is going anywhere" says one of the developers."
is caused by this:
"I don't have the spine to delay my clients or deliver anything less than perfect and it's breaking me."
YOU set the tone for the company, and the pace of work, by managing the deadlines. If your style of management is just to roll over for every client, make ridiculous promises, then foist that onto your programmers, of course they will respond in the manner above. Because you have set the expectation that it is feasible to deliver, and that this is how things are done.
If you want a more relaxed environment, blow the deadlines out by double, THEN start setting expectations for work lower. Organise a company day off where you all go off go-karting or something - no exceptions. But don't do this in the face of deadlines, or you'll just look completely out of touch, and put everyone else under more stress.
Go to work at 10, say a stupid but inspiring quote of the day.
Go to lunch at 12. Then hit the course at 3.
That's how you do it. In other words: Delegate.
The job at hand isn't killing you, the anxiety is (probably)
There is some excellent advice in this thread. I am just chiming in to tell you to have hope.
Right now, this feels like the darkest point of your life. But there is a bright side. Because your problem boils down to this: too many people want to pay you money.
And it's really a problem. It's made your life miserable. For a couple of months I briefly had this same problem. It doesn't sound like one, but it is.
I did what this thread is telling you to do:
1. I raised rates.2. I eliminated work and clients that weren't serving my goals3. I delegated work I could outsource4. I made processes so much work could be handled automatically.
Before: Lots of money, horrendous stress, no time
After: Quite a bit of money, almost no stress, complete freedom of time
(I chose to eliminate most consulting, which is why my income went down. It sounds like your income will actually go up)
I couldn't be happier with choosing to turn things around. It's totally achievable. You can have your cake and eat it too. Your business will switch from a burden to something that actually does liberate you.
There are several substantial responses. Read through them, act on them. Good luck!
(And one comment highlighted something I want to add on: if you've actually thought about killing yourself, and have made a plan seek help. Trust me, it all gets better.)
But if you are beyond that point, and it sounds like you are, just get out. Take your co-founders out for a beer and give them straight and honest talk. Some might get disappointed, but more likely they will be sympathetic. Even if they are not, it's their problem. While I understand the pressure, you mustn't sacrifice your health for other peoples opinions.
You emphasize freedom a lot. As you know, this can't be found in an agency setting, as ultimately you are at your clients' beck and call.
If freedom is your top goal, you should aim for independent, freelancing / consultancy or potentially becoming a micro ISV.
A possible solution could be to withdraw from day-to-day management, and act as a part-time, possibly remote freelancer for your own company. Doing what it is you like to do for perhaps 10-20 hrs pr. week.
Your co-founders may or may not accept that, but it's an out that could work decently for both parties.
Don't leave. Write down your problems, and logically develop solutions to work on solving each of them. It sounds like you're in charge of your company. If so, change things up so where y'all can work together to deliver a successful product without killing each-other. If there is too much work, take on less, and plan better.
If anxiety is an issue, there are many anti-anxiety drugs that you can use to help control it (see /r/nootropics and/or a psychiatrist). Anxiety issues can affect your perception in many ways, and they're often invisible, which is what makes things seem so difficult.
Also, you may need to sit down and figure out exactly what you want out of life, then align the rest of your goals and plans with that. Getting a good life balance can be tremendously helpful in these situations.
If you still feel like you need to leave, then do it. People can likely tell when you're not happy. If you're convincing enough to get them all onboard , your shitty attitude is also probably pretty convincing in making them jump ship. Assuming that you still want this to succeed, exit gracefully if you have to.
If that doesn't work for your co-workers, you fundamentally have an unsustainable company, which is no more your fault than theirs.
When clients and your work make a claim for your personal time, you need to put a stake in the ground - directly or indirectly by not responding outside working hours.
It also sounds like you may have a problem with your planning and workflow, if you've got e-mails and texts coming your way like a hailstorm. Since you're a founder, you're fortunately in a position to dictate how communication and project management works. Because no one deserves a flurry of e-mails and texts.
- If you're forced to be working 14 hour days, you're doing it wrong. You need to hire people. Raise money. If you're so busy that you're working 14 hour days, I'm pretty sure some investor would be willing to put some money in. Sounds promising to me.
- You may be working on the wrong stuff. The things a founder should be doing on a day-to-day basis at a 2-person company is different than the things they should be doing at a 10 person, 20 person, etc. company. Maybe you can hire someone to handle some of the things you're currently hating about your job, and you can focus more on hiring, or product design, or whatever.
Bottom line, if you're hating what you're doing, either you're doing it wrong, or you shouldn't be doing it. Trust your gut. Life is too short.
What you need is a long vacation. I would recommend you to find the right sub-ordinates/partners to take your place for the time being and plan a 2-3 week trip to a place where you can relax. :)
The whole point of building a company is that different people can do what they are best at and solve a problem. All members of an organization are a cogs in the wheel. They all need to move together to get things done smoothly. Being an entrepreneur has a lot of pressure but when you already have a company set up, with employees, with business people etc, you should focus on building strategies. Delegate more, hire the right people, apply the right management techniques which suit your work culture. It's all about having the right people under you so that you can just lead the company in the right direction.
Trust me, a vacation will have a big influence on you right now and give you a different perspective too :)
Take care and don't take any rash decisions.
"Beers at 2pm? Sure!"
You may want to recalibrate your expectations. I mean, this sounds a lot like you want your cake and to eat it too. What do you consider decent money? If you want to do whatever you want whenever and have beers at 2, you may have to settle for a considerably smaller income than you consider "decent".
1. Check out this book: http://www.amazon.com/gp/product/B004IYISQW/ref=oh_d__o00_de... In a nutshell it talks about how you should not sell custom services, but instead build and document a repeatable process that can be executed without you.
2.Be picky with your clients. It's very tempting to take on as many clients as possible. However, some clients are inherently worth more: They are easier to deal with (no support needed), they pay more, or they are repeat business. Focus on these clients and get rid of the others.
Hope that helps. Good luck.
- Loose the clients that are problematic. Keep the good clients. Those that pay well, help you learn, and recommend you.
- Also, force people to follow a schedule. Don't allow people to work more than 40 hours a week. Your business should be sustainable. 14 hours a day is unsustainable and hurts the business. It is already burning you out.
I've worked in a similar environment and even though there has been a lot of research of the dires and productivity loss of exceeding the 40hr work week, we still push ourselves. If you feel this way so does some members of your team probably. The team loses if you all don't take a breather or lighten your load. I don't know the best route - hiring more employees, take less customers, under promise and over deliver on timetables, charge more, etc but a conversation with you partner may help.
Google some of the research done on exceeding 40hr wrk weeks and maybe you can find some better direction.
You can get through this. Best of luck.
But, let's say you decide to leave anyway. So what. It sounds like you are reselling labor services? (eg. coding?) If so, that's a terrible business and I wouldn't hesitate to encourage you to move on.
Your friends will understand or they aren't really your friends. For you business partners, well that's business. You adapt and move on. A few ways of managing the exit:
Give them plenty of lead time to find someone to replace your role.
Say you want to stop fighting fires and focus on the long term strategy of the company as eg chairman. Cut back your hours, go live your bohemian lifestyle and email in your wise prognostications.
If you want a better way of selling labor services, one of the best ways I've seen is to manage your workforce like a recruiting company. Embed your coders in your customer's companies, on fixed term contracts. I've seen this model work really well. It's the easiest way of scaling a coder services based company.
A book you might find useful is 'The Business Side of Creativity': http://books.wwnorton.com/books/detail.aspx?ID=4294978649
We were mostly working with SME's and trying to grow the company to a point where could score some bigger clients, on several occasions we very nearly did. We got behind in our taxes when some large projects got cancelled and ended up taking out a bank loan secured against ourselves personally. The quality of our work deteriorated as we took on anything and everything to make ends meet, to pay our expanding team, hoping our big break was just around the corner.
When I finally called it quits we were about 60k in debt, shared between three partners. Telling our employees we had to let them go was hard, but I was surprised at how well most of them took it (they actually felt bad for me), to my relief all of them found employment again within a few weeks. I kept on working with my clients myself by working in evenings and weekends finishing everything off, it took about a year to shut down entirely, but every month it got a little easier. Our clients expressed some annoyance but they were mostly understanding. A couple even said that they didn't know where they could find another agency as good to work with as us, which was heartening.
The successful agencies I have witnessed experiencing fast growth never had any small/medium clients; their founders worked for a larger company and took some big clients with them, or they worked client side and their previous employer became their first big client. Either way their initial clients were huge and there was very little of the painful bootstrapping I experienced, so if you don't have big clients now expect a tough slog (or a lucky break of course, but counting on that pretty much gambling with your own time)
The whole experience cost me about 20k in debt and maybe 200k in lost earnings over what I would have been making had I been freelancing instead. It's been a year and a half and I've managed to pay back my debts and finally get a mortgage on a house, that, had I not started a company I could very nearly have bought outright by now. The time I should have spent with my kids is lost (I fooled myself that I was doing it for them, but in retrospect really it was more of a 'we've come this far...' mentality) but I'm trying to make it up to them now as best I can.
My advice to you would be to freelance, as a programmer you can work all around the world, remotely if you please and get paid decent money (We all know guys who only work part the year, and spend the rest travelling, others who work remotely from Bali or something). I'm freelancing now and I feel more free than I ever did running a company.
I think you should reunite with your partners and express your feelings. Some can afford to work +14h a day while others can't, and they need to understand.
Again, driving a company may can't be easy but it can't be a torture too.
I think one of his answers might help you (http://tema.livejournal.com/1401690.html, 4th question). Here's a rough translation.
"Q: Me and my husband own a chain of restaurants we have invested a lot of energy and effort into. We want to travel, and the question is, how can we leave our business unsupervised for several weeks? If we go away on vacation, we'll be worried all the time, phones in our hands. You travel a lot. How do you both develop your business, and travel?
A: I've spent a lot of time worrying about this too. But then I noticed, that if I'm away from the office for some reason, work doesn't suddenly stop. And so I started traveling. There are no more colleagues, who are unable to work without my supervision. Everyone knows, it doesn't matter where I am, because work goes on. My advice is - build your life to your comfort. Others will accept it as a fact. If not the current ones, then the new employees will. And it's important to keep working. Distance is not relevant, but presence is. Coordinating projects is presence."
I took away that employees know what to do. Being present via project coordination, and being chained to your office chair are not the same thing. Delegate more (most) tasks, and go travel.
Just imagine someone else in the team leaving and see what are the steps you will take to replace them. It will be easy to move on
This entire story says to me that you are a selfless person that wishes to be more selfish. Be selfish. It's cathartic. You don't have to go overboard, but buy yourself pizza and don't share. Go to a movie and not invite anyone. Baby steps.
Confide in your business partner, and discuss with them the most graceful way for you to exit.
You're not doing anyone a service by staying. It's bad for you, and for the business.
For your next venture, consider your goal of maximizing your free-time, and focus on endeavors that will give you that. Personally I know I'll never be a Steve Jobs, but I can have a beer at 2pm! :)
to reach your goal (if its still your goal) you need definitely need a new recipe, probably the complete opposite.
my recommendation: (it's not much, but it's what i do)
read http://en.m.wikipedia.org/wiki/The_Ballad_of_Halo_Jones it's a comic by allan moore about "getting out" - its a good book and a good book is never wasted
second: quit and travel alone (or if you have wive and kids, take them wih you, it's less expensive then it sounds) for a few months, without your phone. reinvent yourself when you come back. i run an agency, i do this every year (including reading the comic).
My email address is in my profile.
I'm in a similar position myself. I don't think this should be a factor in your decision making. They're adults and they made a choice.
You may feel like you let them down, but as I said they're adults, they made a choice. It even sounds like they wont lose their jobs if you quit, and if they're no longer interested in working there without you, they should have time to find other positions. Even if that wasn't the case, it shouldn't be a factor for you.
They may hate you, but they'll get over it.
So, if you need to quit for your mental well being, do it. If you feel it's worth trying other things first, go for it, but there's nothing to be ashamed for here.
Ditching everything vs Burning out - classic balancing act of a startup innit
Running full pelt at a marathon only to hit 2 miles exhausted - time for tortoise to take over - he actually makes it!
My advice is to be honest, with your self, your co founders, employees and customers. Tell them you cannot meet the deadlines and stop working so much.
No one is angry when you move the deadline up front, only when you do not tell anyone you cannot meet it.
And remember that if they matter they wont mind and if they mind they dont matter.
There are way cool business models out there requiring far less work with far higher pay.
Earn with no-calls enjoy your freedom. You deserve it man, it's your right and your universe.
...Which is worse than hating yourself?
> I just want to earn decent money and be able to do what I want to do whenever during the day
So get a horrible well-paying job at night.
> If I bail now, every word I said, anything I did, will mean nothing
Sometimes the truth is that you fucked up big time. What are you going to do, continue to live a lie because you can't handle the idea of your friends realizing you screwed up?
Have a heart to heart talk with them all and tell them how you feel. They won't be happy. But it'll be better than you just not showing up for work one day. Make a plan to get out over time so you don't screw them over further.
I know how exactly you felt and felt the same way for several years, working 7 days a week, 12-14 hour days between getting/running/doing the work of the business.
The only thing that changed is how I got better at managing work, and then having the work managed.
All I can say is in my case, I did not realize I had a lot of learning to do, and that's where a lot of time goes. I started when I was 18, now I'm in my early 30's. There is a way out. Seek advice from others who have done and come through what you're doing. If you take half baked advice from half experienced outcomes, you will definitely be risking more not just with everything in front of you but your confidence in the future. If you feel overwhelmed, it's probably because you have sufficient growth opportunities around you and a feeling of paralysis of doing any of them justice. You'll have to pick.
My experience was to focus on learning how to make money and build long term client relationships that would allow me to grow. I now consult startups, projects and high growth group.
Freedom is something you build. Freedom always has a cost. There is always a price to be paid for getting it. You don't own a business until it runs without you. Until then, you own a job that is hard to quit because you are increasingly invested in it in every way.
Freedom for me, is also time, and a capacity to create and pursue interests as much as the work I do. In your 20's, something happens called becoming well rounded. learning to keep your increasingly efficiently ability to create into your 30's while making sure you aren't being left behind is a delicate balance, but it can be done. To me, wealth is time and capacity to create as I would like.
I'm now consulting part time, and making as much, or likely more than I've ever made. The lame adage working smarter vs working harder is not completely true, its all about knowing strategically where to double down your efforts, and learning the difference between a good dollar earned and a bad dollar earned.
All isn't as bad or as good as it seems. The best advice I received from a mentor was to never get too high or too low, savour each lesson and accomplishment, shut up, and move on, because the great times don't last, just like the horrible ones as long as I keep moving.
If you'd like to talk more, I'm happy to share my story of having run a similar course to you for almost 10 years and maybe you can find something there. Email is in my profile.
My story and experience is rather extreme and it can feel horrible to not have a soul to talk to, or to understand you.. when being understood can feel like a luxury. I can't say I know everything you're going through, but there is always a way to help use tech, systems and processes to make a business work for you, especially if you have cash flow.
Everything will be ok, you can do it, you will get better, things get better. Things don't get better, we just get better at handling them -- it's the best growth imaginable. You can get things running without you and remain a value contributor.
Edit: Downvote? I'm serious about this. Trading is the only activity I know that gives you
2) no boss to report to
3) no employees to take care of
4) location freedom (e.g. can be done from anywhere)
5) relatively low starting costs
6) low starting risk (you don't need to work 2+ years to figure out if your company will actually make money)
7) a market you know will always be there
8) an ability to be totally hands off with algorithmic trading
Most people think this is a pipe dream perhaps that explains the downvotes. It's not. I live off semi-algorithmic Forex trading and know many others who do too.
I knew I wanted to make a free last.fm but with no code and a name I started it, crowdfunded the domain and began code a few fays later.
5 years in, still going, lots of users, well supported by the apps that might support it.
An app to sell anything. Inspired by the Octopus payment system in Hong Kong, I've reasoned that technically, why can you buy or sell anything with your mobile device.
I kind of flippantly said (something along the lines of) "I should do a comic about living with my medical condition. No, it should really be just a comic about my life with a main character kind of like Mae West, only opposite. Say, Mae East." And my son rebutted "November West."
I did an initial drawing of a comic that weekend. I bought the domain name six months later. I then spent a few years trying to flesh out what to put into the comic. (I was working for BigCo and it took up most of my mental landscape, so all my initial comic ideas sounded like Dilbert meets The Nightmare Before Christmas or something really macabre like that. I was afraid I would get fired if my employer discovered it and then I would lose my audience for no longer having a job to bitch about acridly.)
I eventually did get it off to a very rocky start. It's stalled currently. So not exactly a wild success story at the moment but I have gotten better feedback on it than other projects I launched in the past. I don't think it's dead yet but I don't yet have much to show.
Where they target "magento developers"? Then they were not specialising much - try targeting 500 digital agencies in the USA and offer to sub contract their maintenance work and updates (ie keep old clients happy)
Where they targeting industries? Such as ecommerce for hair products? So start by identifying all the hair websites out there, collate a report on the quality of ecommerce, security vulnerabilities, then cold call to sell that and then follow with your services.
Expand into products - magento addons, etc. if these guys are any good they will have three internally used anyway
Do not hire lead development companies - never heard anything good of them.
Do not hire a bizdev person till the CEO can do the job themselves so knows what to ask for.
Recommending reading >
Second of all, a common issue with implementing peer-to-peer networks is NAT traversal. Because the internet has more devices than it does IPv4 space, it's segmented into siloed networks (NATs), each with it's own IP space. So connecting two peers is nontrivial, because the public address of one might mean something totally different to another. To accomplish peer to peer tunneling, you need some kind of intermediary to coordinate the addressing. Because of that, many p2p applications require changes to router/firewall rules to solve the addressing problem. Obviously this is suboptimal, especially on mobile. But recently, Google has made a lot of strides in this area with it's technology underlying Google Talk and WebRTC. This tech, encapsulated in a library called libjingle, relies on the STUN and TURN protocols for intermediary servers to coordinate addressing between peers. For 92% of devices on the Internet, the STUN servers are able to coordinate addressing between peers without having to relay any of the data. For the other 8%, TURN servers sit in between the peers and relay data. This is the technology that enables Google Talk and WebRTC to be so scalable. When 92% of bandwidth can be offloaded to peers, there's much less of a need for central servers and bandwidth.
Now consider that any p2p IP tunnel can be opened between two devices connected to the Internet, using this STUN/TURN protocol via something like libjingle. (See socialvpn.org for an example.) This tunnel can be a generic transport, or it can act as a UDP proxy (I believe this is how Hola! Chrome extension works).
You now have the ability to create a p2p overlay network, with direct tunnels between peers, on top of any Internet or generic network of devices. The key component is libjingle along with STUN and TURN servers, which enable direct p2p addressing.
My hypothesis is that OpenGarden used some combination of all these technologies. I think the reason they're quiet about how they accomplished it is because, 1) Android probably doesn't work as well as iOS in sparse offline areas (not enough Bluetooth parity), and 2) they are relying to some extent on central servers, for the TURN/STUN protocol.
That's just my hypothesis, and I've never actually implemented anything with this technology, but rather have only read about it. If someone wants to correct me on any number of the points I'm sure I got wrong, please do.
I am not familiar with BT protocol so I can't comment on how it is done with BT.
It is so weird that people dont want to hang out with a using drug addict. Haha.
Anyhow, I like to program in Lisp, perl and python. I work at a startup and no one knows I use and I never nod at work. I have been promoted twice since I have been there so I still have it together at work and it is going well.
Thanks for the responses. It makes me feel less isolated aand alone which feels really good right now :)
Like people who take Ritalin for studying
Have a vesting schedule.
Have a buyout clause.
Use an attorney.
Get back to building.
Even amongst the most honest, hard-working, and brotherly partners-- ugly disputes can happen. Worth bearing in mind, for your agreement, a smart shareholder clause to resolve disputes called the "Mexican Shootout".
Full description, read Felix Dennis, The Joys and Perils of Partnership, pg.175
Europe - if I didn't have to worry about work, Paris. The culture, the food, the history. If I was being employed (tech) - Munich or Stockholm - a bit of the above, green, access to nature, good public transport, though less multicultural (though Stockholm is said to have a vibrant immigrant population, Munich is a big village).
If I were you I'd draw GitHub's attention to it, and let their legal department dispute the DMCA takedown notice.
Can they win court? Are they right? Are they being jerks? Are they bullies? Another set of questions entirely.
The most exciting part of thermostat installation is standards are so handy that there must be dozens of them.
My advice is take a pix of the wiring before you start. No pondering what connected to what if you get confused later. This is also handy with advanced car work.
In addition to the pix, draw a map of how each wire connects to what old terminal and all that. Not necessarily useful as an end product but it does kind of force the issue of studying the wiring.
Also pull the wire out of the wall a little, and tape a clothes hanger or something like that to the wire. That way it can't fall into the wall, which can be quite a puzzle to solve even with the gear to fix it.
Thermostat wiring is much like the old RS-232 standard in that every pin is supposed to be indestructible and can't be damaged by shorting to any other pin at any time, and of course Chinese value engineering means thats not always the case. Shutting the furnace off would probably be wise, even if in theory its impossible to damage anything by a momentary short ckt.
WRT "or called a professional" note that the profit margin on sales will motivate them to not be interested in installing your thermostat, rather than installing their thermostat, and they might not sell a nest. Also a pro HVAC guy makes money installing major machinery, so unless they're hurting for work, getting a guy out there might not be easy/cheap.
(edited to add I wrote from a EE perspective WRT wiring and protocols and pinouts, and one thing I overlooked is the decorative aspect of if you're changing from a giant rectangular to small round thermostat you'll have some painting, maybe even screw hole filling, maybe even hold patching to do, and frankly I donno if HVAC guys will do that kind of thing. Every job an adventure...)
Draw a pipe on the screen. First pipe is short and straight. They get longer and have more curves. "Drop" a ball into the pipe. The user tilts their phone clockwise or anti-clockwise to guide the ball through the pipe. That tilting is the only control the user has. Each pipe should be short enough to create the "I nearly did that; just one more go" effect.
I've built one using an old nokia that supports AT commands.
Pretty fun stuff and no soldering required. Next up I'll try adding a camera and send MMS messages through the mobile phone with photos when motion is detected.
Flickr creative commons image search engine
Deal alerter for craigslist
IFTTT on a scale relevant to you
http://up-for-grabs.net/ has a list of projects with issues/tasks that are easy for new contributors to pick up.
I have been working an a side project recently. The guts of the code is very simple and done already. Getting all the surrounding framework to serve it up as a web page and do input validation is taking forever (mainly because I only get an hour or two at a time to work on it). Its all the "polish" that takes the time. So something command line based would be easier.
For an example of this you can check out our Discourse instance: http://forums.hummingbird.me/ (ads may not load on the initial pageview because of a timing bug I have not fixed yet, but try clicking somewhere and back to the homepage).
This is the source code: https://github.com/vikhyat/discourse-bsa/blob/master/assets/... (Ember.js)
There are probably technical (though not insurmountable) reasons for this, i.e. if the ads are content based Google has to be able to scrape the content to know which keywords to match.
Who wants this eyesore on their websites anyway?
I'm surprised the AdSense team is still toying around with amateur designs at the expense of the whole AdSense programme. I've seen the past works of the designers on the AdSense team and I'm not impressed. Plus it's quite naive to think that one design will fit all websites. Why can't AdSense, like other ad and affiliate networks, just open up an API so publishers themselves can be in charge of how their ads look and behave?
Email me at email@example.com if you want to talk details.
My product (http://grabaperch.com) is a CMS - I guess a competitor to WordPress, although we're certainly not trying to be WordPress. We're PHP and MySQL because that's what our target audience has available. We would not have been as successful as we have been had we written it in Python, Node, or Ruby or anything else.
The content editors using the CMS, and the website users do not care what the software is written in. Most of our actual customers (web designers and front-end developers building client sites) do not care what the software is written in as long as we make it easy for them to get it installed.
Successful with a CMS product doesn't have to mean that you kill off the competition. There is plenty of space out there for products targeting a bit of a niche, or just those who want an alternative for whatever reason. If you can figure out what that reason is, what problem isn't being solved by the main players, it's possible to build a product that serves it.
Also, many existing webhosting accounts come with an option to install Wordpress on the account. Wordpress even has its own self-hosted service. Many of the alternatives i've seen, in terms of frameworks and CMS software, haven't been able to replicate the relative painlessness of Wordpress' model.
A contender would, first, have to deal with the network effect of Wordpress which is considerable, but also (if it's written in a language other than PHP) the network effect of PHP. Since the UX in Wordpress generally works pretty well, switching to another CMS would be a difficult sell to the general user (why switch from something that's easy and works and you can hit a developer for by throwing a rock out of the window?) meanwhile most of what is terrible about Wordpress is only apparent to coders, who frankly don't really matter in this dicussion, since they're probably using Octopress or something anyway.
From a UX standpoint, it's easy to use, install plugins, find themes, and get help. If you spend money on a commercial theme, you can be assured the platform is going to support it for years even if you don't have all the cool new features. It runs on PHP, from a $2/mo shared hosting account to WordPress VIP.
The community is great. WordCamps cover a variety of technical and non-technical topics. Most people are welcoming. It's just a great bunch.
Could you create a CMS with a cleaner codebase? Easily. And the people who make WordPress want to, too.
The basic idea is to share things that satisfy one's intellectual curiosity. If you share links like that, or contribute comments that help others intellectual curiosity you will find lots of fellow souls.
And that is I guess the answer to your second part - if you want to build the next Google you need fellow souls - talented people who also fit in with your brain. You can find them here, and even discuss the finer points of arranging servers or compensation
What I would avoid doing is shouting "who wants to join my startup?"
Got an idea? Great - make a prototype and a bazillion of us will tear it down for free to help make it better. One or two might jump on board. apart from that you will just make a few friends, gain some respect and have us cheering you on from the sidelines.
Yes, PHP sucks, but an easy-to-use, well-tested, flexible platform > a brand new ruby on rails framework.
A ton of budding 'techpreneurs' whose $family_relative_or_friend 'knows PHP, therefore can wrangle Wordpress' could get them a site up and running when they 'come over to their house for some snacks and chips over a weekend'
"Why aren't there any contenders?" Those entrepreneurs are now successful businessmen who have enough budget to keep being on Wordpress, because 'it just worked'. That battlecry spreads like wildfire for a large amount of time, hence "production-ready/polished" comes into mind.
"Clearly WordPress thrives on its massive community, and maybe its just a matter of time until a worthy opponent emerges to gain the necessary momentum." Yes, empires rise and fall. It won't be sudden, like any piece of software, Wordpress will also slowly lose relevance in the course of time depending on the amount of people working on it.
Wordpress allows to build very customized web portals at close to zero cost.Zillions of free and pre-existing plugins helps.
If something really custom needs to be created - there are plethora of el-cheapo programmers bidding to do Wordpress stuff for you.
Now, if you design a "better" (I'm not sure what that means, but you seem to know) CMS, would you be able to take away WP's market share? Probably yes. Does it matter what language the product is written in? Not directly. It only helps you indirectly in that the technology may be able to help you build a better product faster, or allow for new features that aren't easily implemented with PHP.
Why hasn't somebody done this? My personal guess is because it would take a lot of time (=money). Wordpress has gazillions of features and is very polished.
When you do look for another job, be up front with the company you're talking to. You may want to interview for a Senior dev position, but tell the recruiter that you want to parlay your experience into being a manager or lead. At my last company, we hired a couple of folks like this, and they almost all turned out to be good managers and leaders.
You should emphasize any leadership experience on your resume and LinkedIn. If you list yourself as a "Full-stack Dev", that is probably all you will get calls about. Call yourself "Lead Dev".
It could be risky to mention something like "Interest in management positions" on LinkedIn - depends on who is paying attention to your profile. You could also do some SEO type work on your profile, adding words that recruiters might use to find managers. As an example, recruiters might get a request for a manager that knows about Agile or Scrum. Sneaking in methodology buzzwords could help you appear in those searches, though I'm not sure how likely someone would be to contact you if you didn't give the appearance of someone interested in or capable of managing.
You might be better off being proactive and contacting a recruiter directly to get their suggestions and help you market your background to those types of positions. The resume is a much easier item to tackle since it's private.
If you are looking for a recruiter, I just released part 2 of a 3 part series on working with recruiters. Find part I here http://jobtipsforgeeks.com/2014/06/20/find/ .
Outside of books, http://superherojs.com is another good resource to recommend.
These sites are also helpful: http://choosedevice.com/ http://www.handsetdetection.com/
My picks (with no context): Nexus 5 (straight from Google, use this as the gold standard), LG Optimus Fuel ($30 unlocked at Walmart, runs KitKat but has a tiny screen), Samsung Galaxy S4/5 (whichever is most popular), Samsung Galaxy S3 (still tons of those in the wild), and Kindle Fire 7" (covers tablet and FireOS).
The thing to realize is that being good at technical interviews (as done by the above companies) is a skill unto itself but it is a skill an intelligent person with a comp sci background has the ability to get significantly good at after a 1 to 2 months of disciplined preparation. - I went to a top ranked school myself and had a comp sci degree but was very intimidated by technical interviews until I realized that this was no different than all the other other intellectual hurdles/gauntlets I had successfully navigated up to that point by giving myself time to thoroughly prepare.
Get "Elements of Programming Interviews" and give yourself 2 months to prepare. Start to with "1-month" plan in the book spending at least an hour a day at the very minimum. (I have worked through both Elements of Programming Interviews and Cracking the Coding Interview in their entirety and while both are good, in my experience Elements of Programming Interviews was clearly the better preparation in terms of technical depth, breadth of exposure to the kinds of questions I faced in the full-day interviews, and succinctness of coding solutions)
Get dry-erase paper/notebook or a white-board and work through the problems by hand including the coding (important!). For the first week or two give yourself an honest focused couple of hours to wrestle with a problem before looking at the solution. it is not enough to settle for "I think I know how to solve this" - Actually code up the solution by hand and step through it with some simple cases. This is important and it allows you to develop confidence in your ability to think methodically through a problem as well as giving you an opportunity to develop mental heuristics for how to tackle and test unfamiliar problems. Developing confidence in your ability to think through interview-style problems is every bit as important as exposing yourself to interview-style problems. As you progress, you will be working towards being able to deconstruct a problem and be ready to start coding up a high confidence solution in 15 - 20 minutes.
"Talk to yourself" as you try to solve a problem to simulate explaining your thought process to someone as you go along.
When going through the solutions in the book, do not gloss over a detail you do not understand. Go online and find alternative explanations/references if you don't understand some detail of the solution provided.
After a few weeks of this kind of daily disciplined prep, you should start feeling pretty good and your confidence should start building nicely. Lots of interview questions are variants of each other and once you have enough breadth, you start quickly being able to key into the "type" of question and possible solution approaches almost as soon as you hear it.
Last thing is when you feel ready to start doing interviews, do not interview with your "top choice" first. If you can find someone that has done interviews to give you a mock interview, great! If not, schedule interviews whose outcome you are not as attached to (relatively speaking) first.
Hope that helped.
2.) Work through one of the popular coding interview books .
3.) Practice off-keyboard things like white-boarding and public speaking. Get up in front of your white board and work through a problem like you're teaching a class on the subject.
I recognize that 1 and 2 might feel like gaming the system a bit - they are, but as long as companies continue to practice contrived interviews targeted preparation will naturally follow.
As stated, you don't lack the ability to perform in general, just within the artificial confines of an interview.
The long answer needs more information. Why do you think you suck at technical interviews? How do you know that? If the answer is "because I haven't gotten an offer," what makes you think it was the technical portion of the interview you failed? What parts are you not good at? When do you freeze up? Why do you freeze up?
So dissociate yourself and detach yourself from the process. Others have given you tons of advice on this process. The secret really is to practice. It is hard. But it is doable. Good luck, mate.
One good trick is to take charge of the interview.
There are standard questions the interviewer must ask (every time he does an interview) Try to answer all of those before he gets to ask them. This renders him without things to say. Then you get to ask your own questions.
Change the discussion from "why do we want to hire you?" into "why do I want to be hired by you?" When will I get a raise? when will I get promotion? when will you get to sit where he is sitting? And where will he be at that point? How are ideas treated here? Is one supposes to show initiative or not?
Will you get locked away in an office or will there be other people on the floor? Who do you get to work with? Have him tell me something about your future coworkers.
My favorite one is to just bluntly ask why their product is better than the competitor. I ask that because when it is asked from me I want to be able to answer it precisely the way I'm suppose to.
Show an interest in the interviews, the guy is doing that all day long, is he having fun? Did he see many good candidates? How many interviews will they do for a single job opening? Does he enjoy his work? Don't allow him to just sit there pretending to be interested in your life. Show an interest in who he is, what he does and where he comes from (or she)
You can be empathic about it but working down your list like a robot is equally impressive.
Talk fast but not to fast, keep eye contact but don't gaze.
If their argument 'why you want to work there' is good enough and their product is good enough end the interview before he does, ask if he made up his mind already, when do I start? You don't want to pressure him but you have a lot of other interviews you would rather not have to go to.
You want him to have the impression that you are putting serious work into finding a job - but not to much.
- Practice makes perfect: find someone to give you a mock interview. Do this as often as necessary until you conquer your problem.- Caffeine, adderall, etc, can make you much more anxious. You need to be calm.- Don't feel pressure/rushed, and don't panic. Slow down. If your mind races under pressure, that's completely normal, but it can be controlled.- Its ok to not entirely know the answer. Start by responding with what you do know. Once you begin speaking, the ideas will start flowing. Many technical questions are "loaded". To actually solve the problem in the best way possible, you need way more information than they give you. This will cause your mind to race. Try to qualify your response with your thought process, "if this or this, I'd do this. If something or another, I'd probably do this."- Practice speaking with confidence. Take a deep breath, all the way down into your belly, and then use that air pressure to make your vocal chords "sing". Having a strong vocal tonality will resonate confidence inside your head, and inside theirs. Also, don't be monotone/boring. Find/express energy and enthusiasm without sounding fake or cheesy.
Being nervous for an interview is normal. I've interviewed a lot, and I always get nervous. Its just something you have to deal with. Public speakers and pick up artists (approaching women to ask them out) are two areas that you can find a ton of advice for calming your nerves.
Introverts can have a hard time finding their inner personality. Practice makes perfect. Try to start as many conversations as you can each day. Don't force it, become natural at engaging conversations with other people. This will help all areas of your life, including interviews.
Most people have too much stuff, too much clutter, too many gadgets/clothes/vehicles/appliances/tools, etc. All these things take effort and mental energy to deal with on a day-to-day basis.
The ironic thing about home automation is that it manages stuff by adding yet more stuff to manage. By trying to make stuff smart, you end up adding more points of failure-- more ways for things to get screwed up.
* Recognise the pattern the inhabitants are at home. Turn the heating/ AC on/off accordingly.
Smart lighting. Turn off lights automatically when I watch the movie channel. Don't go all bright when I wake up for a pee in the middle of the night. Learn the pattern of me waking up and turn the lights on accordingly.
Watch my fridge. Nag me when I stocks run low. Better yet, prepare me a shopping list.
I think the reason we haven't seen a blockbuster IoT app is because everyone is still focused on the things, not the people. Or in your case, as a DIYer, you're not thinking about yourself.
So consider what keeps you up at night, and think about the lowest-common-denominator way to solve that via wiring up your home.
If there is a tool which looks at track whether, day(weekend or not), time of day and etc after this things it select best music for me?
I can like or unlike music for my mood and it also learn my listening habit?
It'll be wonderful.
A media mogul named Subhash chandra came up with the idea of "India Cricket League" (similar to English Premier league in English soccer. Lots of young cricketers signed up. When the Indian cricket association realised the money potential of this new tournament, they made declared that no one who participated in ICL would be allowed to participate in Indian national team, owned by India's cricket association. And since its the dream of every Indian boy to be part of national team (big bucks and media exposure), almost all players quit ICL...and teh league was effectively dead.
Moral of the story...How will you get players to play in your league?
Personally, I'm allergic to the word 'Entrepreneur', whenever I hear it I wince. Just say what you're building, plain and simple. I also wouldn't call myself a Web Architect, I don't really understand what that means, it just sounds fancy.
Also consider not giving yourself a title at all. If you really want a title, I'd go with something humble like "a guy who builds stuff on the internet".
For reference, this is my personal site: http://www.davidkatz.me/
Please don't call yourself web architect unless you're involved in W3C standards...
What are you going to be doing for them? How are you going to add value to their business?
If they wanted that value and were actively looking; what job titles would they put into Google?
That's what you want to describe yourself as on a portfolio site.
You can, of course, put whatever the heck you like on your own home page. But if it makes you twitch then maybe stick with web architect for now, and get out there and start building your business. Once you feel you are building a real business you'll be happy to use the word entrepreneur. I suggest you use this as a motivation to get out there and do what you want to do. Let the phrasing on the portfolio/profile site look after itself.
In my mind building a business means more than just having a tax vehicle around your own personal consultation services. A consultation services business probably has other employees. Once you are building a business that is designed to actually create and sell something (whether it be service or product) then be proud to use the word entrepreneur. Till then, stick it up on the fridge as a goal !
--- signed, someone who alternates between writing 'Entrepreneur' and 'Programmer' on the immigration forms each time I travel, depending on whether I'm currently actively building a startup or just living off my consultation services.
I've seen several types of advice. Unfortunately so far I haven't seen an effective one.
- One would be to put calls to action that would encourage participation. This servers as a nudge and a frame for the type of engagement you want to stimulate.
- Another would be to ... create fake engagement to show the users that others do it, thus to lead the flock.
Of course, in my experience, neither of those two worked.
--- related story; can skip it ---
With my team we built a digital marketing advice website on the local web. We take the topics really deep and get controversial on many mainstream topics. Our approach is pretty much unseen in our local market.
Of course, we deliver. The site is on 1st and 2nd places for various keywords on google (this means at times, above wikipedia) and we are even over some local web companies, for keywords for services, that they provide.
Basically we kick ass on local.
YET, people don't comment on our site. So far we have tried few different approaches and none brough definitive result.
And the engagement is high i.e. people read; metrics show people spend time, read, scroll and share. And they share like crazy. We have articles that have almost 1:1 share:read ratio! We rechecked that 12312 times, to be sure that we didn't mess the counters of the share buttons. Not the case. External tools report the same stuff.
And people still don't comment.
It's like a curse. They read, share and do not comment.
So sometimes it is your audience that is tough to engage in specific way. But one must find a way! For his product. For his sanity. For science!
--- end of story ---
My advice is to lead with some fake engagement and then create some sort for gratification for the people to see that is cool to post links and others like it.
But if you find better advice ignore this one. While I gave it to you I still feel sceptical about it's efficiency.
If you then look at your analytics, you will then find that you likely have either an Activation problem or a Retention problem or both.That then tells you the areas of focus in terms of the problem to correct.
Just pick something.
It honestly doesn't matter what, you just have to choose something. There is so much time to be wasted agonizing over whether you have chosen the right framework, tool, platform etc. The best strategy is to just choose something and run with it. Once you learn and feel comfortable in one language/area (for me it was python), you'll be able to transition easier.
Perhaps this strategy will take more time than if you pick the "correct" path now... I really didn't see time as a consideration when I learned. Nevertheless, it's probably better than spending time dillydallying. Good luck!
It's far from done, however, email me (email in profile) and I'd be happy to send you a draft.
Good luck with your journey!
Here is a good link to a project that popped up on HN a while back http://www.bentobox.io , basically pick one of the topics and click toggle what to learn next, and it will show you a sort of progression.
As far as tutorials, just google the technologies name + for beginners or something similar. (there are also links to instructions in the site I posted)
As far as where to go for what it really depends on your end goal and who you're working with.
I.E. for web development, some people swear by Django or Rails or some PHP framework, all depending on their use case and the expertise of the people they're working with.
Figure out what you want to make, research what tool would be best to make it, then learn that tool and the languages/frameworks that compose it.
If you're just looking to make a basic web app, I would recommend using Sinatra (Ruby), Flask (Python), or Express(NodeJS). All provide a very simple configuration to get to the "Hello, world" point, however are extensible enough that you can use them to learn more advanced tools, technologies, etc.
If you want to chat more feel free to shoot me an email at firstname.lastname@example.org
I've been programming for about 20 year so really don't think I realize how difficult it is to pick things up.