Ask HN: How can I be productive interning remotely?
I'm a senior undergraduate Computer Science student, and I recently began a paid internship position working remotely with a startup during school.
It's been a bit of a rough start, and I'm having trouble getting clear tasks with well-defined requirements. The company has only begun working with interns in the past few months, and had very little in the way of established workflows. I effectively report directly to the CEO, who is an alumnus of my school and doesn't seem to have experience managing software projects. They only started using task tracking and workplace communication tools in the past few weeks, and so far I've primarily communicated via email and calls. I'm beginning to feel quite useless, as I have no real idea of what's expected of me or what the acceptance criteria are for the feature I've been tasked with implementing. Said feature had a rather unrealistic deadline to build from scratch, even for a professional working full-time, let alone a college intern working remotely for maybe a dozen hours a week. There are a number of other things regarding the company that strike me as red flags, and at this point I'm not sure it was a good idea to accept the position. I'm interested in the work being done though, and I think it could be a beneficial arrangement for all involved if the managerial/logistical issues can be sorted out.
So how can I make the most of this experience and provide as much value to the company as possible?
42 comments
[ 2.7 ms ] story [ 102 ms ] threadHaving worked remotely for a number of years, and having run a startup, I think this is the root cause of your issue. You're not going to get well defined requirements because the definition of "well defined" varies from person to person, and because startups generally don't plan features in great detail (tbh, as a rule established businesses don't either).
If you want to make a bigger impact, start being more proactive in asking what features need to do in order to be accepted. If you don't know something, think about it, then write a clear document that sets out what you think you need to do and points to specific things that you need clarification about. That's what I'd expect any developer to do, regardless of whether they're an intern or an experienced lead developer. The key thing no one in a business is simply there to execute instructions. You have to think for yourself.
tl;dr If you don't know what you're supposed to be building there's no way you can build a thing that works, so think through the problem and ask good questions.
If you want to have user stories and mock-ups, start spending your time making those yourself and push them back to whoever is giving you the requirements for comment.
If they question the need for you to be spending time doing that, it's an opportunity to ask for more specific direction on what you should be spending your time doing. Chances are it's a classic case of not knowing what they want, but knowing what they don't want, so by having their requirements reflected back to them they'll come back with "Ah, but what I meant was..." and you'll get more clear requirements.
If it's still murky after that and you really can't get more concrete requirements than "We need this magic box made" then consider that some places genuinely just aren't good places to work, and consider this a learning opportunity and point for future comparison.
If (1), you're probably best served not asking for much help. If (2), you need to educate & manage expectations about the complexity and necessary steps for the feature. Either case, you would probably be best served by prioritizing the input/output functionality (input a picture, output a prediction) over optimizing precision/recall on the algo. This allows you to 1) show progress to others and 2) you can start having conversations about false positives/negatives by showing different images and the prediction output.
It's important to mention that this is independent of being remote.
You might also consider getting a mentor within the company. This is how we do it at $employer; you report to a manager, but your tasks and assistance come from a single mentor whose purpose during your tenure is to guide you towards completing your assigned project.
Have you been given a large but attainable project, or are they expecting you to just fix bugs and the like?
The mentor system was extremely valuable for me in my prior internships, but as I transition into industry I feel that the impetus is on me to learn how to work without a mentor, which I think is what I'm struggling with.
It's a large, attainable project but on an unrealistic timescale.
Planes exist. This is a trivially-solvable problem. Yes, they cost money - but the time savings from improved communication will amortize that cost very rapidly.
If what they're paying you won't cover a plane ticket in a week or less but they're expecting you to ship features solo, GTFO. There's a clear line between "internship that pays below market because learning" and "bullshit job that pays below market because interns don't know any better".
On a final note, the whole "I need to learn how to work without a mentor" thing is really odd. That style of learning, IMO, actually becomes more important post-graduation...
There are plenty of non-intern employees who have mentors, that's how we do it at where I am currently working at least. I see nothing wrong with that, there's no reason why you wouldn't have one either.
As a junior, remote employee you're not in a position to significantly effect the outcome of the business.
Many companies also don't know how to communicate with remote employees well. Not replying to emails.
So... try your best to engage with company and observe how the company works. Learn the warning signs, learn what issues they face. These should all be hugely useful lessons.
But don't expect the company not to be a train wreak or to be massively successful. Those things are quite rare.
Communicate more frequently. If you’re not sure what to do, ask someone. If they don’t know, ask someone else. You certainly don’t want to bother people every 5 minutes, but if you’re stuck for hours each day that’s not good for anyone.
If possible, get them to tell you the most basic subset of functionality you can build at first. Build that. Take it to them and see what they think. That will probably give them a far better idea of what they want.
Turning vaguely defined task into something tangible is usually the most difficult, and most important part of the task, but it requires some experience.
In the beginning you need to learn the internal know-how, and this requires regular prompt answers. Otherwise, you will stay blocked and frustrated most of the time.
Remote work is fine when you already know the domain, but that's not really what intern programs are for.
That said, you can try to write design docs where you put your questions. Note that it's not really about writing a specification, but about writing down what you know and what you don't. You can speculate about answers to your questions, and this way make your manager understand what you're missing.
I'd argue that it depends on the rest of the team. The OP didn't mention whether he was the only remote or not, but if so then I agree; it's a lost cause, and there's no way this is going to work. But if he's joining a team of other remotes they can make it work if others are willing to try.
FWIW it's a common symptom of too busy a manager. Most managers are too busy, btw.
What's happening is that the CEO is probably thinking something "I need to take some time to itemize this task so he can work faster" but doing so is lower priority than that day's urgent fire.
> How can I make the most of this experience and provide as much value to the company as possible?
The best way to provide value to the company in your situation also happens to be the one where you'll make the very most of the experience: manage yourself to the point of being nearly or entirely autonomous. Examples:
The task itself is vague or unclear? Expand a bit on what you feel the task is, what it's for, etc. in writing, and submit that for review.
Next steps are vague or unclear? Expand on the DoD (Definition of Done), itemize the way forward, and submit those for review.
Does the usefulness of this/that new feature sound fishy? Ask about it. Not satisfied with the answer? Ask if they don't mind you getting in a Hangout with a few end-users to validate the idea's merit? Assuming they accept, then do so and report on your findings.
Every little step where they don't need to think for you is a step where you'll learn more and where you'll make yourself more useful. Have the company's end-goals in mind at all stages, take initiative, put things in writing (this is crucial for remote work), and you'll do fine.
This has been my strategy for years working for busy managers.
You have to make the life easy for them. Try to avoid sending open ended questions to them, instead send something that they can either sign-off fully or partially.
If you can't detail out all the requirements on your own, try to reduce the scope of the task until you can and try to give enough context for the manager to say Yes/No.
Also, if anything is vague and you manage to setup a video call to clarify it then make sure to create a slide with your topics on and walk them through 1 by 1. My experience is that visionary minds like startup CEOs have a tendency to go completely off-track otherwise.
It's even better if it doesn't matter what they pick (because all of the options are excellent choices) ;)
being an individual contributor (i.e. dude with a job) at a startup is different than a big corporate job or government work. you have to be able to define your own tasks given vague requirements. you have to be able to actually get shit done without someone telling you to get it done. after working in startups for decades, many other jobs seem like adult daycare to me.
for people who thrive in autonomy, have decent common sense, and an understanding of what the business or the customer is actually trying to accomplish, it is a wonderful environment. this doesn't mean lots of experience -- some people just have this knack, others don't.
fwiw, a large contributor to employee churn at startups (to the extent that it exists) is because you can find out so quickly whether or not someone is full of shit -- they actually have to deliver working stuff fast. in larger organizations they can just hide in the decision-making lagtime/chaos for up to years at a time.
So the question of how to be successful should be whether or not you can do something positive, showcase your skills and learn about industry at the same time. If you even get a hint that it's about you producing value to the team, I would consider moving on (given what else you have said). There is no point in being set up for failure.
Most of the time with interns, I have to scramble to try to find some vague connection with what we are doing. The intern will feel bad if they realise that they are doing a make work project. In reality, though, it's all about the intern. Especially with talented interns, we just want to make the experience really positive and don't care at all what they do.
Self direction is the key here. All you really need is the outcome desired and the 'why?' - these should enable you to start and hopefully feel you are making an impact. Take it as an unbelievable opportunity, you're basically being given a project to go wild with, manage yourself and make your own decisions. Things might fail, it might take longer than they thought - but as many others have mentioned communication is the key!!! Write out YOUR plan, tell them what you're gonna do, give them an idea of time of the first few parts - and be realistic and transparent. This is pretty much all they can ask of you. Have fun and learn :)
This perfectly sums up the life of a developer working for a startup. If this isn't a thing that you're comfortable with then you should probably find a company a bit further down the line where they're able to nicely bundle up tasks for you.
1) The biggest one that jumps out is having an intern working remotely. First, I am surprised your school would even allow this to happen. To be honest, this almost sounds like a favor from an alumni CEO to the school and he/she could really care less about having an intern. Internships are supposed to be learning experiences. You should be immersed in an environment to give you experience. In another post, you said something about the company is in Silicon Valley and you are in the midwest and that you can't spend any time with them. To be blunt, that is a lame excuse. You should ask them to fly you out, or even cover your own travel expenses if they won't, to even spend a day with the team. Meet them, work with them in person.
2) Most startups themselves don't always have a clear path and they still may be working on defining the tasks that need to be done. Are you the only one working remotely? If not, you should see if you can be involved in their meetings. See what they are working on, how their tasks are defined, and what their deliverables are. Find ways to work with them or emulate their delivery process. If you are the only one working remotely, the company probably could care less about you as an intern. I don't mean that rudely, just that they look at it as they will give you a project, if you get some done great, if not oh well nothing lost.
Imagine yourself as a part time employee rather than an intern. Imagine if you don't figure out how to impress, you'll be fired. (As an intern you're basically fire-proof.) This means that you need to become more autonomous and take the initiative. If something is unclear, creatively interpret it into something that is clear, and work on that. Make some progress, or write up the more concrete version, and get feedback. While waiting for feedback make more progress. If you are blocked, ping other people on the team to see if you can help them out with anything, or if nothing else find bugs, fix bugs, and/or write test code. There is always stuff to do.
You mentioned an example task "tell whether a picture is of a bird", if that's all I had to go on then I'd search for a few online image classification service providers and write a shell script or whatever to send the picture to them and report back. Done. When showing the implementation or the write-up in review, if there's something that the CEO doesn't like about the solution (he wanted you to do it by hand, or wanted you to use a particular machine learning or computer vision toolkit, or integrated with a web api, or wanted you to go out and take a bunch of reference pictures to train a neural net on...) then his complaints will make what he originally wanted more clear. Repeat.
For the remote aspect in particular, schedule a daily (or at the very least every other day) one-on-one meeting over Hangouts or Skype with the CEO. Time box it to 15 minutes though 30 might not be bad either. If the CEO can't make these, ask him to find someone who can and who will effectively become your new supervisor. You want these meetings to first be about any concerns you want to raise (like feeling directionless, or that some deadline is too hard for the vagueness of the task) and second about your general activities of the previous and coming day so people are in the loop with what you're up to. Also encourage the whole team to get on irc/hipchat/slack/matrix in an all-team channel. Assuming the company consists of more than just you and the CEO, it's crucial you have contact with some portion of the rest of the team, and be able to ping them in real time to ask "can we jump on a hangout meeting real quick to discuss x / share my screen and look at y?"
Something seems awry.
i) Write down exactly what you think the task might entail and email the CEO / manager. If you're off the mark, you'll get corrected. If you're on the right track, you'll get the go-ahead. Either way, you'll have a clear path forward.
ii) YMMV vary with this because of the different job roles, but I'll often just figure out a good solution to the problem, implement it, and see what happens. In my experience, tasks are ill-defined and vague because the manager has only an ill-defined and vague idea of what they need. In solving the problem, you do the thinking and clarification so the manager doesn't have to.
Hopefully, you're at least getting paid.
Anyway, the big lessons here are that most people ignore remote workers because managing them is significantly more work than when co-located and perhaps more importantly, the most important aspect of developing a career is meeting people and getting to know them.
Good luck.