Avoid Working Alone
letterstoanewdeveloper.com
letterstoanewdeveloper.com
I agree that it's extremely important to work in high-performing teams, or at least teams that are really good at something. That's true whether you're new or not, since by definition the team of which you are a member will have more aggregate impact than you will.
But working alone is critically important for all the pieces of the development process that aren't technical. Learning to represent yourself and your ideas, execute on the effectively, and drive them to completion without help-- those are the skills which will consistently produce success and whose lack will consistently produce failure. And IMO, you only really learn them when you're on your own and in the crunch.
So if you feel like you have those skills, seek collaboration and the wisdom of crowds. If you don't, I think you're better off seeking challenge and the risk that comes with it.
The blog is explicitly aimed at new developers. For them, I think working alone is a really tough spot, because they're going to have a hard time learning on their own, they won't have anyone to bounce ideas off of regularly, and they won't have someone at work to mentor them.
For developers later in their career, I think your advice is spot on. I remember lying on the ground struggling to solve one of the hardest problems I've ever tried to solve (as co-founder of a startup) and I'm proud of that solution. Having someone there would have helped, but wasn't required and probably wouldn't have helped me grow as much.
But as good and valuable as that is, I think everyone needs the experience of solving multiple, hard problems mostly using books and the Google machine. You can never be senior until you can solve hard problems without someone holding your hand.
... isn't that by definition what a mentor-mentee relationship is?
If you find someone to mentor you in programming and they are on your team at work you are more like peers. Equal and in some cases the mentor becomes the mentee when another subject is in focus.
It's more of a peer to peer relationship.
For people who are very analytical and self-motivated, i think it's fine to suggest reading books fairly early on in their development and just be there to answer questions or indicate how those theories are applied in the company's processes and tooling.
In this case the challenge is more around finding a book to suggest that suits the work. Coaching can end up being more around where to focus or how to skill up on one topic at a time.
Some people find it tough to digest knowledge in written form. In my workplaces this is often compounded by many good tech resources only being available in English and many developers not being native English speakers.
In these cases i have found it helps to start with pair programming (best case) or detailed code review (at minimum). After each "learning session" you can then provide links to references (book, article etc) for more info or background on the comments. This helps contextualize the theory upfront and shows the value of the source.
Sometimes when a certain source is referenced frequently, people take the initiative to read it to better understand the fundamentals for future work. Sometimes they don't.
That's where management comes in, i think. Regardless of whether a person chooses to learn with a book or some other source, at some point they are going to have to be able to solve challenging problems on their own. Managers are able to facilitate growth by allocating tasks that are at the right level of complexity for the dev.
I think the point is that it's not the job of a mentor to step in and solve the mentee's task, but to provide support and explain what sort of techniques and resources may be helpful to solve it. It's still up to the mentee to do the work.
Most senior developers and teams have made choices and they’ll be able to tell you what works and doesn’t work in their shop, but that’s often not universal or even good advice for new developers.
I think the hype around kubernetes is the perfect example of how terrible experienced developers are at making decisions. I’ve seen more teams fail at it than succeed, and none of those teams, even the ones who succeeded actually needed it because their max-load didn’t ever even require them to have a load-balancer. Yet, I’ve yet to find any senior team who was sound enough to realise that they aren’t Netflix.
You won’t really get good mentorship from that. It’ll just feel like that because they are less insecure, but in reality, people aren’t actually very good.
I think the exception is if you make it into something really high end R&D, but chances are you’re already better than 99% of us if you do.
Mentoring is however wildly effective at helping people get to grips with tools. As an example learning django isn't particularly hard, it has a great tutorial, but I wouldn't be surprised if a junior programmer with no web framework experience would learn it twice as fast if given someone that'll answer their questions promptly.
Communication systems were a lot different when I started in the tech world. But it's really really hard for me to imagine starting out in a world where I was sitting in my apartment all day. Remote doesn't mean working alone of course. But I would certainly have found the relative isolation difficult even given today's messaging and videocon apps.
Some people just thrive off teamwork (Like me.) I doubt that's true for everyone though.
I just wish it was easier to get a "team" for unimportant hobby projects, going it all solo is tiring.
Sure, but good engineering happens with closed feedback loops. Even if you learn to check your own assumptions, users still need to be informed, documentation improved, subsystems integrated, new platforms supported.
Good engineering is a team sport.
So maybe you can turn a confusing stack trace into a patch on your own. Great. Tru success happens when you ship. And shipping to yourself is rarely interesting.
In one context, it could mean being the solo developer on a project. In another context, it means avoiding what some people call "pair programming."
This article clearly implies that a new developer should be part of a team. It never alludes to pair programming.
Why is being a member of a team important for a first developer job? There's a lot of things left out of a typical Computer Science degree that are needed to be an effective programmer. Being a member of a team is the easiest way to learn these things.
(For example, we never discussed source code control in my school, or why someone would deliberately denormalize a SQL database.)
I would actually argue the opposite. Work with someone more experienced on the non-technical parts and do the technical alone.
Finding online resources for technical problems is easier in my opinion. But for non-technical you're probably going to need domain knowledge or just plain experience to complete and getting those are so much simpler when seeing examples of it from others
This might depend on the individual but without seeing some empirical evidence I'm not convinced that this advice is that useful.
I do notice in technical arguments on the internet I often seem to come out of leftfield. It took me a while to realise it was because people in larger teams have an entirely different perspective when it comes to tools and technology. I need a Toyota and they need an Airbus.
This is a great point - “horses for courses.”
The interesting thing about our industry is that give it 10 years and your Toyota will get you and 150 of your friends from LA to NYC in 5 hours.
If you stuck with Rails and Postgres for the past 10 years, your “solution power” has probably expanded nearly 10x due to improvements in the hardware and software ecosystems. That’s just one example - pick your stack and the statement probably applies.
I don't know about the advice to take the job where you learn the most. It's great advice for startup founders and company owners who can get naive young new graduates for below market rates. Not so great for the graduates themselves.
See, jobs that pay a lot are typically demanding of your intellect. You're going to need to learn a lot to do them well. But beyond that, you have limited time on this Earth. If you've decided you're going to trade some of it away for money, it seems wise to make sure you're getting as much back in exchange as you can, other things being equal.
I've known a number of people who did the naive, idealistic thing and worked for a string of startups in their twenties and early thirties. But, inevitably, most of those companies end up failing -- that's the most common situation -- or paying out what amounts to a nice bonus after years of high risk, high stress, labor paid below market rates. BTW, that second scenario is the 99% best case scenario.
Sure, if you're this person, you've had some exciting times. But you didn't own those times. Those were the founders. You were just working for the owner. And now you've finally wised up, but you're ten to fifteen years behind the ball on saving for retirement or a house.
A lot of young people really can't understand how big of a problem it can be to just be getting started on this stuff in your late thirties. It seems like you have all the time in the world, but you really don't. Fortunately, in software engineering, we're paid so well that a frugal person can do a lot of catching up. But if things don't go nominally, shit can get rough.
Just throwing this out there. I think the "work to learn" advice is idealistic, but I don't think it necessarily serves every potential recipient. Or even most of them. If you don't have family money to fall back on, consider putting on your life vest by putting in a few years getting paid as much as you can, then consider whether there's something that's missing from your career that could be served by taking the high risk, learning-focused job. Or, just jump right into founding companies. But don't work for below-market rates and a tenth of a percent for a startup founder who probably has a trust fund.
Well, everyone is entitled to their opinion.
For what it is worth I don't think a startup (or, for that matter, any place that treats you poorly) is the best place for a new developer. Having been part of a couple of startups, I don't know if they are the best place to learn (especially for new developers). Often, chaos reigns, it's hard to get direction, and stuff is often on fire. Not an optimal learning environment.
This varies for different risk profiles, learning styles and long term career desires, but if forced to choose I'd probably pick a small consulting company as the place where you'd learn the most. (BTW, you'd probably get paid decently as well, since there'd be no options at the end of the rainbow.)
I actually wrote about this here:
https://www.culturefoundry.com/cultivate/digital-agency-life... That said, my advice is anecdotal and based not on science or statistics, but on my experience. So it may not be worth much more than you paid for it.
A start up might absolutely not be the right way to learn though. Joining a mature and disciplined engineering organization might instead be a much better choice for learning.
Your kind of advice my friend contributes to the trap.
I had a couple jobs I took mainly for the money. They were soul-deadening. Maybe some people can handle that, but for me it's a recipe for burnout.
The interesting thing is I made, by far, the most money running my own company and doing work I actually enjoyed.
Some of the most talented people make squat and yet, lots of mediocre talent is making bank because they worked the system and leveraged what they could to make more money.
But the most important thing is impressing people once you get an opportunity. When you get on the stage, you gotta be able to sing. That opens doors more than any other one factor in my experience.
Ah, the standard phrase used when people try to get you to work against your interests.
The rest of your post amounts to: "Doing the imprudent thing X worked out for me this one time, so everyone should do it."
However i don't think that the only place where you can learn is at a startup. On the contrary, i think there is a lot more opportunity for learning at larger companies.
You would have to be very lucky to find a startup with devs that are both good and have the free time to mentor you well. But in a FAANG or a similar company in the second or third tier, you will be working with a lot of smart people who have both the time and a career interest in helping you grow.
Personally i am ambivalent on the value of wealth as an end in itself. For people who value knowledge as an end in itself, i do think it's reasonable career advice to deliberately seek out a company where they can get that support from their peers. It definitely makes going to work to earn the money every day less of a chore.
When you’re new to the field it’s better to work with others than alone. Even if the others are terrible at their jobs, you can learn a lot about what not to do.
I wouldn't recommend this as a way to do business but being paid to crank out feature verticals only to throw them away and start over was a big learning experience.
I've also had experiences more inline with the article as well but it's not the only way to learn and might not be the best even if it's a common, low risk way to learn.
Hell no! This is wrong and I've seen it plenty of times. Dear new developer, go glue yourself to a senior one, make him your mentor and you'll learn a lot. Also a team of only new ones tend to rely on stackoverflow and will result in bad practices in the end. Dear new developer, avoid teams where you have no mentor to learn from. Also, while you're around your mentor, don't pester him before you applied "the rubber duck" technique on your question/problem.
I suggest that the first job you take be the one with the highest learning potential, not the highest earning potential.
The only reason anyone works under another in this modern system is for money. Anyone who claims otherwise is stupid or lying. I'm forced to consider the motivation for giving this advice to new blood looking for employment and it's obvious.
I work alone and I've learned a great deal with only books; note I mean work and not employment, here. Building empathy in the context of employment is only useful for promotions or continuing employment and I disagree with this notion that every programmer must, for some reason, become more empathetic, usually meaning capitulating to certain others, as if all programmers are lacking empathy.
As for your advice to join an online community, it's not bad on its face, but the particulars could be improved, I think. An IRC channel is a good choice; Reddit or Hacker News aren't; those two, in particular, are only useful for self-promotion, as they mostly discuss things happening elsewhere and only even that briefly; conversations don't last months or years in these places; they're unsuited to discussions not based around self-promotion, for the most part; the goal is to have one's link on the front index or collect Internet points, generally. The only reason I have an account here is to promote my work, and I've had some success.
As for an Internet community and making mistakes, you'll feel no shame if you simply use an anonymous form of communication. Imageboards are good examples. You can ask a silly question or make a mistaken claim and you don't suffer social stigma, because there's no identity to start with.
There are many reasons to be an employee. Prestige, social connections, stability, interest, passion, learning and more.
Empathy is not a form of capitulation. Solipsism can be a detrimental.
You talk mad game about what your purpose is posting here, self promotion and all that, but your post is both contrary to that goal and has it's own story.
Even on imageboards you have an identity. You just don't have particular kinds of consequences. Stay off them, they aren't your social skills crutch.
I understand the metaphor you're making, but how was I trying to be cold to start with?
Empathy is not a form of capitulation. Solipsism can be a detrimental.
What I meant is this article assumes someone employed as a programmer needs more empathy and how that's a poor one. In an employment context, I figure empathy will usually be a method of extracting more resources out of an employee, which is what I meant by capitulation. It would be nice to be solipsistic, but I don't feel like creating any startups that violate laws and kill people for my benefit.
I don't talk mad game and I'm merely being more honest about my purpose here than I feel others are. The only reason I made an account here is because my work was ignored and that displeased me, but the one who originally uploaded my work, in pursuit of Internet points, was no longer doing so and so I had to do this myself. My work has received some attention now, but I'm stuck with this account and its posting history, so I continue with it.
Even on imageboards you have an identity.
It depends on how careful one is.
You just don't have particular kinds of consequences.
Is that intended to be a negative aspect? Free speech is freedom from consequences thereof and it's great for a beginner to learn the ropes without an identity, even if the beginner does eventually start using one.
Stay off them, they aren't your social skills crutch.
I don't understand what your point in writing that is. I can't tell if you're trying to give advice or are trying to make demands of me. In any case, I'll continue using them.
I see an amoitnga has also been downvoted for implying that money isn't the ultimate and only pursuit of employment. You could argue that's due to his tone, but I understandably take a more somber view of why that view would be disliked.
Your level of detachment feels extreme to them and upsets them and thus they've deemed it a gimmick/act.
This refutes the topic we are talking about "avoid working alone" which allows a space to defend working with others. You are free to refute working with others all you want, but going straight to "you're stupid and lying" as a refutation is going to put people off.
>I work alone and do amazing things only from books.
I'm sure you do.
>Empathy exists for money or corporate ascendance.
There's more to empathy than money, and going straight to 'empathy is all about making others capitulate' whilst possibly true from some perspectives, is basically the most anti-social stance you could take. Which makes it more uncomfortable in the context of the overall thread and your previous information.
You then take a strong stance against Hackernews, the site you are supposedly posting on and implying most people are here to self promote, or at the least, receive self-promotion posts. Again a very hardline stance against more charitable and warm social stories. It may be true about HN, idk, but saying it nicer or how it could be improved would move how it feels away from a faceslap and towards a legitimate discussion.
You then sing the virtues of being able to make social mistakes on imageboards and the benefits of avoiding social stigma in favour of not having an identity. Another pretty anti-social claim. No skin in the game, just a place to sh*tpost and hide in darkness. Which can be beneficial, but again it's pointing your post in an uncomfortable direction. And giving you a catch-all excuse for being anti-social. It's the fault of posting on HN that social mistakes are punished.
All these things combined with a gut feeling judgement of your character (pretentious username? only interested in work?) leaves me in a place where I can't push back without breaking something. So I'm gonna break normal/polite conversation and just highlight stuff you do.
Yeah americans have an edgelord thing, which seems like an easy label or compression of some ideas into one thing. Idk how to apply it, so I'm staying away from it.
If you can defend all those ideas you like (empathy about money and capitulation, working alone is good, ect) please be my guest, but don't assume we're only here to discuss ideological commitments or debate ideas at the cost of walling & burning off absolutely everything else, like politeness or the thread's second half to the discussion 'the benefits of working socially on it's own merits'. Where do I have an opening to discuss with you the ideas without voicing how uncomfortable what you said is?
Hacker News was originally Startup News and there's no improving it, per se, as several of the issues are inherent in the model, such as how discussions don't last long and almost every topic is from an outside source. This will be my third and last reply, I'll let you have the last word, and you can't have much conversation with just three responses. Hacker News isn't based around starting much real and deep discussion, by design. It's a fundamentally flawed model.
For the record, I don't go around making bad messages on imageboards. I'd much rather write good messages. My username doesn't seem pretentious to me and I'm not only interested in work, where work is defined as making progress on my own projects; I also read and other fun things.
I won't deny that America has major social issues, some of which are inflicted at birth. I can't do anything about that, though, and realizations such as that are the true test of stoicism and the like. Again, I was only discussing these things in the context of employment. I don't know how it is elsewhere, but American employers can fire at-will and whatnot and the only reasonable way to treat them is to act solely in one's self-interest, unless perhaps you personally know the man. There's no value in not pursuing self-interest with an employer you don't intimately know and which, despite all of the fluff, doesn't care, and yet people in this discussion are advocating about how those darn kids recognize this for what it is and don't want to get paid in experience or knowledge, but focus on money, instead. Money is worthless if you don't have anything you want to buy and more and more people, including myself, want the minimum amount to live decently comfortably and that's it.
Where do I have an opening to discuss with you the ideas without voicing how uncomfortable what you said is?
You may have the last word in this discussion. If you care to go beyond that, I've an email address I host you may find and then send mail to.
This conversation was as pointless as you intended it to be with your first post and follow-through behaviour. I am disappointed beyond measure and my day is ruined, to quote a youtube video. I don't care if you or anyone else reads this, this post is as pointless as your internal walls made our conversation.
Plausabilities and versimilitudes go together well as likely alt-accounts. Given the similarity in name.
If there is a bait and switch, all you can do is voice your concerns and if you aren't heard, leave. Which you did. About the only other thing you can do is share your experience, either publicly or via your network (the latter of which I strongly encourage you to do).
There's definitely an asymmetry of power between employer and employee--everyone has at most 1-2 jobs but employers have many employees.
From my experience these are highly correlated.
Some of my biggest growths as a developer has been doing things on my own that businesses aren't going to pay someone to look into.
I think you're seriously undervaluing how much new devs can learning from exactly this. This article is targeted at new devs.
Quality of code is a problem in code generated by agile teams. Unnecessary time pressure
The best written code I found to have been written by a single developer given the freedom to express themselves. This is my opinion based on personal experience
Best people do tend to end up in places where they get paid well. Obviously this may not be always true, but your chances are good if you join a high performing team both in terms of learning and earning.
Fuck this. get paid.
From personal experience of an overqualified severely underpaid idiot.