Lessons that I learned from good programmers around me.

If you new here, I’m @Buntylm, Singapore-based programmer πŸ‘¨πŸ»β€πŸ’». Currently working on Swift developing apps for iOS devices and Web APIs using Java and Golang.

πŸ‘¨β€πŸ’» Below are the lessons that I learnt from good programmer around me.

  • Importance of software design patterns.
    • Inspiration
      • Design patterns don’t provide solutions, they inspire solutions.
      • Patterns explicitly capture expert knowledge and design trade-offs and make this expertise widely available.
    • Improve developer communication, easy to describe a very specific structure of code
    • Help document the architecture of a system.
  • Essentially code that is considered good.
    • Does what it should.
    • Follow a consistent style
    • Easy to understand and test.
  • Code quality measurement
    • Reliability, system will run without failure over a specific period of operation.
    • Testability, relies on how well you can control, observe, isolate, and automate testing
    • Reusability, measures whether existing assets, piece of code can be used again.
  • Programming languages – don’t be language specific. Always learn new language since the technology is changing drastically.
  • Basic of data structure and algorithms is necessary.
  • Become an expert at debugging. Don’t use a debugger when it comes to finding a bug; make use of your mental model and take help from the system logs.
  • Speak up ask questions
  • No – say goodbye to being a people pleaser and learn how to confidently say no to someone without feeling bad about it.
  • Expertise in Git (provides cheap local branching, convenient staging areas, and multiple workflows). Always use source control.
  • Make a working release/build in one step.
  • See things around you, work that you are doing on daily basis and ask you, can I automate it ? Pick the right tool. It can save you a lot of time in the long run.
  • Always maintain a bug database.
  • Learn and try new things. 
    β€œThe day you stop learning is the day you begin decaying.”
  • Minimise your distraction when you are at your desk, try out some tools like Be Focused, make use of some app/website blocker if you cannot control, and turn-off the notifications. Read some interesting books like this Getting Things Done.
  • Process
    • Agile (approach discovering requirements and developing solutions through the collaborative effort of self organising and cross functional teams and their customers. wiki
      Simple definition to describe Agile: A time boxed, iterative approach to software delivery that builds software incrementally from the start of the project, instead of trying to deliver it all at once near the end (every sprint you will some working software/product).
  • xDD which TDD/BDD. Always write test-cases. Think, solve the problem, write test-cases and write code. Later refactor to improve it further.
    • Write a failing test.
    • Make it pass.
    • Refactor to improve your code.
    • Repeat.
    • Techniques
  • Feynman Learning Technique:
    • Choose a concept you want to learn about.
    • Pretend you are teaching it to a student in grade 6.
    • Identify gaps in your explanation, and go back to the source material to better understand it.
    • Review and simplify.

Thanks for reading it.
Do share if you like it, let me know if you have any comments. :✌️

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.