I have been thinking a lot lately about the best way to describe the progress of a software engineer’s career. The software engineer career is a transition through 3 stages: the how, the what, and the who. You begin at the How stage. You focus on how to implement a feature. To master that, you […]
You may have hit that issue in a college project or other hobby project you did with others. You wrote a certain class or a module and a few weeks later, a colleague tries to update it and he tries to update the names or the style of the code. You may have engaged in […]
I have seen thousands of code reviews. A good code review happens when both the developer and the reviewer follow a productive etiquette: Always remember that code reviews are not competitions and shouldn’t turn into fights. Avoid being aggressive in your comments or responses. You work with the person on the other end. Be respectful […]
Once you implement a feature and before you commit the code to the source code system it is common to have the code reviewed by your teammates. The goal of the code review is to make sure that the code meets the expectations of functionality, design, test coverage, and style. On functionality, the reviewer should […]
One mistake I see many people make is relying on internal details in their tests. For example, assume that you wrote a stack class and that you use an array to store the data. This should be an internal matter for your class. You should not write a test case that verifies the order of […]
Design is a process that results in a document called the Design Document. The document should provide several key sections covering core areas of the design process. The process starts with a problem that needs a solution. Your first goal as a designer is to make sure that you understand the problem, so you need […]
As you design and maintain tests for your system, keep the following points in your mind: Ease of use and debugging are the highest priority. Everyone on the team should be able to run and debug the tests. Use your creativity to make the tests easy to run and debug instead of focusing on the most […]
We can categorize the types of tests we can create based on the target of the test: Unit Testing: The test target is a function or a class. The goal is to test that unit independently. Usually, we rely on an API interface in Unit Tests. Integration or System Testing: The test target is a […]
All tests run through the following stages: Test Setup: The goal of this stage is to create an environment for your test. It could be as simple as instantiating an object or as complex as installing all the dependencies for your web application. Text Execution: The goal of this stage is to run through a […]
Welcome to Coding Is Not Enough! There are many skills that the software engineer needs to have a successful career. In this blog I aim to provide some guidance to these skills to help my fellow software engineer have successful careers.