What does it really mean to be a great software engineer?
Posted by Leather-Lecture-806@reddit | learnprogramming | View on Reddit | 36 comments
How do you get there—and how do you even show that to a company in an interview?
DaredewilSK@reddit
That you can understand problems and design a good solution. You can prove that through a discussion with a good senior+ engineer.
movemovemove2@reddit
Agree here. I‘m the Senior You’re Talking to and I know After 15 Minuten of random Code conversation of I want to hire you or not. I cannot Tell how I do it, But I Code for 33 yrs now and I just know if you have the Spark.
You get there through lot‘s of coding in different fields. Embedded, os, games, backend, frontend. I did it all.
Islandboi4life@reddit
totally agree. The first thing you should do in ANY situation is ask questions to further understand the problem and then derive a solution out of it.
Building-Old@reddit
Greatness is in the eye of the beholder!
I highly value economic usage of abstraction, debugability, and eye melting performance where it counts.
shifty_lifty_doodah@reddit
It varies by environment. Most corporate jobs neither require nor allow greatness. They want you to be a little cog that is reliable and predictable. These jobs are actually not good fits at all for people who are great. They do poorly in those environments. They need more freedom and creative leverage to thrive. Linus Torvalds would be fired from the typical corporate job.
Overall - Thorough knowledge of the field. - Good design taste. Hard to quantify. - Good nose for important problems. - Strong coding skills. Coding is easy. - Enough social skills to work with people and inspire them. - You ship solutions that become industry standard. World impact on the whole field.
Chooksmagooks@reddit
A bit of a read, but really valuable research-based insights into the attributes and characteristics of great engineers. I find myself going back to it every now and again for a quick reminder:
https://faculty.washington.edu/ajko/dissertations/Li2016Dissertation.pdf#page13
AllanBertieDev@reddit
To me, being a great software engineer simply means being great at solving problems using software. That might sound obvious or even simplistic, but it’s surprisingly deep. It starts with being able to truly understand a problem, explore multiple ways to solve it, and compare those options—thinking through tradeoffs, constraints, and implications.
But technical ability alone isn’t enough. Great engineers can communicate complex ideas in simple terms. They adapt how they explain things depending on who they're speaking to and what the context is.
I’ve been conducting interviews in Big Tech for a while now, and here's what I look for: when I present a problem, a strong candidate asks questions and engages in a real discussion about how to approach it. That back-and-forth tells me more about their ability than the actual coding exercise. In fact, in most cases, I’ve already made up my mind before they start writing code. The coding just confirms it. It’s incredibly rare that someone struggles to design or explain a solution but somehow writes brilliant code. Communication and reasoning come first.
New-Leader6336@reddit
How do you get there? Practice.
How to show that in an interview? Focus more on what you can do. Let your work speak for you. Share your github account. Talk about what you have done, the challenges you faced them and how you solved them. A lot of great programmers tend to have trouble articulating their skillset. It's not a huge stretch to say a lot of great programmers struggle socially. Not all of course. When I'm doing interviews, I'm looking for people who can show me what they've done. Having a great personality and ability to connect with people is only about 25% of what I'm looking for. By all means they have to be a pleasant person to work with, but I can usually sniff out the ones who have social anxiety but incredibly talented. But I'm not going to know that unless I can see what they've done, or, at least told about what they've done. A github account with things they've worked on is a big thing to me. But I suppose this varies from person to person in charge of hiring. I do less of it these days as an architect. But usually when it's a level 2/3/lead position we're looking to fill, I'm brought into the interview process.
AlSweigart@reddit
Your coworkers don't hate you.
Wh00ster@reddit
You solve business problems well and efficiently. That’s it.
nightjacobs@reddit
Great chat gpt prompts
Powerful-Ad9392@reddit
Your record of delivering successful projects. That's all that matters.
NoNameas@reddit
project manager spotted
Major_Fang@reddit
High quality code, coachable, works well with others. Good hygiene unless full remote
NoNameas@reddit
clean your house too every once in a while
rioisk@reddit
Hygiene is important. I don't care how good you are if you smell or appear unkempt. It's a reflection of self respect and cleanliness of mind. Why should I trust somebody without these qualities?
Major_Fang@reddit
All I'm saying is I can't smell your BO if we're remote
JuicyJBear94@reddit
Fair enough, but even if you’re unemployed and sit around your house all day good hygiene is the bare minimum of existing. And as it relates to remote work; I always find that when I shower in the morning and get ready like I’m going to the office I am way more productive than if I just roll out of bed and start work in my pajamas.
rioisk@reddit
It's all mental preparation.
There's a reason why the early sections of the Bible speaks at length about cleanliness. When things aren't clean then people get literally sick. The ancients didn't know about germ theory so they ascribed it to pleasing a God. A lot of trial and error.
Thousands of years later it's still true that cleanliness is close to godliness. It's not just about your body anymore - your mind also needs to be clean to grow.
Shower Use soap 🧼 Scrub Wash hair Rinse Dry
You'll feel like a million bucks if you do this everyday.
JuicyJBear94@reddit
I’d argue you should have good hygiene no matter what you do lol
SisyphusAndMyBoulder@reddit
Depends. These are my loose, personal definitions. Though they're from places I've worked in the past that have a stronger dev culture.
Junior? - Knows what a function is. - Knows what OOP is. - Has a curiosity and desire to learn more.
Intermediate? - Can be given a system description and build it out. - Can do some Infra work.
Senior? - Can teach/guide a Jr & Intermediate. - Can develop a System and break it into pieces Jr & Int can follow - Can perform code reviews
Staff? - Can do full arch & hand off to Sr. - Handles stakeholders - Handles project
SisyphusAndMyBoulder@reddit
I should add this is what I believed before this fucked up market. Now everyone wants Sr/Staff skills across all levels.
Lumpy-Elk4391@reddit
Solve the problem
Dull_Wash2780@reddit
Delivering the product end-to-end working as scalable and understandable by another software engineer.
Frolo_NA@reddit
communication skills are #1.
people over practices and tools every time.
Linestorix@reddit
By showing big problems make you so angry that you want to break them down to the level where they don't deserve to be called a problem anymore.
eshanks711@reddit
There are a lot of great qualities that make a great software engineer:
- being an empathetic engineer who is able to use both technical communication and non-technical community.
-being a great problem solver and able to digest large amounts of information (docs, articles, etc.).
- strong conceptual and practical understanding of the code stack and why you are making the engineering decisions.
you are able to show this to recruiters/engineering teams through your ability to discuss the engineering decisions you make, provide informed opinions on concepts, frameworks, and libraries, and through technical whiteboarding or coding challenges.
WillAdams@reddit
There is a bit of discussion of this in the video:
https://www.youtube.com/watch?v=bmSAYlu0NcY
and I would argue that demonstrating the principles explored in the book:
https://www.goodreads.com/book/show/39996759-a-philosophy-of-software-design
would be a leading indicator.
Algorhythmicall@reddit
Intelligence + grit + empathy + passion + time… with some weight factor for each.
Know where you are with those, and work on improving each over time. Languages, frameworks, people, domains… those come and go.
rioisk@reddit
Everybody will have strengths and weaknesses.
You could be brilliant, but don't have good hygiene so nobody wants to work with you.
You could be ultra logical and write regexes in your sleep, but then fail to explain why it is necessary to somebody less logical and so your solutions are rejected.
You could be great at architecture and piecing together the big parts, but fail at getting all the small tedious details correct.
You could be great at user interaction, but be mediocre with database interaction.
You could be a genius, but lack the drive to make a product as amazing as possible.
What makes a great software engineer?
Persistence
This is true of any field. You'll become great at anything if you keep doing it over and over and never stop growing.
In an interview you'll need to be able to solve silly brain teasers and coding challenges to prove yourself. I suggest you do these everyday like warm-up before a workout.
You'll need to be able to speak fluently about your experiences in the field. What decisions did you make? What were the trade offs? What did your development process look like? What went wrong/right? What were your internal metrics for success?
Plenty of brilliant engineers who can't communicate the answers to these sort of questions effectively. They'll become a specialist in one language or framework and can talk endlessly about the internals and the nuts and bolts of their expertise.
The greats will be able to leverage this expertise from others. They use and adapt code that others have written to create new things.
They won't reinvent the wheel unless it's necessary.
It usually isn't.
SeattleCoffeeRoast@reddit
Understanding you’re not great in the first place tbh. Some guys have major egos and refuse to learn new things or change because they are “great.”
Always stay a little hungry and be humble.
Last-Assistant-2734@reddit
Depends.
I know tecnically great sw engineers, who are not at all great to work with. I know great people who are sw engineers, but not really competent technically. I know sw engineers who think they're great because they get paid a lot.
So, that's roughly my tri-field for great sw engineers.
epluribusinix@reddit
There’s no single answer, so it depends on the interviewer. NASA has very different metrics for “greatness” than Facebook. A great engineer has made all the mistakes before and knows which ones are worth making again (with knowledge of the requirements, threats, and team).
helpprogram2@reddit
Getting paid
thatgirlzhao@reddit
Consistency
Ashwinsuriya@reddit
Code quality habits