I’m a student in a subfield of CS and biology, getting my bachelor’s degree later this year and planning on continuing to masters (and maybe beyond). My ultimate goal is to work on the edge between biology, CS and datascience, preferably in an industry-backed research centre (think: Microsoft labs, or Deep Mind).
I decided that when it comes to my current career possibilities, I will prioritise learning before anything else. The question is, how do I do that? The process is two-fold: first I have to choose a workplace, and once I’m there I have to do certain things in order to reach my goal. The “best path” will then be a combination of those two things.
I’m lucky enough to be a very good student, so with some amount of effort I can get to most places I’d like. The possibilities are roughly:
a big pharma corp, in which I’ve worked already, and that has some really brilliant people in it
a research centre, in which I work at the moment — this would be probably the only place to do proper scientific research in, because I think they don’t open student positions in industry R&D labs
a big non-pharma corp (FAANG?)
Which one of those do you think should fit my goals the best? And what do I do once I’m there?
To maximize learning, my main advice is:
Don’t go to a big company research center. Go small—the smaller the better.
Don’t stay in one place too long. Startups in particular are good for this—spending 6-18 months at a company is considered normal in that space.
Out of college, I spent five years bouncing around startups of various sizes as a data scientist. My girlfriend spent her first five years out of college at Google. In terms of learning, there was no comparison: I experienced multiple industries, multiple tech stacks, worked with multiple teams, and within each job I wore multiple hats and did a variety of different kinds of work.
At a job, you’re going to learn the most within your first few months with a team or your first few months filling a particular role. After that, things slow down a lot. So, to maximize learning, shorter stints with smaller teams are best, since they force the most variety.
Thanks, this is a nice POV, and sounds about right. Once I’m there (wherever that is), what should I strive for? Being in a small team with a dedicated person to ask things? Or being alone so that I ave to do everything myself, i.e. learn to do everything?
That’s the problem I see with going small, by the way. I think having a ‘mentor’ (or something as close to one as possible) would be really good for my learning, but show me a startup that can afford more than a week or two of onboarding time; I’d be afraid they just show you the basics and leave you to struggle alone.
My current model is that people usually learn better by having to figure things out IF they don’t just break down under the stress. If you aren’t too stressed out by feeling lost and confused and having to figure it out on your own, and/or you can handle the stress, then that’s probably the way to go. But for a lot of people, one or both of those conditions do not hold.
It is a lottery. You may meet awesome experts. You may also meet people who know less than you do, but have high status within the company, because they were hired 1 year before you and they suffer from a strong case of Dunning–Kruger syndrome. Often it’s something in the middle: people who have lots of experience and lots of strong opinions, some of them wrong, but they generally get the job done.
I am not sure how typical is my experience, but I learned most when I first spent some time in a team that worked with some technology, and later was alone or almost alone on a different project (sometimes in a different company) that used the same technology. Within the team, I learned what are the right tools to use, and what can be done with them; later alone, I had to connect all the pieces, and fully understood the big picture.
Without previous team experience, I wouldn’t know which technologies to use. It is difficult to make a good opinion on a technology without using it first, and there is not enough time to try them all. You need luck; or a trustworthy expert who already tried them. Popular opinion is unreliable, because many people are stupid, so they praise or condemn things for wrong reasons. Also, if many people complain about X, it may be because X is shit, or it may be simply because many people use X (probably because it does its job well).
On the other hand, if you work with a more experienced team, the important decisions are made by someone else (sometimes before you join the team), the infrastructure is already set up, and you can develop within the existing project, but you never know whether you would be able to set up a similar project from scratch—and that’s a difference between junior and senior developer.
Make notes. Remember that when you change jobs, you will never see your old code again. Today, if you need to make e.g. another controller, you probably look at the one you made a month ago, and follow the same structure. One day, this will not be an option. But if you make notes and keep them… you create something like your personal Stack Exchange. (Don’t copy existing parts of code, especially ones containing business logic, that would be illegal, of course.)
If you have enough free time, try getting information from sources outside your job, so that if your colleagues do some things right and some other things wrong, you have a chance to get a second opinion. On any topic, there probably already exists a book; read it. Read the official documentation. Read the ancient classics, such as The Mythical Man-Month, Clean Code, Design Patterns.
Try to create a “hello world” project at home, using the same technologies you use at work, or replacing commercial tools with free ones (e.g. PostgreSQL instead of Oracle Database). This project you can legally keep after you quit. Now you kinda play the role of a senior developer, only without the stress and deadlines. If you can’t solve something, it means you don’t understand the same thing about the project at work, so you can explore it, or ask your colleagues. You can also try new technologies at home.
The disadvantage is that doing this seriously takes a lot of extra time. When you get older and have kids, this will not be an option anymore. Hopefully by that time you will have accumulated enough knowledge and experience to survive on 8 hours of work a day, maybe even retire early. This is a reminder that if you work hard, you should also negotiate for your salary hard, because your current level of hard work may be unsustainable in long term.
I did a few things early career, I’m mid career now, and not particularly successful, but I did learn a lot.
spend the $ price of a semester of college annually on professional development in the form of learning, bias towards things without a credential and with built in tests, use all vacation time to pursue this.
whenever you have a chance to interact with someone who knows something about a field you don’t, get book suggestions, and put together a bibliography. Who knows when or if you’ll get to it, but between scihub and libgen, you’ll at least be able to access it.
I chose work that would challenge me, sometimes getting thrown in the deep end helps, sometimes you drown. Good luck! If I could go back, in time, I’d probably have picked different subjects, and gone with ‘full years tuition’ per year rather than semester.
I understand your point, however on the other hand isn’t this unhealthy? It’s actually an interesting question; ‘workaholism’ is usually looked down upon, and this could be classified similarly, but what about situations when the persons really enjoys the ‘work’? But then, don’t alcoholics also enjoy drinking?
That’s wildly off-topic, though. Thanks for your viewpoint, I think in general it’s important to realise that it’s good to invest both time and money in learning, even outside of school and work.
I found it fun, in some cases it wasn’t ‘recharging’, in others it was. All in all, ‘take a vacation and learn something new that’s only vaguely related to my day to day routine’ was pretty great.
I still take vacations like this, and have now reached a point where I am running out of ideas for them
There are people who like to spend extra time at work, in order to avoid their families. This would presumably not be your case.
Doing voluntary overtime is frowned upon by colleagues, because you are defecting in a Prisonner’s Dilemma. By sacrificing your free time to Moloch you may make a better impression than they, but if everyone followed your example, you would all be worse off (except for your boss, who would get a lot of extra work for free). Also, some colleagues would not be able to follow your example, e.g. because they need to take care of their families. The company would be tempted to fire them, and replace them by more people like you. (Only to fire them when they get older, and replace them by another fresh wave.) Please, do not defect against the social norm of 40-hour work-week! -- This again would not apply to you, if you do the extra work outside your job.
Then, there is also a question of alternative things you could have been doing in your free time.