Top 100 things I learned as a software engineer
Top 100 things I learned as a software engineer Ike Inda

Top 100 things I learned as a software engineer

0. Software engineers don't comprehend hacker scenes from TV shows and Hollywood movies.

  1. Bugs are inescapable in software. Bugs can be found everywhere, from desktop applications and mobile to web browsers.
  2. There are no perfect solutions. The refactoring process is vital for keeping your codebase healthy and sustainable.
  3. Software architects need to write code regularly to stay up-to-date with the latest technology trends and practices.
  4. Some mistakes in software architecture can only be detected when it is too late.
  5. 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.
  6. Passionate programmers can be costly when their tasks aren't specific and supervised.
  7. Learning things on Stack Overflow can be remarkably fast, but it is not the securest.
  8. Keeping up with the latest technologies is challenging in enterprise applications.
  9. One of the most demanding tasks a software development organization faces is maintaining its code documented.
  10. After updating a stable product, there's always the risk of negative consequences.
  11. 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.
  12.    There are never sufficiently tests for a software product. There will still be something left to test.
  13. Well-written software must have excellent exception handling.
  14. The time required to complete a task is often much longer than the initial estimate.
  15. Learning C++ is essential for software engineers. 
  16. A good developer should be able to write code that another developer can understand, maintain, and refactor.
  17. Programmers can be very productive at different times of the day, depending on their level of inspiration.
  18. Programmers can become bored quickly when they do the exact thing too often.
  19. Interruptions are extremely bad for developers. Switching between different activities can be very time-consuming and unproductive.
  20. System failures are inevitable; it is vital to think ahead when designing a solution.
  21. 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.
  22. 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.
  23. Customers will always request to add one more feature to the software.
  24. The practice of pairing programming creates a suitable environment for coding.
  25. Deep knowledge about other industries enriches a software engineer's value.
  26. Using the Defensive Programming style helps prevent future problems and allows to write robust code.
  27. Well-designed software products are more likely to lead users to buy the product and increase their recommendations.
  28. It is essential for software engineers to share their knowledge with others and help them grow.
  29. A Minimal Viable Product (MVP) is a crucial concept in the software world.
  30. When two programmers meet at a family gathering, they will talk for sure about programming.
  31. Programmers are notorious for promising more than they can deliver.
  32. Most programmers are men, but women programmers are brilliant.
  33. Every software engineer has been asked by a family member or a friend to fix an old computer running slow.
  34. The software development department is often called upon to deal with complicated technical issues.
  35. Many people in software engineering know more than you.
  36. Usually, It's hard to explain what a Software Engineer does.
  37. Merging code from multiple branches is a time-consuming and potentially dangerous task.
  38. Documenting bugs as soon as they occur is always a good practice.
  39. Unified Modeling Language (UML) is not as popular nowadays, but it's still necessary for software engineers to know this modeling language.
  40. Metaprogramming is a convenient technique for extending and modifying the program's runtime behavior.
  41. The design process for software requires the evaluation and combination of several possible solutions before deciding on the best one.
  42. The best way for software engineers to understand customers' needs is by visiting them in person.
  43. User requirements capture process directly impacts the quality of the product.
  44.  Annual conferences and events are great for engineers to keep up-to-date with industry trends.
  45. Managing a team of engineers and ensuring they deliver their part on time is not easy.
  46. Knowing that almost everything has functions and properties makes developers see the world differently.
  47. Finding a bug can take hours, days, and sometimes much longer.
  48. Programmers with a massive ego do much damage to teams.
  49. A proof of concept prototype is a flexible and fast way to test architecture for a solution.
  50. It can be challenging to understand the client's needs, and often they can change their minds later.
  51. Most primary and essential algorithms already exist, and programmers should know that.
  52. A development team must establish a clear definition of Done.
  53. Estimating a software product is a complex and challenging task.
  54. 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.
  55. Frequent deliveries reduce the margin of error and satisfy the customer more promptly.
  56. There is no programming language or platform better than another. There are different problems and situations for which one technology is better than another.
  57. 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.
  58. Continuous integration helps deliver quickly and fix bugs very early in the process. It is a practice that requires extensive discipline.
  59. Software engineers must learn something new every week.
  60. Software engineers must learn to say NO when the established deadlines are not realistic.
  61. Engineers should always have a physical or electronic library of technology books.
  62. 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.
  63. 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.
  64. Contributing to an Open Source project is a fantastic way to learn new things.
  65. All products should have an easy mechanism to collect as much customer feedback as possible.
  66. Understanding and knowing how to use data structures is one of the fundamental pillars of a software engineer.
  67. 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.
  68. Learning to program with all available resources is possible today; becoming a software engineer requires a well-structured academic program.
  69. It takes time for an engineer to understand that at least 20% of programming time is for testing purposes.
  70. An engineer will spend more than 24 hours programming continuously in front of the computer at some point in their career.
  71. Engineers must be aware of the legal aspects of what they are working on to avoid any legal issues.
  72. Customers will always find an issue.
  73. There is no effective and secure way to test without automation.
  74. Specialization is essential; however, many companies look for more generalist engineers who can talk to clients, capture requirements, write code, and automate testing.
  75. The use of code analysis tools helps manufacture higher quality and more stable products.
  76. Working in a large team is less stressful but more boring for an engineer.
  77. Internal demos are great for receiving quick feedback in the software development process.
  78. There should always be a code of conduct that defines a guide for each developer participating in a project.
  79. The Twelve Principles of the Manifesto for Agile Software Development constitute an excellent guide when using agile methodologies.
  80. A technical project leader has to be technically talented and a good communicator.
  81. It takes years to develop the necessary skills to interview a client and extract the actual requirements and needs.
  82. In software engineering, we all always have something to teach and something to learn.
  83. Developers usually feel good after releasing a new version of the software.
  84. Adding programmers to a late project doesn't always speed it up immediately.
  85. Usually, the initial designs of a solution have to be adjusted later.
  86. It takes much more time and money to fix a bug in production than to prevent it during the development phase.
  87. Most programmers consume much caffeine while programming.
  88. Engineers will always defend what they know best when choosing technologies and platforms for a new project.
  89. Developers must know how to read API documentation from external systems and integrate them.
  90. Code reviews help identify bugs early, and they are a great source of learning.
  91. Software Engineers must know the patterns and good practices and the anti-patterns and bad practices.
  92. The greatest threat to a production system is the engineers themselves; only highly trained engineers should have access to production servers.
  93. The developers' communication with the technical support team is critical to improving the products.
  94. It's always good to write less code (Don't Repeat Yourself - DRY) by reusing existing components and removing unnecessary complexity.
  95. There are a lot of options and many opportunities for a software engineer.
  96. Short iterations typically increase the product's value quickly while reducing the investment size in product areas that are not needed.
  97. Clients should participate in a demo at the end of each iteration to detect inefficiencies early.
  98. Long hours on the computer, passion, motivation, self-discipline, determination, and sacrifice are the secret to success as a software engineer.
  99. NULL

要查看或添加评论,请登录

社区洞察

其他会员也浏览了