Top 100 things I learned as a software engineer
0. Software engineers don't comprehend hacker scenes from TV shows and Hollywood movies.
- Bugs are inescapable in software. Bugs can be found everywhere, from desktop applications and mobile to web browsers.
- There are no perfect solutions. The refactoring process is vital for keeping your codebase healthy and sustainable.
- Software architects need to write code regularly to stay up-to-date with the latest technology trends and practices.
- Some mistakes in software architecture can only be detected when it is too late.
- Programmers continue to program even when they're not at the computer, even if that means programming while walking or taking care of other tasks.
- Passionate programmers can be costly when their tasks aren't specific and supervised.
- Learning things on Stack Overflow can be remarkably fast, but it is not the securest.
- Keeping up with the latest technologies is challenging in enterprise applications.
- One of the most demanding tasks a software development organization faces is maintaining its code documented.
- After updating a stable product, there's always the risk of negative consequences.
- Great things can be programmed sitting in a park with a laptop, but a peaceful room, a powerful computer, and some monitors are necessary for programmers.
- There are never sufficiently tests for a software product. There will still be something left to test.
- Well-written software must have excellent exception handling.
- The time required to complete a task is often much longer than the initial estimate.
- Learning C++ is essential for software engineers.
- A good developer should be able to write code that another developer can understand, maintain, and refactor.
- Programmers can be very productive at different times of the day, depending on their level of inspiration.
- Programmers can become bored quickly when they do the exact thing too often.
- Interruptions are extremely bad for developers. Switching between different activities can be very time-consuming and unproductive.
- System failures are inevitable; it is vital to think ahead when designing a solution.
- Sometimes it is hard to understand that refactoring is not a waste of time, but on the contrary, it means a reduction in maintenance costs in the long term.
- It's a sad but actual fact that all programmers will suffer from migraine, back pain, or carpal tunnel at some point in their lives.
- Customers will always request to add one more feature to the software.
- The practice of pairing programming creates a suitable environment for coding.
- Deep knowledge about other industries enriches a software engineer's value.
- Using the Defensive Programming style helps prevent future problems and allows to write robust code.
- Well-designed software products are more likely to lead users to buy the product and increase their recommendations.
- It is essential for software engineers to share their knowledge with others and help them grow.
- A Minimal Viable Product (MVP) is a crucial concept in the software world.
- When two programmers meet at a family gathering, they will talk for sure about programming.
- Programmers are notorious for promising more than they can deliver.
- Most programmers are men, but women programmers are brilliant.
- Every software engineer has been asked by a family member or a friend to fix an old computer running slow.
- The software development department is often called upon to deal with complicated technical issues.
- Many people in software engineering know more than you.
- Usually, It's hard to explain what a Software Engineer does.
- Merging code from multiple branches is a time-consuming and potentially dangerous task.
- Documenting bugs as soon as they occur is always a good practice.
- Unified Modeling Language (UML) is not as popular nowadays, but it's still necessary for software engineers to know this modeling language.
- Metaprogramming is a convenient technique for extending and modifying the program's runtime behavior.
- The design process for software requires the evaluation and combination of several possible solutions before deciding on the best one.
- The best way for software engineers to understand customers' needs is by visiting them in person.
- User requirements capture process directly impacts the quality of the product.
- Annual conferences and events are great for engineers to keep up-to-date with industry trends.
- Managing a team of engineers and ensuring they deliver their part on time is not easy.
- Knowing that almost everything has functions and properties makes developers see the world differently.
- Finding a bug can take hours, days, and sometimes much longer.
- Programmers with a massive ego do much damage to teams.
- A proof of concept prototype is a flexible and fast way to test architecture for a solution.
- It can be challenging to understand the client's needs, and often they can change their minds later.
- Most primary and essential algorithms already exist, and programmers should know that.
- A development team must establish a clear definition of Done.
- Estimating a software product is a complex and challenging task.
- Incidents in production environments will always happen, and there must be an established mechanism to identify, reproduce, and implement a solution that resolves them as quickly as possible.
- Frequent deliveries reduce the margin of error and satisfy the customer more promptly.
- There is no programming language or platform better than another. There are different problems and situations for which one technology is better than another.
- Jumping from requirements directly to coding is not a good idea. It's essential to take the required time to design a scalable solution using good practices.
- Continuous integration helps deliver quickly and fix bugs very early in the process. It is a practice that requires extensive discipline.
- Software engineers must learn something new every week.
- Software engineers must learn to say NO when the established deadlines are not realistic.
- Engineers should always have a physical or electronic library of technology books.
- A product owner plays an essential role in the development of a product. The product owner is the client's voice within the development team and is responsible for focusing on the client's priorities.
- Practicing the design, programming, and testing of a product for years is the best ally to becoming a prominent engineer. There is no other possible way.
- Contributing to an Open Source project is a fantastic way to learn new things.
- All products should have an easy mechanism to collect as much customer feedback as possible.
- Understanding and knowing how to use data structures is one of the fundamental pillars of a software engineer.
- Scalability should not be a topic that becomes most relevant when there are millions of transactions in production databases; it should be an important topic from the beginning.
- Learning to program with all available resources is possible today; becoming a software engineer requires a well-structured academic program.
- It takes time for an engineer to understand that at least 20% of programming time is for testing purposes.
- An engineer will spend more than 24 hours programming continuously in front of the computer at some point in their career.
- Engineers must be aware of the legal aspects of what they are working on to avoid any legal issues.
- Customers will always find an issue.
- There is no effective and secure way to test without automation.
- Specialization is essential; however, many companies look for more generalist engineers who can talk to clients, capture requirements, write code, and automate testing.
- The use of code analysis tools helps manufacture higher quality and more stable products.
- Working in a large team is less stressful but more boring for an engineer.
- Internal demos are great for receiving quick feedback in the software development process.
- There should always be a code of conduct that defines a guide for each developer participating in a project.
- The Twelve Principles of the Manifesto for Agile Software Development constitute an excellent guide when using agile methodologies.
- A technical project leader has to be technically talented and a good communicator.
- It takes years to develop the necessary skills to interview a client and extract the actual requirements and needs.
- In software engineering, we all always have something to teach and something to learn.
- Developers usually feel good after releasing a new version of the software.
- Adding programmers to a late project doesn't always speed it up immediately.
- Usually, the initial designs of a solution have to be adjusted later.
- It takes much more time and money to fix a bug in production than to prevent it during the development phase.
- Most programmers consume much caffeine while programming.
- Engineers will always defend what they know best when choosing technologies and platforms for a new project.
- Developers must know how to read API documentation from external systems and integrate them.
- Code reviews help identify bugs early, and they are a great source of learning.
- Software Engineers must know the patterns and good practices and the anti-patterns and bad practices.
- The greatest threat to a production system is the engineers themselves; only highly trained engineers should have access to production servers.
- The developers' communication with the technical support team is critical to improving the products.
- It's always good to write less code (Don't Repeat Yourself - DRY) by reusing existing components and removing unnecessary complexity.
- There are a lot of options and many opportunities for a software engineer.
- Short iterations typically increase the product's value quickly while reducing the investment size in product areas that are not needed.
- Clients should participate in a demo at the end of each iteration to detect inefficiencies early.
- Long hours on the computer, passion, motivation, self-discipline, determination, and sacrifice are the secret to success as a software engineer.
- NULL