How to be a Good Software Engineer with Kelsey Hightower

How to be a Good Software Engineer with Kelsey Hightower

What defines a good software engineer?

To be a good software one has to ask the right questions. Being a good software engineer is so much more than just someone who remembers the syntax of a programming language.

Asking questions regarding the software you're building can add so much value. Like, "What is the real problem you're trying to solve?".

Right approach to learn

While acquiring a new skill researching, experimenting, and breaking it are the most efficient ways to learn them. Also figuring out how others use it and collaborating with them is also a crucial part. All this will only accelerate the learning process.

You cannot be an expert without experience. People may argue that learning from other experts by reading some of their thoughts is also a great way. Yes, it is a great way but experience teaches you things far more valuable than reading from someone else's work. You gain expertise as time goes on and then of course you can always be deliberate about speeding up that process by going deeper and also thinking about and learning related technologies

People often hesitate to talk about or ask questions until they feel they are experts on a certain topic which is kind of backward. Figuring out new technology through hands-on practice is the best way to master it and become an expert.

How to apply your knowledge

While just starting don't try to position yourself as an expert to get hired. Learn the workflow of some basic tools so that you can get comfortable and start to grow. Start building little projects so you can get started. The most important thing you'll learn is what it takes to go from an idea to something that works.

Open source is another great way to get a gist of how collaboration works in an already established company. It is one of the best ways to get real-world experience from the comfort of your home.

A lot of people are trying to build things that they don't use. They will pick a popular project and then contribute to it just to put something on their resume without ever using the project. This leads to a huge gap and you're going to be missing a very important piece of the puzzle.

How to stay updated with the tech

Try to stay up to date with the things that you're currently working on because nowadays things change very quickly. The most important thing is that the fundamentals of a particular tool don't change as fast as people think. So if you understand the fundamentals then when you see a new project you can figure out quickly what fundamentals they're trying to apply and then immediately you have about 80% of what you need.

What if one isn’t aware of their interests

Apply technology to real-life problems that you or someone else might encounter. Look around your normal life, there have to be challenges that humans are having or there are tools that humans are in desperate need of. If you're having trouble finding you're own unique problem then there is no harm in joining forces with someone else who has identified a set of problems where they could use your help.

Skills to be good at

There is no such thing as hard or soft skills, they are just skills. You can go a step further and call them hard skills. Communication is the hardest thing to do. Bad communication starts wars.

When someone builds something amazing, to spread the word out, the most important thing they'll need to do is communicate. Writing documentation is also communication as you're communicating with the users regarding your product and if that is not up to mark, the users are only left with some random code.

Engineers are also humans, and humans rely on communication to do anything in life and then you have to have things like intuition and empathy. Whenever a hard problem is encountered by someone to which they don't have the answer, find another engineer that knows how to communicate so that when you read their blog posts, you can learn from them and then you can incorporate those ideas into your development skills.

One of the best qualities in an engineer is that they can write the least amount of code possible to solve the problem. Some engineers just write code even when there's already a library that does exactly what they're doing. They're not researching or communicating with other people and also not asking the right questions

How to scope tasks and manage time

Figuring out how to estimate time will be a work of a genius and if there's an established project where there are a lot of people involved who have worked hard on that project that team is probably going to be a little bit better than other teams at estimating things.

Estimating time for a whole new feature that you and you're team have not built before, you're probably going to be off by a long mile. Instead of predicting an estimate, consider all the factors like the testing phase, and going with the wrong approach, and have to go and revisit the approach entirely. Before starting with the project the first thing is to ask is who is waiting for this, and where is the real-time pressure coming from. If by your estimates the project is not doable within the given deadline, it is okay to tell there is no way you can do this entire feature by that deadline. You can ask about the parts of the feature that are critical and what parts of it are nice to have and so this negotiation process will allow you to kind of split the work.

Think beyond just your abilities when giving a timeline. Think about the team as a whole to make sure that you're not signing up the team for something only you can deliver because there are so many different variables that can happen like you can get sick or you may quit.

How to execute a plan

The first thing you need to understand is what project management skills are whether you have them or not but you're going to have to collaborate with someone who does. A good project management skill is that you can't inform you're superior or the project manager a day or two before the deadline that the work will not be finished. If you start to recognize something is off in the initial days that's the best time to stop and communicate and give a project update, so that new decisions can be made.

How to set expectations

Some employers will consider you a human and some will consider you a resource. If you have a employer that only sees you as a resource they may not care about your work-life balance they may not care that you're not in a mentally good spot to do your best work and when you don't do your best work you may get criticized for it. In this situation instead of arguing with them try to communicate and make them realize that you're not attacking them. Try to explain that this situation is not healthy and the deadline will be missed. Explain that there should be a process where you can at least communicate over important things.

You can add entries to your calendar regarding the time you're busy with some other work so that you're team sees this and can book meetings in some other slots. You have to make sure that you show people what your working hours and your boundaries are and if it's a good team they'll respect those boundaries or at least have a conversation in case there is some issue.

How to deal with imposter syndrome

