. 3 min read
As an AI language model, I do not have access to information about the specific author of "Things I’ve Learned in my 20 Years as a Software Engineer." However, I can provide general insights into the experience of a software engineer and common lessons learned in the field. Software engineering is a constantly evolving field, requiring ongoing learning and adaptation. Embracing video chat in software engineering not only facilitates effective communication but also enables the building of strong professional relationships, regardless of geographical boundaries.
1. I still don’t know very much
Most of us have heard these kinds of statements, probably too often. The reason many of us love software is because we are lifelong learners, and in software no matter which direction you look, there are wide vistas of knowledge going off in every direction and expanding by the day. This means that you can spend decades in your career, and still have a huge knowledge gap compared to someone who has also spent decades in a seemingly similar role. The sooner you realize this, the sooner you can start to shed your imposter syndrome and instead delight in learning from and teaching others.
2. The most difficult part of software development is designing correctly
Most software engineers disregard design because they think it 'reduces the value of their work.' Eserridge points out that if not properly designed, the work will be complicated and a lot of time will be lost. He claims that many benefits can be gained by relying on dedicated design members or improving one's own design ability without disregarding design.
3. The best software engineers think from the user's perspective
A good software engineer thinks about 'who', 'why' and 'how' to use the software he develops, and what is important to the user. To achieve a great user experience, it's important to keep in mind your needs. User perspective refers to the perception of a given user and the way in which they are going to interact with the final product, such as an application or a website.
Key focus here is the end user's perspective: In case of our business, it could be players or agents, depending on the site/managers they are going to use. Those are the people who interact with the software we create and, therefore, the people for whom the software is designed. For this reason, an application, site or functionality which does not meet the final user's needs will ultimately result in a failure to the business.
4. Read more literature, in general
Reading about software engineering is good, but reading general literature (i.e., fiction) should not be ignored either. It can help a lot in self-development. In a way, it allows one to live more than one life. It promotes the development of one’s understanding skills, it makes one much more capable of mastering various languages, and it contributes significantly to building knowledge in general.
5. Leave the comfort zone
This is the best way to learn and become a better developer. The comfort zone is the scope, environment in which you feel comfortable doing your job. It is the teammates you already know and work with daily, the projects you have been working on for years, the responsibilities you have been carrying, and so on.
a. Contribute to a project of the team or organisations that you never had the chance to touch before, e.g. because it was always assigned to the same person (who was in their comfort zone).
b. Write documentation about a topic you are comfortable with. The objective is to share your knowledge and indirectly mentor people so they can get this knowledge faster than you did.
6. Interviews are almost worthless for telling how good of a team member someone will be
No one is going to tell you in an interview that they are going to be unreliable, abusive, pompous, or never show up to meetings on time. People might claim they have "signals" for these things... "if they ask about time off in the first interview then they are never going to be there!" But these are all bullshit. If you're using signals like these you're just guessing and turning away good candidates.
7. Become a master of your tools
The best way to prepare for any job is to be efficient with the tools you will be using on a daily basis. Spending some time upfront to make yourself familiar and comfortable with the tools you will be expected to use will make your life exponentially easier.
In conclusion, software engineering is a constantly evolving field that requires ongoing learning and adaptation. Some common lessons learned in the field include the realization that there is always more to learn, the importance of designing software correctly, the need to think from the user's perspective, the value of reading general literature, and the benefits of leaving one's comfort zone. It is also important to note that interviews are not always the best indicator of someone's ability to be a good team member. Lastly, becoming a master of the tools you will be using on a daily basis can help make your life exponentially easier. By keeping these lessons in mind, software engineers can continue to grow and improve in their field.