Technically-Deep Software Engineers

Picture

Of all the reasons that a software engineer might come up short in the interview process, “not having enough technical depth” seems to occur more often than many others. What exactly does “technical depth” mean for a full stack developer? Can a Java developer increase his or her share of it? How much more technical depth can your average Python developer summon? How’s your technical depth — or if you’re honest with yourself, are you more of a “puddle”?

The answer, like so many things in life, isn’t clear-cut. I don’t think that if a developer possesses only average aptitude and talent for software engineering, they’re likely to become one of the fabled “10X engineers”. On the other hand, I think that most developers can gradually increase their technical depth by focusing on improvement in the factors below, which will of course not only make them better engineers, but will improve the perception of them on interviews.

What are some key components of technical depth?

  • First and foremost, technically deep software engineers are problem solvers. They’re able to think rationally, to correctly identify and analyze  problems, and to creatively synthesize solutions. They are able to turn ideas into reality.
  • Technically deep developers find out about all aspects of the software engineering field. They stay informed and current about new ideas and methods and don’t remain limited to merely their immediate domain of expertise. Beyond that, I think the best engineers are hungry to know about many more things than software engineering. They may be curious about art, sports, culture, science, astronomy, medicine, politics, but whatever it is — they want to learn and constantly expand their awareness of how people exist, and by extension, how to create things that will be useful, beautiful, and helpful to actual people.
  • Understanding design decisions and tradeoffs, performance and scalability issues, architectural concerns, platform limitations, and deadline-driven compromises are all important to the technically deep software engineer.  They’re aware of the impacts their code might have on other parts of the overall system, and in the future as scale or load increases.
  • Technical depth involves a good understanding of the fundamentals of computer science, particularly with regard to such topics as algorithms and data structures.
  • A software engineer who is technically deep doesn’t limit themselves to the tool that they’re comfortable with. Why label yourself as a “Java Developer”, a “Python Developer”, or a “Rails Developer”, when in reality, you’re an engineer who can use a multitude of available tools? Learn and get comfortable with multiple languages, and different methods of implementing. Get passionate about your craft. Write as much code as you can, whenever you can.
  • Technically deep developers can assimilate large code bases.
  • Debugging skills are crucial to be considered technically deep
  • And lastly, software engineers who are technically deep are good communicators. They can talk with users, other developers, leadership, and those they’re mentoring. They can clearly elucidate their ideas, and explain their thought processes and work.


Leave a Reply

Your email address will not be published. Required fields are marked *