Sometimes you are an imposter like when you act like you know everything. This is because maybe you fear not knowing everything will make people look at you in a certain way, so you walk around pretending you know everything. Instead, people can just say I don't know or I'll learn in public. Everyone cannot have skills in everything, so try not to pretend that you know everything. Be willing to ask questions and learn something new from other people. Sometimes you may feel that this other person is great and you want to be great like this other person, this gets hard because that's not just specific to technology. You may not understand that they might be battling with some emotional issues or they could have financial problems.

Everybody has issues, no one is smart at everything and that should make you feel comfortable knowing. Most people suppress the things that they're good at because they don't match the same things that someone else is good at. So they look past their achievements and skills that they have. Just remember you're special too and you have your whole lifetime to grow and get better. So stop trying to be perfect today.

You have all the tools to grow and are growing at your own pace. So if you just start being yourself you'll never have to impersonate anyone else.

How to write good emails

An email should be drafted considering that is up to the point. The most important thing to keep in mind is being respectful of someone else's time.

The contents of the email should have information compressed in one email as much as possible like your introduction, and the purpose of the email, and the dialogue should be speedy and meaningful.

Direction of communication

The communication should be in such a way that never look at yourself like you're at the top of some hierarchy even when you're the one in charge. Also, it should not be expected that people should address you in a certain way, interaction should be done like humans, not robots. People should see themselves as peers and treat each other with respect.

The most important thing to keep in mind is you don't want to put things or use language in the email that you don't want to see being made public. Be sure that if someone read this out loud in public you would be okay with it even if you believe it's a private email. There should be some rules and etiquette around the way when people should send an email.

How to ask meaningful questions

Meaningful questions come after meaningful work. Research a little bit on your own like trying to google the best you can. Time is the most valuable thing, don't waste other's time by asking them multiple questions. Break you're problem down and get your hands dirty. Explain to the person you want to ask questions about all the things you did, all the research, our conclusion, and the doubts you still have.

How to run a good meeting

Get an estimate of the salaries of all employees for the period of the meeting. The cost will surely make you think over some things like do the people included need to be in the meeting. If it's just an information meeting meaning I want to disseminate the information so is it worth so much money to disseminate information or can you send an email to everyone and then only cover the meaningful questions as a follow-up in an actual meeting or just make a Q&A. All these questions must be thought out before conducting a meeting.

Giving and receiving feedback

People are not used to someone giving them feedback. You're not gonna just receive praise all day the purpose of feedback is to try to make you better and you cannot get better unless someone tells you the area where you're lacking. Feedback can also be positive and not just critical. It also motivates you when someone gives positive feedback.

Feedback's purpose should be present to help people improve and not just be rude to someone. Give people the full details about where they need to work more so that they can take action and try to improve. Instead of being defensive just keep in mind that the person giving feedback is trying to help me and every time I've gotten better at any skill it has only helped me in life. After receiving feedback go back and try to ask yourself how do I level up from this feedback, think about different methods, and try to apply them. People will also be impressed by the way you responded to critical feedback

While giving feedback you've got to place yourself in the shoes of the other person because people tend to feel a certain way and you also have to be ready to absorb it and make space for them to be a bit angry. Make sure you've done your work by telling them all the necessary details regarding where they should improve. Also, one important thing to keep in mind is that when a person does not want to get better in that particular space, you have to consider their emotions and tell then focus on what the feedback is and if it's actionable you make that decision to take action.

How to show leadership capabilities

Leadership should be shown in such a way that people do not think that you're imposing authority on them. Try to inspire people, don't act as their boss, and tell them to do this right now. They'll only see this situation as they don't have a choice but I need to do this to keep my job. When you inspire make them aware that the job is important for certain reasons and if this job gets done the business will be successful, you will be successful and I will make sure that you. If a certain job needs to get done today instead of giving them the deadline tell them about its importance to be done today also tell them that they have the necessary skills to get it done today and also make them realize that you are also present to help them.

Make sure that you're employees remember that every time they get closer to solving a problem they're going to be helping real people instead of making them feel that if the problem doesn't get solved they will be fired. Provide them with something more powerful, give them something that will push them harder even when you're not around and that's something that some people don't know how to do. This is why communication is very powerful because the ability to have one engineer do all the work by themselves or have ten thousand engineers do the work together is a big difference and sometimes communication can do that.

How to assess yourself

You have a foundation for where are you now and where you want to go. If you decide to learn something today and in the future you want to shift you're focus on something else, that's fine because along the way you can get better at your communication skills and your fundamentals.

Learn the fundamentals as you go because no matter where you stop and turn the fundamentals are still going to work. There is no need to worry about technologies, you know that you're growing based on your measurement but it's okay to measure, just make sure that you're figuring out where you want to go and you're seeing some improvement, getting some feedback and then making progress and then everything will be okay. After 10 years you'll look back and realize you came a long way and it's okay to be impressed by that.

It's inevitable not to compare yourself with others at a particular point in time and it's hard to be number one at something but it's much easier to be in the top one thousand in the world having billions of people.


In this blog post, we learned about how to be a good software engineer from Kelsey Hightower. I hope you all learned something from it and if so do like and share it. Connect with me on Twitter.

Follow WeMakeDevs on Hashnode, Twitter, and LinkedIn.

Did you find this article valuable?

Support Sachin Sharma by becoming a sponsor. Any amount is appreciated!