Hacker News new | ask | show | jobs
by kren 1519 days ago
You're just starting your path on computer science, and it's common to feel this way when you're approaching a mid-level engineer. But do realize that the entire industry is at its infancy compared to many others. Here are some things to think about:

- Your internships are what you make them. The names don't mean much at an intern level because Amazon and Google aren't going to hand you "exceptional software" as an intern. Learn as much as you can while given the opportunity.

- People are still learning, especially in school. Programming is hard for a large majority of programmers, even for the masters. You may be smart, but if you can't work with people, then you are not valuable. There is always something you can learn about yourself and your approach, even when surrounded by idiots. If you don't realize this now, you will waste time throwing away opportunities to learn and grow in CS and with your soft skills. Unless you start your own business or become a consultant, you will need to get used to working on a team, motivating them and teaching them to become better.

- There are two types of programmers, imo. One does it purely for money. The other is truly passionate about it. The ones who do it purely for money aren't motivated to learn and grow, so treat them as order-takers. They just don't care, but they're paid handsomely for it. Learn as much as you can from the ones who are passionate, because they never stop investing in tech. They will shoot you forward in your career and save you years.

- Everyone recommends tech stacks they're comfortable with. Tech stacks are not what determine the quality of work. What determines it is good planning, design, architecture, and refactoring. Readability is king. The best way to write software is to adhere to the nuances and quirks of the tech stack you're working with, and to have proper separation of concerns, which is an art that takes at least a decade of refinement unless you devour text books on the subject regularly.

If you allow me to be frank and you truly want to know what's going on, then let me tell you that the issue is that you need more humility. Objectively assess what is going on and do what is necessary to solve the issue (without "firing" your peers and complaining that they suck). Always be learning from the situation and take the most appropriate action to reach your goal (without being passive aggressive or hostile). Then hold yourself to the highest standard you can, knowing that people will rarely ever match your dedication to your work unless you're surrounded by passionate engineers. What matters is that you're always learning and growing. Anything else is a waste of your time and opportunity.

For example, when you see that there are compile time errors in the main branch, you need to get your team together and talk about why that is bad. People may genuinely just not understand why it is important nor care. Now being a principal engineer at my company, I have seen time and time again that people just don't know what they don't know because computer science is extremely complex and humanity has not figured out how to teach people everything they need to know. I've learned by reading a ton and trial and error, but as I said, people who just do it for the money will not find it out themselves. If you care about it, you'll have to establish yourself as a trustworthy leader, raise morale, get them to care, and then start teaching them. Not saying you're doing this, but if you sit around and complain that they're not as good as you or they don't understand what they should, you're not solving anything and you're just part of the problem. This situation will arise over and over in your career. If you understand there is an opportunity for you to grow as a mentor and leader, companies will flock to you and pay you handsomely for your skills, AND you will shape and mold your environment to your liking with higher quality and standards wherever you go.

Last thing to note...be PATIENT. Change takes time, trial and error, and refinement. Humans are stubborn and slow to change, especially in this industry, unless they're passionate about it and have humility to learn and grow and receive constructive criticism.

Hope that helps.

1 comments

> then let me tell you that the issue is that you need more humility.

Perhaps this is exactly the criticism I need to hear.

> For example, when you see that there are compile time errors in the main branch, you need to get your team together and talk about why that is bad.

One slightly tangential thought that this lead me to was that currently, I get a new team multiple times a semester. There simply isn't time for this overhead every single time. Teaching takes time, gaining trust takes time - this might be one of the causal factor for the poor quality.

I try hard to not be part of the problem, but you're right that there's always more that I can do and every moment can be a learning experience - I can think about a couple times I had the potential to be a much more positive impact.

Thanks for the advice, I really appreciate it.

Absolutely. School does not accurately reflect the real world, but it's still important to keep learning. The moment you measure your progress by seeing you're better than others is the moment you throw away every opportunity to learn and grow.

I had a similar situation in school where I had a new project and team per quarter. One friend on one team didn't do anything, and the team tried to fail him because we put in all the work. He cried to his teacher and got a pass anyway. The real world can be like this too, actually. I find that managers are usually not willing to fire bad employees.

But anyway, it could be true that there simply isn't time, but I encourage you to try anyway because you will gain experience, even when you fail. The moment you conclude there is no time is the moment you stop learning and growing.

Of course, do what you care about and don't burn yourself out. In the end, you always return to asking yourself if what you're doing is working toward accomplishing your goals.

Thanks so much for reading my post and best of luck.