Great Software Engineers

What actions would I need to take in order to become a great software engineer?

Blake Senftner, Mad computer scientist

Granted you’ll need to write lots software, with a variety of goals and purposes, simply to expose yourself to the range of environments software can be found. Examples include the different desktop operating systems, mobile OS platform, purely embedded platforms (such as a DVD player or an IOT device), and game consoles. Then you’ll need to expose yourself to the range of possible application types, everything from design tools for visual professionals, design tools for engineers, consumer facing apps like word processors, databases, and email clients. And for every one of these categories there are engineering roles that are closer to the OS and hardware than other roles, and you’ll want to expose yourself to as many of these as possible.

Note that all I’m doing here is listing the different subcategories of software engineer specialization. By taking such a survey yourself, meaning you actually work in the code base of as many of these as possible, you’ll be exposing yourself to a vast diversity of successful implementations for different levels of constraint on the purpose of the software. Where high compute applications have to make compromises, low compute applications do not, and these constraints impact the software design significantly. Understanding why a specific design is used versus another can lead to software engineering insights many in the industry simply do not consider and lack a deeper understanding.

Last but by far not least: take communications classes if you’ve not had them already. A great software engineer is articulate, they express their technical ideas concisely and with plain language anyone can understand. They can make presentations and people are left with understanding and a sense of wanting to support. That only happens when the speaker is both talking technical sense and communicating their situation eloquently.


What actions would I need to take in order to become a great software engineer?

Pas Argenio, BS from Computer Science & Anthropology, Drexel University (Graduated 1987)

Start with binary, hexadecimal, combinatorics (discrete math) & set theory. Then study algorithms, operating systems & compilers. Then go into language theory, procedural languages & OOP. Use as many different software products as possible paying attention to user interface. Finally, you are ready to tackle networking (TCP/IP and router & firewall concepts) client/server, SOAP, transactions & web services. You’ll want to round all of this out with a deep dive into the relational data model and the various flavors of SQL & stored procedure. Along the way you will have learned the most popular languages such as HTML, JavaScript, C and Python.

Then you are ready for Software Engineering concepts like Agile, ITIL, CMMI and DevOps

Tags

  1. Microsoft engineers
  2. Senior engineers at Google

Links to this note