Andrew Ng's ML Class - This makes the list because it is incredibly useful. I didn't have much background in the field and this class is a practical survey of ideas. Not a ton of depth, but exposes you to a lot of information gently.
Daphne Koller's PGM Class - This was the most rewarding. I banged my head on a lot of this material, but it was an incredible feeling when things started to click. That I was able to complete this class is a testament to Dr. Koller's excellence as an educator.
Dan Jurafsky's and Christopher Manning's NLP Class - This class was the most fun. I thought the exercises were incredibly well designed. Unlike the first two courses, the exercises were a lot more interesting. For ML and PGM, you mostly know when you have the answer and you are rewarded with 100%. NLP assignments are based on how well your system generalizes, which made me try harder to improve my systems, and helped me enjoy the course.
It's not tech-related, but I have achieved near-fluency in one language in less than a year (Dutch), and I'm currently learning 3-4 others. (Russian, German, French, Italian) I find it very effective and easy to fit in around everyday life.
I would definitely recommend it to anyone else seeking to learn languages.
Functional Programming Principles in Scala (https://www.coursera.org/course/progfun) by Martin Odersky, the inventor of Scala, is also excellent and a great way to learn and start using Scala and functional programming. Be forewarned though, once you get a taste of Scala, you'll have to be dragged kicking and screaming back to using Java :-).
"Compilers" - https://www.coursera.org/course/compilers
(Part 1) https://www.coursera.org/course/crypto(Part 2) https://www.coursera.org/course/crypto2
As the course progresses roughly chronologically (one theme per week) from the formation of the solar system to the present, it introduces the foundations and jargon of the disciplines of astronomy, geology, microbiology, paleontology, botany, ecology etc.
For some reason I never finish courses that are directly relevant to my job. After an 8 or 9 hour day doing tech stuff to make a deadline, spending another 1 or 2 hours a night doing tech stuff to make a deadline starts to feel like more work. I find the general science courses much more interesting.
The Analytics Edge - https://www.edx.org/course/analytics-edge-mitx-15-071x-0
Design of Computer Programs - https://www.udacity.com/course/design-of-computer-programs--...
Justice - https://www.edx.org/course/justice-harvardx-er22-1x-0
If I had more time I would love to go through the bioinformatics specialization on Coursera. They have 2 books and an exercise site (rosalind.info). It looks like great fun.
Presented by Pat Pattison from Berklee College of Music, I started the course thinking who is this guy? By the end I was hanging off his every word. Even if you've never thought of writing a song it opens your eyes to the talent (and tricks!) in the music business.
MMDS: Mining Massive Datasets by Stanford professors Jure Leskovec, Anand Rajaraman,Jeff Ullman, Link: https://www.coursera.org/course/mmds
Neural Networks for Machine Learning: Geoffrey Hinton, Link: https://www.coursera.org/course/neuralnets
Artificial Intelligence for Robotics: Programming a Robotic Car, Sebastian Thrun Link: https://www.udacity.com/course/artificial-intelligence-for-r...
Intro to Artificial Intelligence, Peter Norvig & Sebastian Thrun. This was the one which started it all in 2011, joined a little late by Andrew Ng's ML course which has been mentioned already.
Intro to Artificial Intelligence link: https://www.udacity.com/course/intro-to-artificial-intellige...
An introduction to some semi-advanced programming concepts using an accessible language like Python, taught by a giant of CS.
Steve Huffman's "Web Development"
Basics of developing a web application, it uses Google App Engine as a base but the concepts taught are easily extensible to other platforms. Steve comes off as a likable and competent teacher.
I'm now working through UCSD Interaction Design specialisation , which is a series of courses followed by a project. So far its been very good, although the short course format (3-4 weeks) means that there isn't time for much of a community to form among the participants. I've learned a lot though.
I'd recommend both courses.
Also, intro to comp sci by Harvard's open courseware. Without these, I might've dropped out of comp sci in my second year 
 https://www.youtube.com/watch?v=kBdfcR-8hEY https://www.youtube.com/watch?v=z-OxzIC6pic&list=PLvJoKWRPIu...
Made by the guys from The Blue Bottle, splendid tutorial!
It's the only MOOC I've taken that was anywhere close to the kind of experience I had as an actual undergraduate at MIT. Outstanding lectures with accompanying lecture notes, challenging but rewarding problem sets, lots of interaction by the professor and other staff in the forums.
It's not a course in the sense of having problem sets and grades, but V. Balakrishnan's lecture series on classical physics (https://www.youtube.com/playlist?list=PL5E4E56893588CBA8) is amazing, just incredibly dense with insight.
I would have to say anything on KhanAcademy. Sal Khan just does an incredible job of explaining things. I particularly like his statistics course as a good primer into stats or if you need to quickly brush up on the subject
This course is amazing, especially for the assignments.
It's an awesome course that introduces one to the electronics that goes behind modern day computers and smartphones. It really helped me understand how things work and what questions to ask.
Statistical Mechanics Algorithms and Computations . Very well done video's shot in a studio with a green screen. Comes with massive amounts of small python programs to illustrate the material.
Other favorites were Martin Odersky's functional programming with Scala and Erik Meijer's Haskell class at eDX.
Its a paid online business course by Harvard Business School with 3 modules - Business Analytics, Economics for Managers, Financial Accounting
Material is not super challenging (maybe except for Accounting), but its still a lot of work and very rewarding. There is a strong social element to the course because they incentivize students to ask and answer each other's questions. At the end of it, you have to go to a testing centre and give a 3 hour exam on everything they have taught you. I finished this course a few months ago and really enjoyed the material and all the people I met through it. Highly recommend!
My only issue is her voice can be very monotonous and I find it hard to do more than an hour without having to walk away and wake myself up. Her course content is very good though.
I also liked a Coursera one titled "Data Analysis" but the url now returns a 404 (https://www.coursera.org/course/dataanalysis) and it probably morphed in something slightly different.
After a few years working in the work force I decided to go back to get a master in Statistic to get into this field once and for all.
It's a collection of some of the best courses on the internet. The topics covered is quite diverse - but mostly related to computer science.
Did not see any other mentions. It was excellent.
I took these to prepare for first-job interviews coming out of grad school. Got an offer from a company frequently mentioned on this site, so I guess they helped.
A Fantastic course from a legendary educator.
A Global History of Architecture: https://www.edx.org/course/global-history-architecture-mitx-...
I want to stay in charge of tech & strategy while letting someone else manage finance, hr, etc. I couldn't find a single one that actually explains what a CEO does on coursera/edx/novoed.
 https://www.coursera.org/learn/modern-world https://www.coursera.org/learn/modern-world-2
The quizzes were good and fairly marked, the exam was tough, but the peer-review guidelines for it were very clear and easy to follow.
It teaches all the tips and tricks to make professional designs, a ton more practical knowledge than my university course or my first EE job.
Surprisingly, I also found Khan Academy's organic chemistry videos very helpful when I was studying bioinformatics and needed to refresh my chemistry skills
The Hardware/Software Interface: https://www.coursera.org/course/hwswinterface
I thought this was just about VPS, virtualization, NoSQL DBs but I was amazed that it also includes different algorithms for distributed systems like Gossips, MapReduce, Paxos, etc.
Also if you're into getting into making videos, https://itunes.apple.com/us/app/lessons-for-final-cut-pro-x/... was surprisingly good 10 bucks spent.
I often take time to think why I have so many started but not finished courses. Most of them are abandoned on the first week and my assumption is that when I enroll my expectations for the course content and the workload needed are wrong.
Occasionally, I abandon courses because they demand too much time to get something working on linux or because of luck of time. The thing that I noticed about me is that when I get a little behind the schedule then it's almost certainly that I will abandon the course. Additionally, when I try to commit on two courses at the same time then it's certain that I will abandon at least one (usually both).
There are 168 hours in a week. If you work 40 of them (+ 10 hours for inconvenient lunch breaks and commuting) and sleep 56 of them, you have 62 hours left. There you go. Figure out where those 62 hours are and spend them wisely. Organize your schedule so you have enough hours when and where you need them.
B (the right-brain/emotional approach):
Yes, you have ~62 hours from the above example, but you probably want a social life, need to eat and exercise, and it would certainly lead to burnout if you spent every free moment cramming side projects where you can. Instead of (or in addition to) managing time, manage your mental energy. Find a pace and rhythm that work for you to make regular progress on projects you deem worthwhile.
It's very important that you know yourself for this to work. Here's what has worked for me:
* Go to the gym on lunch breaks during the week. I reclaim that pesky break in the day, stay healthy, and generally feel refreshed and energized after a visit.
* It's cliched, but I don't have a cable subscription. (I spend my time on HN instead, so I suppose it's a wash)
* Absolutely make time for guilt-free relaxing. For me relaxing is going on a hike or camping trip, grabbing dinner with friends, or playing an instrument.
* Spend time reading. There is a lot of good material on time management or lifestyle design. What's important is that you read and learn to isolate the signal of what matters to you from the noise (and there is a lot of noise).
* Live by this mantra, "If it matters to you, then you'll find a way. If it doesn't you'll find an excuse."
I cut alcohol years ago and tend to go to bed at reasonable hours: the feeling of waking up at 5:30, getting a good workout and two to three hours of work before you even start to get ready for the office is pretty empowering. It feels like you already had a day worth of productivity in.
So, to recap:
1. Don't drink (or drink in moderation). It leads to late nights, difficult mornings and wasted hours on (often) empty discussions/interactions.
2. Go to bed early. Avoid screens in the bedroom (they keep you awake) and work out in the morning (helps to feel tired at the end of the day).
3. Wake up early.
Where there's a will, there is a way.
Start freelancing, quit your job, and move to a cheaper country where you can survive on something like 22 hours of billable work a month (+ business development). Then spend the rest of your time working on your stuff, or whatever you want to do! No sleep deprivation is required, you can still have a life, and you don't need to rigidly structure your time. It's a decent way to keep stress levels down too which yields more productivity!
It does help if you have some savings as a buffer too!
A few years ago I spent my lunch hour ~3 days a week or so building up a little app for Mac as well as Windows. 3 hours a week is ~150 hours a year. You'd be surprised how much you can accomplish.
The other thing that I think helped was I kept a running list of specific tasks that needed to be accomplished. So instead of spending my hour browsing the web or just doing random stuff, it was an hour of focused time spent towards building the next specific part of the app.
A clear spec means that I know what all has to be programmed. Decoupling my components means that I can make changes to my business-logic/back-end without having to make changes to my display/front-end, as long as the interface remains the same. Testing means that I can make changes without fear that I'm going to unknowingly break existing features. Quality code means that I can more easily understand the code that I've written after an absence. The upshot is that I always feel comfortable making a few quick changes, pushing commits, even after being away from the code for a few days.
A few concrete tools for writing quality code: write it to be open sourced, write it to be viewed and collaborated upon; use code quality tests like pylint, jshint, code-climate, whatever is appropriate for your language; display your code quality metric badges in your repo, badges for coverage, built-status, etc.
Edit: As far as I know this is a very standard clause in tech company employment contracts, and is perhaps the legal default even in the absence of such a clause. For example, see "Employed to invent" under http://www.nolo.com/legal-encyclopedia/pre-invention-assignm... .
California is an exception to the above: here employees may retain the rights to IP they create on their own time, not using resources of their employer (including company laptop), and, importantly, not in the same line of business as their employer. In the tech field, the "same line of business" caveat can be killer.
1: Break down your ideas into smaller ship-able chunks
2: Once you've something presentable, start getting market feedback to see if it would make sense going all in
3: If you don't see much interest, don't give up hope, sometimes it is better communication sometimes pivoting required. This is where you'd decide where you'd like to go. I found reddit to be tremendously helpful in getting feedback.
4: This probably is special case for me but I was giving up on software and getting little depressed / overwhelmed with my current stage in life. I like to do artsy stuff once in a while and so I started getsatvik.com, no-one has bought anything yet but this helps me learn marketing, copywriting and understanding how to sell. So think what you'd like to do as a hobby maybe combining that with your ideas could keep you going.
5: I find teaching people is also a great motivator. I now run a regular meetup in my city, learn some new concepts every month, teach them to other people. I don't get paid for any of this but helps to keep me sane.
6: Sometimes having virtual buddies also help. I now have a 'friend' on reddit who helps me with quick feedback / writing critique (as English isn't my first language) and I help him with doing some programming / teaching.
7: Nothing new or revolutionary here but sometimes connecting with like-minded individuals and organizing an accountability group also helps. If you'd like to connect, I'm happy to be your virtual-buddy!
Time outside the typical 40 hour work week:
Getting up an hour or two earlier than usual.
Spending an hour or two at the end of the night on it.
Same on the weekends, early or late, maybe schedule a 4 hour time on Sat or Sunday afternoon.
Those are really the only three areas to find more time with a 40 hour gig.
Obviously make your main job your priority. Be careful of any IP clauses in your contract if this is building something you want to profit from.
One other possibility, depending on where you work. You could probably use your lunch hour to learn new things, do tutorials. You should probably bring in your own laptop and use your phone's hotspot for this to keep things completely off work hardware/bandwidth.
If it's something you enjoy doing it won't feel like work or like you're missing something.
Make sure you balance this with spending time with family and friends.
I was working full time as an engineer in another field, started doing websites for family and friends, then moved on to developing web applications for clients along with my own side projects during the time slots listed above. It can get tiring along with a 40 hour job. Now I'm consulting full time remote so I work on client work 40 hours a week and use any extra time for my own side projects.
The holidays is a good time to kick off a side project as you'll typically be taking vacation days so you'll have some extra time that you would normally spend commuting, eating lunch, working that you can use for a side project.
Good luck hacking away on your side projects.
What I can suggest (for your sanity and social life):- Pick the weekends (one or two days) where you code for 5-6 hours. - Do it during your work day. If you want something out of your side project, just don't work hard enough at work so you have ressources left for yourself- Ask your boss for a 25 hours working week or try to get one day off without salary reductation to see if you be as productive as before. If not, ask for 10% less.
Divide your side project in learning and developing.
Get a book which you can read during your commune, or even an ebook which you can read during work.And then, at home, take a weekend/one day off/two nights off to develop and code.
I also suggest the Lean StartUp method, which is not only helpful for StartUps, but also for side projects. The key is to develop in small iteration to always have a finish product you can test.
So, don't do everything, pick one little feature, develop it and see where it goes from there.
Derek Sivers says a bit about the general problem in this recent interview: http://softwareengineeringdaily.com/2015/10/14/creativity-an...
I highly recommend you to read this talk script by Chris Wanstrath, one of GitHub's founders. Two of his suggestions:
- Turn off (or lower the frequency of) reading news/RSS/Twitter.
- Do a bit contribution to side project every day and get a streak. I feel John Resig's GitHub profile illustrates the point best.
I'm following these two suggestions on and off for a while, but I want to really do them for the whole year 2016.
And my suggestion is to go to some hackathons. You'll be amazed at how much you can get done during a weekend without distractions. Plus you meet a lot of awesome people, sharpen your skills and win prizes.
Don't beat yourself up over it taking a long time to get something together. Its going to take a lot longer to get a side project off the ground whilst working. I found that the first few weeks were the hardest, mainly because you'll be looking at a project that looks like nothing. As it evolves over time, it'll start to look like something and as such this in itself is motivation to find the time to work on it.
Stupid as it sounds. I also didn't buy a domain. You might think that 'oh I have an idea I'll buy a domain and go do it' but the inverse was true for me. The amount of domains I have that I have done nothing with is testament to that. The risk of someone else buying the domain I wanted was motivation, anyway, domains don't matter in the general grand scheme of things. If your product isn't shipped, domains aren't worth shit.
Focus on small wins. Create a Trello board with a few columns. TODO, DOING, DONE. Keep the tasks small, and when you have them done, move them over. Whilst not directly an answer on "where to find the time" it will help to keep you motivated to have a big column of "DONE" with stuff in it. Especially when you are going to have nothing visual at the start.
I have an extremely understanding partner, but I also set aside time when I put the laptop down. Stupid as it sounds, actually working on a laptop rather than a desktop worked for me as when everyone else was watching tv, I could code, and you can take your work with you so when you have some free time you can work.
For me, the challenge in understanding my own choices, is understanding the root of those choices. It can help if you have a neutral third party to talk to about why you choose to do X rather than Y, but barring that there are other techniques you can use.
One is to make an appointment to spend 1 hr a week on some project. When I do this I start with a fresh notebook and pick a time either before I go, or after I get home, from the office to spend on this project. Then when the time comes the first hour is dedicated to writing down in the notebook the goal of what I'm trying to do, why I'm trying to do it, and the things that will have to be true before I can achieve that goal. After an hour I close the notebook and go about my life. The only rule is that during that hour I work on the project and nothing else, and if unavoidedly interrupted I make up the time lost that same day.
The things that make that possible are; It is only an hour, same as watching a TV show or reading through the front page, the notebook retains my mental state between sessions so I don't start out wondering what the heck I was doing last week and what needed to be done.
I found that for me what I really hated was spending an hour coming up to speed on a project and then only having a few minutes to work on it. Very unproductive and very demotivating. But with a process to stop and restart a project in hand, it takes away the restart lag and so I can be productive nearly right away (perhaps 10 minutes reviewing my closing notes from the previous session). Also if my check list is good then I have a good idea of how close I am to the goal.
Time is a finite resource, and learning to budget it will serve you well throughout your career.
And only once I've thought enough about it, and am comfortable I have a solid plan and have carved out a precise scope / objective for my coding session, will I open an editor and start coding.
The trick I think is once you can visualize exactly what you want to do you can knock it out relatively quickly. I think it can become stressful if you're always sitting down to code in your spare time, when you're not prepared with a specific plan. You can waste a lot of time spinning your wheels when you do that, which in turn can make you feel like you're wasting a lot of time and have nothing to show for it.
I'm in my thirties, married with a two year old son, and working 40-50 hour weeks for a startup, and spend all day Saturdays looking after our son so my wife has time to work on her PhD. Between that lot there's not a lot of spare time, but I'm also in the process of starting a side project I hope to grow into a business.
Recently I've finally managed to get a bit of momentum behind that. The key was to book a week of holiday from work, with the intention of building an MVP during that time. I didn't quite get to something I feel I could sell in that time, but I did make enough progress that I feel like its worth continuing.
The other thing that's working to my advantage is having moved house to be closer to our families. That means I now have 10 hours of train journeys a week over the two days I need to be in the office rather than working from home. Its not an ideal situation to work in, the internet connection is intermittent while traveling through the countryside, and sometimes I'll lose 30-40 minutes waiting for their to be a seat, but it does have the advantage of being a block of time that I can dedicate to it. You can get a surprising amount done in two hours when you focus on it. I'd go so far as to say if you can't make time outside of work, move two hours away from the office, and buy yourself an annual train ticket. Maybe I'll turn it into some sort of coworking movement, bringing together commute hackers.
The other key thing has been to try and notice when I'm wasting time, and to back out fast. There's no leeway for yakk shaving away four hours when that's half the time you have to work on something this week. I will say I have mixed success on that front, having recently lost a week to the decision I should stop using Bootstrap. Eventually I killed that branch, and got back to focusing on what matters, but it was super painful.
Finally, and the critical thing for me at least, is having a side project you truly care about. If you just feel like you should be working on a side project for appearance sake you'll never find the motivation to stick at it. My Github profile can attest to that, with a steady stream of things I spent a few hours on and then got bored of.
I'd love to hear from anyone in a similar situation, and maybe start a mailing list of people who want to support each other. If that's something that interests you, my email address is in my profile.
I try to do something meaningful for my side project about once a week. If it's side-project night, I put my phone on airplane-mode and tell the lady-friend I'm booked up so I can concentrate for a solid ~5 hours without interruptions.
Obviously you can't do this super often while balancing the rest of life, but it's reasonable to get it in about once a week.
The tricky part is to let ideas for it simmer on the back-burner of your mind, but not to let the flame go out completely. It's nice to walk into your session with a full agenda and a general grasp of how you're going to implement it with caveats in mind, which you can fill in during the downtime of the week. However, it's also easy to completely forget about your project.
You can counter that part by getting friends involved!
When you devote one solid hour of absolute focus to a project, you get an incredible amount done. When I use this process for side projects, that first hour of side project work is by far the most productive hour of the day.
- The less correlated your side-project is to your day job, the better. Brain craves novelty, even after I am completely worn out by day work, by the time I've cycled back home I am ready to go again, but at something completely different.
- Move, I commute by bike and I have seen it make a big difference when you're sitting at a screen 14 hours per day.
- Make it a routine, at home I have two backpacks always ready, one for work and one for cowork, after dinner I just grab the second one and leave with barely having to think about whether I am staying in or going for another half day of work.
- Have a dedicated space, I am lucky to have a 24/7 co-working space literally around the corner from where I live or I would not be able to do this, it really helps your brain to physically switch context depending on what you do.
- It goes without saying, but you ought to really love what you are doing in order to forgo almost everything else...
One thing I'm trying right now and that seems like a good first step is to track what you spend time on every day. I'll give you an example. Right now I'm home for Thanksgiving, which is sort of a vacation, but I also want to be productive. Here's what I did today:
11:50-12:45 - Wake up, internet
12:45-1:00 - Work
1:00-8:30 - NFL, hang out with friends
8:30-9:00 - Quick work out, shower
9:00-10:45 - Dinner + work
10:45-11:25 - Break, clean up, shave, wash up
11:25-11:50 - Work
11:50-12:00 - Pats-Broncos OT
12:00-2:00 - Work
2:00+ - Relax, sleep
I don't know if that was the most helpful example given that I'm on vacation, but whatever. I've found that I spend a lot more time on little things like eating and cleaning than I'd think/hope (I'm a very slow eater).
Anyway, I think that having good data on where you spend your time is very useful. Both from a logical planning perspective, and from an emotional/motivational perspective.
Prioritization, motivation and efficiency are topics that are too big and too well covered for a comment of mine here to be useful.
I actually created an iOS app this summer to handle this. http://getbalanceapp.com
I started SocketCluster (http://socketcluster.io/) on the side about 2 years ago while working 45+ hours a week for a startup.
I still spend about 10 to 20 hours a week on it. It's been a great learning experience - The kind of experience that's impossible to get from just being a full-time developer.
If your side project is a freelance one, you're probably in for a tough time, due to external pressure.
If your side project is a hobby one, my advice is to start small, and plan subsequent iterations small as well, so you can usually finish in say within a weekend. Anything bigger will make you feel overwhelmed. Also be prepared to sacrifice some personal time for your project, it's a hobby anyway.
I'm assuming that your side project has little in common with your main job, otherwise there is no fun in doing it. If that's the case, I find it especially useful if the side project can, in a way, contribute to the main project. E.g. you experiment things you want to learn with side project, and apply it into your main project some time in the future. This way you have a good cycle and motivation to keep innovating/experimenting. Making your code/project public so others can use/contribute is also a good motivation to keep it up.
My basic advice would be "set up a sustainable business that doesn't take up all your time and takes care of your basic income requirements, then develop an idea once you're financially independent enough to do so".
Maxing out your time now, while you're working, is the most stressful way to do anything. Developing something based on your own idea is the most risky way of doing anything.
Rather that focusing on your own ideas, focus on other people's problems, then figure out how to get paid to solve them.
Reduce your bottom line agressively to maximise the chances you can sustain yourself without taking up all your time.
Solve problems and get paid to do it, then systemise that and get other people to do the work. Now you have a business that doesn't take up all your time, but which takes care of your basic income requirements.
You can choose to spin a product off based on that, ie. by automating that business and selling it as a product, or you could use a product extension of that business to increase revenue, or you could just work on something completely tangential.
Edit: my work week was 60hr per week. There was no chance I could do anything at night as I was completely drained. Weekends were off bound too. I found that when you do as little as 1 hour a day, if you don't believe in the project you'll just drop it. If you really think you can get something out of it, you'll keep going and you'll get to some place good reasonably fast.
I am just about to launch my second big(ish) side project.
When outside my "real job", the priorities are with my child and my wife. So the time for anything else is scarce and the most is done after both of them go to bed.
- limit your TV
- limit your distractions on the computer (I use RescueTime)
- learn to differentiate between motion and action (http://jamesclear.com/taking-action)
- automate everything you can
- motivation, motivation, motivation (when sitting on the toilet you aren't thinking about your side project, you don't want it bad enough)
But any good side hack will just make the time for itself. It's that stuff you can't not do so you stay up slightly late and will be slightly more tired at work but hey, so what, you'll feel so good about it that you can't wait till the work day is over and you can continue again. Then it'll fade away and you'll get more interested in work again until one night you figure out where you left with the side project and hey, there you go again.
Personally, I've never been in such a good job that I would always have interesting things to do. So, I've observed that my home-hacking is strictly proportional to the amount of boring stuff at work. I need my dose of programming and if I can't get it at work, I'll get it at home. This kind of takes care of side projects on its own.
Basically, I work 1-2 hours in the mornings, not every day but a few times a week, either after I drop my daughter off at school, or before they wake up. Some nights I work after they go to bed (I am working on a side project right now, it's 10:20pm on a Sunday). Sometimes I stay up late if I can deal with being a little tired the next day. I'd say I get on average about 5 hrs a week out of this. Then, sometimes I carve out weekend days where I get 8-10hrs of work. Other days I'll watch the kids and let my wife go out to a movie or out with her friends to make up for it.
Slow and steady progress. Have realistic expectations. Just chip away at it.
7AM: Get up, shower, cook breakfast
8AM: Take the bus to work
5PM: Come home, buy groceries, cook dinner, etc.
7PM: Work on side project
1AM: Go to bed
This worked well since I lived alone during the week (on the weekends I travelled to my home town and stayed with my girlfriend)
I got plenty of stuff done in that year.
The most surprising thing was that I wasn't really more productive when I quit my day job.
Other side projects - work together with a friend or perhaps hire someone so you can split the workload for something you want to build?
Organise your free time in a way you have time for extra projects - ie skip TV, cut down on social media etc. But you have to really love the side project to be able to pull it through
I was feeling tired and/or guilty in the same time. Then I decided to find a part-time job and finally became a freelancer. Much better on that matter.
Accept that you can probably only get ~8-12hrs of good work on side projects done a week (except when you're really inspired, or when you can spend a weekend on it).
Search for Einstein and the patent office for someone for an idea that you can copy.
Weekends are for chores and socialising.
Or, at the very least, prune it back to one or two current shows you follow. TV is by far the most significant time sink in most people's lives.
So rather than code anything yourself, just give htem requirements that read like a to-do list for yourself, after you've already doen all the theoretical leg-work:
#1.1 to-do: when this form is submitted, pop up this confirmation form:
#1.1.1 Confirmation asking if user wants to leave page?#184.108.40.206 if user clicks yes, redirect them to the link clicked#220.127.116.11 if user clicks no, keep them on page.
#1.1.2 Form submission: when user submits form, run valdation
#18.104.22.168 if the name is not betwene 2 and 30 characters show an error "Name must be between 2 and 30 characters"
#22.214.171.124 if the email address is not in the format (one or more characters or numbers) @-sign (one or more characters or numbers) and contain at least one period after hte @-sign, then error message reads "Please input a valid email address."
and so on and so forth. stuff that makes your eye water regarding how incredibly, uselessly boring it is, like you're an executive and can't even tell your business manager to accept a bid, you must fucking dictate the letter itself.
However, as incredibly annoying as this process is, it takes you approximately half an hour to do a day's worth of work with it. You can review progress every day in half an hour over breakfast.
So, there is your answer regarding how to build a side project while you're working full-time: manage dirt-cheap disposible developers on Odesk or Elance who get off on adding absolutely zero benefit whatsoever of any kind to a project, besides doing exactly what they are told in painstaking detail.
This is being made from a throwaway because I haven't heard this idea expressed and people might not realize that this is the answer. As for my tone/style, I think it's completely wrong for any developer to agree to be in such a role, and the REAL correct solution would be to manage a creative, contributing developer who gets equity in the result and has more free time than you. But what do I know.
Imagine someone asks how do I train to run a marathon?
Start by running 1 minute a day and add a minute every few days, after 2-3 years you'll be running long enough to run a marathon.
There is no substitute for doing, there are no shortcuts, there is no miracle pill (well, ADHD meds may help...)
You must actively decide that your sideprojects are more important than whatever else you are doing, speaking of which now that my two kids are asleep, and my fiance is reading, it's time for me to stop commenting on HN and start working on my side project.
Time is not something that is lost or found, you have a fixed finite amount of it, and it is continually decreasing the only thing you can do is choose what you do with it.
On Caltrain, I tether my wi-fi. If you're on the fastest bullet, don't bother trying to get internet, it doesn't work. Otherwise, the moderately fast bullet or the regular trains will give you reasonable internet to answer email.
Oh, I also use VLC with a tv show or movie and watch at 1.25-2X speed so that I can watch a whole thing in a fairly short span of time. You'll realize it works pretty well.
Additionally, I swear by Pocket (which also reads articles to you), Voice Dream (which integrates with a bunch of other things and can read to you as well at a fairly fast clip). If I'm reading, I'll also use the Kindle app or potentially have my Kindle with me.
If I'm reading an online article, I've been trying to train myself with Spreed so that I'm reading faster.
I've seen others just play games on their mobile devices or use dating apps - both of which seem to magically make the commute disappear.
Think about what you want to accomplish with all that time and then build from there- do you want to use the hour in the morning to get a leg up on your workday? Do you want to use the hour in the evening to relax from work fully so you can jump into chores/hobbies when you get home?
When I have to make my connecting train, I just close the laptop and can quickly open it back up when I get to my next seat.
On days where I do not want to program, I use the amazon kindle app with the whisper sync so I can listen to audio books. If I just want to listen to music, I use the free version of Spotify on my phone.
Other than that, I like to watch 20-25min TV Shows ( Older ones like Futurama, or Rick and Morty ) if I don't want to read.
Other apps I use: Pocket Casts, Safari To Go, Feedly, Play Newsstand (subscription to New Yorker), Boston Globe (subscription), Amazon Kindle.
One thing to know is that your local library has free ebooks and audiobooks for download.
If I'm not travelling with my laptop then I will typically read a book or magazine.
You might also find noise cancelling earphones and a supply of music useful if you have noisy fellow commuters, but it's not strictly necessary.
The other commute is a 1.5 - 2 hour trek each way broken into legs. I use my laptop on the safe leg unless crowding prevents it. On the unsafe legs, I read a magazine or book. I was reading the latest issue of 2600 today and will do so for the next commute or two. I listen to music the whole way.
I used to have long commutes when I lived in California and when I travelled by train or in a van provided by my company I considered the travel time to be work time, bringing whatever materials I needed with me. Listening to music or fun reading seemed like a waste of time. When driving to work I would organize my work day, as much as possible.
I specifically take the slightly-slower bus rather than the slightly-faster train so I can reliably get a seat even at busy times.
- As long as possible, handle all requests yourself.
- If people keep having billing issues, use a different solution for billing. I use Fastspring, and issues are rare. And I can just forward billing related issues to Fastspring support.
- If you keep having to deal with technical problems, fix your product. Ideally it shouldn't need customer support. If it is so complicated that customer support is required, charge at least $100 per customer.
- Write good documentation. This is so often overlooked. People generally contact support as a last resort, and will usually read all documentation in advance. If your docs explain it, they won't need to contact you.
- Time: it usually takes me 10-30min to answer one support request. I don't have a time budget, I try to answer as quickly as possible. Being responsive makes a great difference to your customers, and they will be much more likely to buy your product and recommend it to others.
- However, to limit the time per week I spend on customer support, I do everything I can to make sure people don't need to contact me at all. I try to fix every reported issue permanently so that I never have to deal with it again.
Technical question that they don't get? Either make it more explicit in your product, on your sales page or in your documentation. Once that's solved you should better understand customer needs and have fewer support tickets coming in.
Billing can be a little more painful but with a solid FAQ and some email templates over time this should resolve itself pretty quickly.
Non-product related enquiries (usually like billing) are the first ones you might outsource to someone else to handle. You can use services like influx.com to handle this.
Most founders start out doing customer themselves. This is absolutely the right thing to do for reasons outlined elsewhere in this thread.
When the business grows, the the founder(s) can't continue handling 100% of customer support, both because there other priorities and because the volume grows beyond what the founders can personally handle.
Generally in this "transition phase" time-to-first-response grows steeply.
I wrote about my experience providing customer support on a open source project, you can see where the "wheels started to fall off" - ie time to first response climbed steeply:
At the time, I felt bad about TTFR growing steeply.I now understand that it's a really common state of affairs.
So at some point, the founders need help, and they either hire or outsource, or do a combination of both.
You asked about "the average time it takes you to resolve customer queries". A typical time-to-first response before Influx starts working with a client is 12-15 hours, with a outliers at 1-2 days.
On "stay close to your customers" - it's 100% correct but a harder question is "how do I stay close to my customers and scale at the same time?". The answer depends on the size of the business. I see people using a combination of metrics and qualitative insights. The metrics look after big picture health and qualitative insights involve customer support staff bubbling issues back up to the product+dev teams.
2) Get the app and get a notification for every user's question. Try to answer them the second you see it.
3) Don't hire a dedicated customer support person. Stay close to your customers and build a relationship.
4) Watch this talk by Patrick Collison from Stripe: https://www.youtube.com/watch?v=nnllRegL_NI
5) Build out an FAQ
6) Make sure your customers are happy.
Some principles worth following:
0) Be human - personable, friendly and honestly there to help
1) Be honest and transparent with technical issues
2) Be fair with billing issues
3) Be effective. Fast responses don't help if the question isn't answered
4) Empower your team to do the right thing - most big co's fail here.
5) Keep the feedback loop between yourself and your customers tight - everybody on the team should help out on support. Lots of valuable insight can be gained here. While outsourcing makes "support questions go away" it also cuts off an important feedback loop.
We have three part time employees and one more in training all to handle support. We did, however, start where you are. Here's my advice:
- Just use email. We tried Zendesk, Groove, and Helpscout. Helpscout is far and away the best.
- Your reps need to be smart, talented, and close to the business. That means you need to handle all support inquiries until you can afford to hire someone. When you do hire someone, make sure they're 5x more technical than you think they need to be. We hire developers as support reps.
- It takes us on average 2 replies to close a ticket. A reply takes us on average 6.5 minutes to write (some take 30 min, some take 30 seconds). Our tickets involve lots of debugging and weird stuff, so YMMV.
- Answer every support request as fast as possible. Our customer happiness ratings have a lot to do with how quickly the reply was sent.
- Treat support like a focus group. In a perfect world no one would ever need to ask you for help. If you get people asking the same question over and over, change your product to answer their question for them.
- Docs are a last resort. It depends on the product, but often documentation is a band aid for bad UI. That said, it's good for SEO.
- As you grow, keep support close to your ear and heart.
I have a fairly complex Fastmail email setup in my organisation to share the support mail folder with my colleagues. Ultimately all people added to support can see all past "conversations" and join the conversation. Huge PITA to setup though. Still prefer it as it's not locked into the semantics of some ticketing system evolving to be email.
I probably spend 30-60 minutes per day replying to support emails (I haven't measured it). Most take less than 5 minutes.
Here is an article I wrote that summarises what I've learnt:http://successfulsoftware.net/2012/08/21/tips-for-great-soft...
Support and questions are handed through email. We have a contact form and various internal bits will direct a customer there with preselected subjects (e.g. "Question for Order #n" ).
I would never outsource it from the company, and want to have me and my co-founder primarily do it. It's the closest contact you have with users who are experiencing problems. If you're big enough, you're going to need dedicated support people, but I think founders should still have a grasp of what customers are asking you about.
We use it both as a widget on our landing page and our support email redirects there, which allows us assigning tickets effectively to the team member responsible for their resolution.
Interesting fact: Because our median response time on Intercom is around 12 minutes we convert about 80% of all inquiries (from visitors to paid clients). 80%!
Bottom line: customer support makes a huge difference, so you should definitely do it yourself.
Having a knowledge base and/or documentation is a great because a lot of people do prefer to help themselves. That cuts down on the volume of support calls too, so it's an easy win.
I personally think that support and sales go hand-in-hand so, especially when you're getting started, you need your customer's support experience to be excellent.
I must say, great customer service helps churn a lot. Helping them out actually makes them a happier customer and it is a great moment to start a good relation. See it as a opportunity and don't outsource it too soon!
Depending on the size of your business I would suggest some tips from this blog post:
I did all my own CS, over email, for the first 6 years. This was approximately 4 years too long. Time to first response (TTFR) was generally on the order of "I'll get back to you by the next business day on a best effort basis" -- I hit that on about 98% of customers for the first few years and then probably slid later, particularly when sick or overwhelmed.
My first (B2C) product had a lot of not-very-critical CS issues which also weren't very complicated to resolve. After having done that for 6 years, I hired a VA firm in the Philippines who staffed me with a single person for ~4 years. I think it was 20 hours a month for $300 or so, IIRC. I acted as tier 2 support for her. She probably head off more than 90% of inquiries. We used Snappy (BeSnappy) for CS software -- I enjoy it rather more than I do support over email, and it was easy enough for her to get spun up on.
I've also done B2B support for my other SaaS product, which has fewer users, fewer customers, fewer incidents, and radically higher maximum-criticality-of-a-ticket. Again, did it all by myself for the first few years. Eventually it became obvious that a supermajority of our support was onboarding for new customers, so when I hired a sales manager we mutually decided to roll that into her job description. Our process is she firewalls me from any ticket she can and, if anything survives, she dumps it into Slack as a morning roundup every evening. I either get her instant answers or tell her "#3: ETA tomorrow."
My sales/support person works near my customers timezone-wise, so they generally get very quick "Thanks for the email. I'll ask my tech guy about that and get back to you." acknowledgement for the harder issues (and very fast resolutions to the easier ones). This makes for mostly happy customers, although to-be-fair most of them thought I was pretty responsive back when they wouldn't even get first contact until a day after they had sent in the ticket. I'm not competing with having a super-responsive startup team on speeddial; my customers expectations' are set by bureaucracies which take weeks to acknowledge receipt of the first of three things required to get the ball rolling on opening a ticket.
Fully-loaded cost for my sales/CS person is on the order of "a few thousand dollars a month." for what I'd estimate as approximately 0.25 FTEs. (Worth every penny in decreased stress level for me.)
Customers occasionally ask for 24/7 phone support. I quote Enterprise rates for anyone who wants that. No takers, thankfully.
I feel like the median experience of my customers getting CS from the team and myself is probably worse than it was when I was doing 100% of the CS, but it is not obvious to me that is true of their perceived experience, and we've managed to successfully manage expectations from customers about how much of my personal time is included for $29~$199 a month. (A particularly good thing as I won't be involved in that business much longer.)
Anecdata: 80% of CS incidents take < 5 minutes to resolve, 15% take < 20 minutes, and 5% take Way Too Long.
Favorite tricks for CS:
You're going to get the same issues a lot. Keep a list of them. Fix the ones that are caused by fixable product issues, and keep fixing them until those go away.
Build self-help tools for the issues which are high-frequency low-value-added like, most obviously, password resets. (Yes, there are still companies without automated password resets. I know someone with a master's degree who carries a beeper on Saturdays due to their company's refusal to spend money on tweaking an application to allow password resets.) Routine billing inquiries, etc are often also candidates for this.
You're now looking at a long tail of issues, but it still has a fat head of the distribution. Process-itize those issues which are amenable to it: you want to have a Google doc which explains exactly the company standard response to X, including what to say (templates optional) and what, if anything, needs to be done in internal tooling. Do not extemporize a solution to the same problem 100 times: cache it and save extemporization for places where the team's brainsweat actually adds value over "the right answer delivered very efficiently."
Final thoughts: your expectations for CS are not your customers' expectations. Your expectations for your company's CS are not your customers' expectations. Your desired outcome for a CS incident is not your customers' desired outcome. I can keep banging this drum for a while. It's important.
I have my customers on my skype/email/intercom. We have looong threads with them, discussing features and related things.
When I started, I was really concerned that support requests would be overwhelming. It's a direct time sink (time you could be using for marketing or development) and when you're getting off the ground it is really difficult to predict how much time it will take. To some extent being 'swamped with support' is a nice to have problem as it implies that you at least have customers or at least people trialing your product.
So, it is with a fair deal of surprise that I've come to really enjoy providing support for ExpeditedSSL, that support has become a huge driver of word-or-mouth referrals and has driven any number of big user experience improvements.
WHY DELIVER GREAT SUPPORTBeyond, just trying to keep your customers sort of generically happy, there's two really important reasons to try and nail support:
1. Support Effort is Weighted to New/Trial Users
To get a new user of your software you have to attract visitors, teach them what you do, maybe email them a few times and then after they signup and you've expended all of that effort and expense it's crazy to throw away an opportunity to keep them.
Early user support is incredibly lucrative as it's the difference between keeping a trial customer and them leaving. A 5 minute email to a new user that keeps them around for a year of service can easily earn you hundreds of dollars.
2. Good Support Is How You Get Fans
With rare exception, people seem to get more upset over support issues (unresponsiveness) than from actual issues.
Most places are so bad at support that if you're able to respond quickly, fix their problems and in general not act like some stiff support robot you'll make people really happy and huge fans.
This effect is so pronounced that I almost wish we could have some minor issue occur in the onboarding process that we could reach out to people about.
This is an area where you as a startup actually have a profound advantage over larger companies as you're likely much more knowledgeable about your product and definitely more invested in a user having a good experience than some random for-hire support person at BigCo.
WHAT TO SUPPORTIt's easy to lump all post sale activity for a customer into 'support', but splitting it out into a few broad categories helps address the underlying issues in each.
This is what most people consider "support". A user reaches out with an error and after some troubleshooting you tell them how to fix it.
Not necessarily that there is an error, but perhaps they don't know what to do next or need assistance in getting their data loaded or preferences setup.
Typically billing, renewals and anything else regarding the service outside the core functionality.
HOW TO DO SUPPORT
Your primary means of supporting users is likely to be email. It's asynchronous but lets you respond quickly and starting out will likely be sufficiently organized to keep things moving without a full blown helpdesk application.
Secondly, it lets you be extremely precise and copy & paste friendly in a way that phone calls can't match. Ex: we often have to help people set their DNS entries and it's much easier to email someone the following than explain it.
Please set your www CNAME to fugu-2034.herokussl.com
Email is in fact so predominant as a support tool that you can actually go quite far with managing support requests in your email client before you need a dedicated support app/service. Modern email clients that nicely group emails into threads are more than adequate to get started.
A few months after starting I switched from a dedicated Gmail account to Fastmail and it made a profound difference as just receiving and responding to emails was faster by about 10 minutes on each side.
SKYPE & PHONE
We primarily use Skype and Phone calls as an escalation method. If someone is really turned around conceptually as to what needs to happen to get things working; often a short phone call can put things straight.
I'm also always on the lookout for users phone numbers in their email signatures. I'll sometimes just call them back if they email in with a question or problem as this is such a huge inversion of their expectations (being left on hold with instrumental covers of ABBA tunes playing and a disembodied voice that talks about "call volumes" and how you're "very important to us") - that they'll hopefully feel really positive about the experience.
I had really high hopes for chat, and had tried using Olark for several months, but whatever combination of user experience and expectation that came through, just did not get any takers.
I'd really like to offer real-time chat as a support channel and may try it again in the coming year.
Some developers still look askance at Twitter "If I'm building a business, why do I need to know what people had for lunch. Har Har." - but it is undeniably a support channel as people now have an expectation of being able to say: "Hey COMPANY_NAME - I'm having trouble" and get a response.
Further, while all the other support mechanisms are at least within your control (aka you're not going to get support phone calls if you don't have a support number) - Twitter is most definitely not. People will tweet about your product or service and the issues they have with it at the drop of a hat.
To help these people you need to monitor Twitter, I setup a custom column within TweetDeck that searches for ExpeditedSSL and "Heroku SSL". Which makes this a breeze.
WHAT TO SAYWhatever the support channel that a request comes in from, I try to incorporate the following elements of what I've found makes a great support experience:
1. Apologize for them having had to waste their time: "Sorry you have to deal with this hassle"
2. From the context make sure that they know it's a knowledgable live human that is invested in fixing their issue; not a NLP auto-responder script, not an intern with a list of set support responses.
The easiest thing to do is just look at their email address or signature for their name and put that in your salutation.
3. Explain what they need to do in the exact way that they need to, this means that I'm not cutting and referencing things like "set the dns cname to example.com" - but actually put their domains, names, servers, etc. into the instructions.
4. Try to explain what caused the issues. We sometimes have issues with our upstream cert providers, sometimes weird things happen with the Heroku API, once I forgot to buy more credits (I have to purchase certs ahead of time). I just try to be really honest about what happened.
5. Sympathize - we're really lucky that all of our customers are genuinely competent developers. But they don't typically do DNS work or other config tasks - so they feel bad about not knowing what to do.
6. Anticipate - beyond just fixing their current issue, point them to the next step that they need to accomplish.
MAKING A SUPPORTABLE SERVICESome of the highest ROI time I've spent on ExpeditedSSL was in user experience reviews. I'd ask a friend out to coffee (or random people on Twitter to join me on Skype) and just ask them to try and get through a SSL Install. I'd watch their progress and flich and be incredibly embarrassed as they got stuck on seemingly "obvious" steps.
Some of the companies I've worked for have spent tens of thousands of dollars on doing customer feedback and user review studies.
So with that in mind, it's quite reasonable to consider every support case as a free, mini lesson on UX that a real actual user has sent you. As a direct consequence of support cases we've:
- Added a "Test Email" button the the approver addresses
- Automatically force the best option for 'www' vs naked domain names
- Improved the DNS checking to say both what should and what should NOT be done with DNS
- Added post install instructions for configuring the most popular app-stacks for forced ssl.
Together this forms a feedback loop, where as you improve the product you get fewer and fewer support issues that you can then proportionally handle better and better. To help encourage users to give feedback I always put my title as 'Developer Support' so that they can feel more free to complain to me about product issues than if I had my CEO or Founder hat on.
Secondly, how many of these queries are related to customer education / misunderstanding of product use vs. actual software defects? The former may reflect weak or inaccurate documentation or conflicts in design.
I've been helping companies setup their customer support processes for some time now. Initially, founders/core team members must do customer support on their own. This should happen till your team has some visibility of the process (what kind of questions you get and how to reply to them).
------- What are the ways to handle customer support?
You can do it synchronously (chat or phone call) or asynchronously (email). Usually, async customer support requires lesser money/time because things can be structured. But, before you have some visibility of the process and are still finding p/m fit, I would suggest you talk to people.
------ Outsource vs do it yourself?
Before you know your process, do it yourself. No one can decide how things can be answered. Once the process has been mapped out, a lot of the startups I know of ask every team member to pitch in for customer support. This may lead to better quality but leads to huge costs as well. I've seen salesmen spending 1-2 hours everyday on customer support answering what they call "dumb questions". You can outsource it as well, which comes with problems of its own. For starters, it will be very hard to find an outsourcing partner who will be ready to deal with extremely small volumes.
Even if you do manage to outsource, your process will now be managed by someone else. Ad-Hoc changes become difficult to communicate and the people giving out support for you will also be giving out support for other companies....hence leading to quality issues. Unfortunately, most outsourcing companies still rely primarily on training to ensure quality. They don't use the technology they should be using. Thus, quality will depend on the infrastructure of the outsourcing partner (training managers, quality managers, etc).
Once you reach a decent size, hiring people and creating your own customer support team is an option but is usually more expensive (HR/payroll/training/infrastructure). But, it also leads to better quality. Do remember that customer support teams have a huge turnover rate...people keep going and coming in. Thus, training and quality monitoring costs can be huge!!
------ What is the average time to resolve queries?
I've seen a first response time of 5 minutes and also first response times of a few days. Don't know what the average is but depends on a lot of factors. The one doing it in 5 minutes usually has happier customers.
------ How much budget do you allocate for CS?
This is a tricky question. Even huge companies have a problem with this. The amount of budget to be allocated would depend on a lot of factors. What I would suggest is that your get started with a particular level of resolution time (which would determine your budget) and then try to optimize it using a series of A/B tests with retention/return being the metric being monitored (the metric too can depend on a lot of factors). Once you use these metrics, you would have a better idea of how much budget you should allocate. I might be wrong, but Busibud.com is perhaps the only customer support tool that I know of that lets you A/B test customer support strategies.
I initially did CS myself along with my co-founder and it is tough work. The hardest is the context switching overhead. One minute you're coding or marketing, and then you have to switch into doing 2 or 3 hours of customer support. What is really tough is at the end of the 3 hour stretch, a customer with a real gnarly issue comes along and you have to do 30 to 45 minutes of actual work researching it to help them. You have to dig deep to go that extra distance.
Once our revenue scaled we could hire our first full time customer support engineer and wow. It was so awesome to have someone offload this and let us focus on all the other stuff (which we would eventually have to hire for too!). We have a team now, some permanent and some contractors.
So there's no easy way to do it and because it's a human intelligence task, it's super time consuming and super expensive. But I can't overstate the importance of great customer service. We are known for it in our space and it has really paid off. Competitors have dropped the ball in a big way and we have picked up the slack through excellence in customer service.
A few things I learned:
- Reply early, reply often. It's very important to most customers to simply be acknowledged.
- Everyone has a bad day and 90% of the time, a polite response to a very angry customer will get you a surprisingly polite and grateful response back.
- Twitter is great. Reply to customers, interact, but direct them to ticketing or forums for full customer support service.
- Ticking system is essential. It's the only way to reliably track issues. Support via email and you will eventually drop the ball and it will bite you.
- A FAQ will save you a huge number of support tickets. Put it front and center, maintain it well, make it as user friendly and easily navigable as possible.
- Only hire people who speak your customer's language as their first language. Even the smallest grammatical errors are giveaways of offshoring and will irritate customers.
- Depends on what kind of biz you run, but in our case our customers are surprisingly understanding when we have an autoresponder saying we will be providing limited support over the holiday season or over weekends. So pick your hours, and just communicate clearly what they are.
Hope that helps.
Edit: You asked about average time to handle customer queries. A ticketing system gives you that kind of reporting along with a ton of other metrics. I would think the average time to close a ticket varies depending on the business and product complexity and customer sophistication.
And you might be surprised at the difference between what it's like to contribute to any random project compared to what a "news" blogger that needs to generate hits wants you to think the average project is like.
To address a meta-question: I disagree with the people who claim that you shouldn't contribute to a project for any reason other than intrinsic interest in the product itself. Most people, after all, work for extrinsic reasons; it's a normal part of life. There is nothing wrong with contributing to an open source project to improve your programming skills, boost your resume or pay some of your karmic debt to your species for the gift of your life. These are all valid reasons, and all are flexible regarding the specific nature of the project.
I'm a Mozillian myself and I can tell you I wouldn't have been one if the community wouldn't have showed me such a great and kind support since the first minute I decided to step in a introduce myself. Plus we breathe OSS and have multiple talents of every kind.
Mozilla works serving, promoting and protecting the Open Web, and provides the tools to do so by ourselves. Firefox is -mostly- a community effort, with translators, designers, and coders from all around the world.
If you decide to join, feel free to say Hi in the forums of the community: https://discourse.mozilla-community.org/
Just try to ask in general, see applications you use frequently: Desktop, web, and browser based. Programming languages, and websites you find yourself in frequently. See if any of those are open source, and then send the author(s) an email, ask if they accept contributions.
Do make sure to ask, I've had cases where I asked an author if they accepted PRs in general, and the response was "I'm sorry no, I would much rather maintain full control over the codebase", which is perfectly fine, in general, find something you are passionate about, and then try to help.
I would really advise against starting open source contributions just for the sake of contributing to open source.
When you go into a project the existing contributors will likely have to spend time, and effort grooming you into someone who can properly navigate the code base, in my experience people who join a project just for the sake of joining something, or because they want to have "Contribute to Open software in my free time" in their resume tend to drop out pretty frequently, and it's just painful for all parties involved.
I've also been somewhat involved in Ansible's community, and it's been nothing but a positive experience so far.
It's interesting to compare some of the different communities; some seem to value technical competence over diversity, some UX over architecture, etc. It's probably easiest to dip your toes in the water and just make sure you can get help early onjump into IRC or forums and see how people react to some initial questions you have about the project.
I'm very happy to say that everyone on our team is kind and supportive. I'm also happy to say this is not a unique trait of our team, it's something you'll see in a lot of open source projects.
Feel free to shoot me an email (in my profile) if you're interested in LXQt.
Presto team is just awesome.
Edit: Here's a great example of the JuMP team debugging somebody's particular script, running it, and benchmarking it - all because somebody filed a Github issue. https://github.com/JuliaOpt/JuMP.jl/issues/614
I have pitched in with a few (simple) commits once in a while and am looking to contribute more regularly.
Here's all the code: http://github.com/zeromq/
And a very comprehensive guide: http://zguide.zeromq.org/page:all
And, the contribution process followed is known as C4: http://rfc.zeromq.org/spec:22
You can get in touch via IRC, which is #zeromq on irc.freenode.net ; Try to linger around after asking your questions, and someone would eventually respond.
You may also send in your queries to the ZeroMQ mailing list. (http://lists.zeromq.org/mailman/listinfo/zeromq-dev)
Some of us also hang out in the #zeromq channel in the Slack group for Golang: http://gophers.slack.com/
The TinkerPop project is thoroughly documented, questions in the user groups are answered fast, and the R&D keeps pushing the space forward. For example, check out this new paper by Marko Rodriguez (TinkerPop founder and creator of the Gremlin graph programming language):
"Quantum Walks with Gremlin" http://arxiv.org/pdf/1511.06278v1.pdf
Here's a quote from a community member:
Something like 13 yrs ago, I was trying to do server-side Java. It was a nightmare, until I discovered a thing called Apache JServ. It was simple, elegant and the developer group was wonderfully supportive and well organized. Just as with JServ, way back then, Tinkerpop has all the same characteristics, and gives me the same feeling of having hit on something really valuable that will take me a long way. Well ... JServ morphed into TomCat, and I've used it consistently ever since. I'm confident Tinkerpop is going the same way, so I'm only too pleased to help where I can. Sincerest regards, Hasan
Disclaimer: I am a TinkerPop contributor.
Ansible FLTK SCons (when I used it. I wouldn't recommend the project, but I do recommend the community) Nim Python ffmpeg (mostly supportive, but expect you to be mannered too)
Any of the other libraries on:
We (myself and the rest of the oslo team) try to be friendly folks so feel free to drop by on freenode at the #openstack-oslo channel.
Other openstack projects:
* Rancher - https://github.com/rancher * Weave - https://github.com/weave.works * OpenStack (IRC) - irc.freenode.net #openstack * Kubernetes - https://github.com/kubernetes/kubernetes * Docker - https://github.com/docker * EmileVague - https://github.com/EmileVauge/traefik * Enspiral - enspiral.com * MetaMaps - metamaps.cc
....That's an incomplete list of projects whose teams have put up with me, and even gone so far as to ask for more. I've worked in OSS for a little over a year now, and I can heartily say that I haven't regretted the decision once.
I really do enjoy the Nylas team and are well receiving of any issues I find or any support I need developing a plugin.
Great community, has a very friendly Gitter chat room where people collaborate, very nice maintainer as well.
A few great points:
It's the first language/open source project for me that I consider having "the" community, or at least one I care about being a large part of. I was mostly doing C++ before Go, and that didn't feel like something that had a single unified community around - there might've been many different ones.
But yeah, I've really been enjoying Go, its community and the project's future prospects.
When picking an OS project to get involved in, there are only two suggestions I have:
1. Make sure there's a fair sized community behind it with > 1 committer (not much worse than getting involved with a project that just dies)2. Make sure it's something that's going to hold your attention for a good while and it's something you're passionate about. Generally, contributing to OS projects isn't really a fly by night thing (of course depending on the level of involvement you're looking for). If you get involved with a project that has a great community but isn't something you're actually passionate about, chances of long term involvement aren't really high.
From personal experience, the Python community has been the most enjoyable for me to date. Filled with academics and hackers, scientists and CRUD so developers, I have yet to see another community filled with such diversity from which comes intelligent, positive discussion and results.
If you're interested in physics, mathematics or other sciences, I'd recommend SciPy. I attended one of their conferences and met many really nice, kind and talented people. (Open Source conferences and meet-ups are a great way to get to know people and kick-starting contributions.)
Odds are you know how to set them up, configure a few things, and the like. In most cases, a few pull requests to the docs are not just welcome but greatly appreciated.
(I've been managing projects since 2007 and participating since 2001.)
I've also been impressed with the user experience of the product. Installation and configuration was much easier than I expected, and then it just runs!
Its one of the reasons I got back into game dev and chose to use this engine.
The engine itself is state-of-the-art and the improvements per each release is AWESOME.
As the engine is a commercial offering that is open source, there are a lot of people involved. This makes it easier for new people to get onboard.They twitch on a biweekly basishttp://twitch.tv/unrealengine/
Have a look at the last two release notes for an example of what they get up too.
If I recall correctly, 4.11 is more a stability release then feature release. It is the release currently being developed. Check out the Trello board to see what features are being developed where
I'd advise to sign up for an account, link your github account, have a look through and join the forums.
I've got the same account name on there if you have any questions.
It's a community of individuals who are very talented, patient, helpful and inviting.
Disclaimer: I work at Mesosphere, and one of the co-founders of Apache Myriad.
Also if you have a truly good idea, it will be heard and implemented.
I think this 'niceness' comes from being a small, dedicated, growing community based around learning and having fun. If the community is already large and successful, you will just be a small cog in a big machine.
Rubycorns of Rails Girls workshops
I have found the twitter/finagle guys to be very welcoming:
The author has gotten involved personally to help me with issues I was seeing. He provided advice on architecture and use case, and he does an extremely good job of keeping the product current.
Very appreciative, smart, and plenty of room for beginners.
I wrote in more detail about it half a year ago: https://jeena.net/indiewebcamp-2015
Talent off the charts. Very nice people, and very supportive.
I think you'd be a lot better off looking at projects you are currently using, or in areas that are interesting to you, and hanging out in their IRC channels, reading their mailing lists for a while, checking their bug tracker, and tinkering with their code.
At the very least, you should clarify how you want to help out, what you're interested in doing, and what your skill set is.
The way it's phrased right now, you'd get more meaningful answers just randomly clicking projects on GitHub.
Disclaimer: I'm the founder of EverythingMe, re:dash was born in one of our hackathons but have since become its own beast.
I like the discuss forum they have, it's not particularly high volume and people are pretty good to each other.
Probably the thing that sets any receptive project is its ability to identify areas where it needs help and setting aside well defined (and documented) projects in those areas. In many projects, there's lots of work needed to be done but the priorities aren't obvious and so lots of contributions get left on the floor because they're just not in any way priorities for the active maintainers. it takes lots of work and maturity for a project to advertise this sort of stuff which is why these situations seem few and far between.
Regardless, try to invest time in filling in the current needs of projects rather than unsolicited work. some unsolicited work (bugfixes) is easily accepted, but features are often hard to incorporate especially if they're not aligned with the short term goals of the project.
Hope it helps
The community is awesome and very friendly and helpful though, and I reckon most of my contribution to redis has been as a community member helping out others or getting involved in discussions of redis' future, which is also a great way to get involved.
I'd barely joined the IRC channel and was discussing UI enhancements when it was mentioned I could have my own branch on their private Git repo server if I wanted :D
That was hugely welcoming, in my book!
I've been contributing there and my so far my personal experience has been positive, fun and challenging at the same time :D
There's literally a ton of different things that you can contribute on and while there is some initial friction in getting patches accepted, they always make sure to point you towards the right direction to get your patch accepted. They also hold annual conferences (wineconf).
Check out their website for more info http://winehq.org/
There is no shortage of amazing teams working on amazing projects on the web.
Its hard to single out just one of them - so its best if we could know more about your background.
If you are unable to find anything that is good enough then just start your own !
Do not be be demotivated - as long as you find it useful - someone else somewhere will also find it useful.
Even simple logging libraries have their audience.
So good luck !
I tried to post a link to ReactOS via submit to find out I got the "Whoa you're submitting too fast" message, so I lost submit privileges somehow. I apologize if I submitted anything wrong.
Creating a free and open source alternative to Windows that uses Windows apps and Drivers, one that isn't based on Linux is really hard and need really talented people to keep compatibility with Windows.
I think when their 0.4 release is available, it will do better than the 0.3 releases. With Windows 10 giving people privacy concerns there needs to be an alternative that runs Windows apps to compete with Windows that uses Windows drivers.
They just got Steam to work with it and if they get some of the Dotnet libraries and DirectX to run some of the video games, they can put a dent into Microsoft Windows usage.
Yeah I know can run WINE with Linux, but ReactOS is targeted at people who can't figure out Linux but want a Windows type OS.
We're an Open Source Firebase, with graph data structures and a decentralized architecture. Please give us an email so we can help, mine is mark@gunDB.io .
When there is no more discussions and everything looks nice the project as either became proprietary (apache, mysql, nginx), mummified dead (tex) or religious dead (GNU+HURD), or soon to be kind of proprietary (mongodb) or dead of shame (rails) or dead by tyranny (openBSD) or it is a zombie (perl6) or dead from laughing (agile) or dead by bloat (node, angular, react, riak).
Well, Choose 2/3kind & supportiveopen sourcealive
For example the consensus on PHP is vastly due to either true pro making real money out of fixing the mess of PHP spaghetti code, and people having real better tools to make better code.
PHP is thus a good example of a dead project that ignores it.
PHP is quantically dead.
Great team & Great project
Ethereum - http://ethereum.org
If you enjoy Python, RESTish APIs and all sorts of database backends, you can checkout http://Ramses.tech a project that I'm involved with.