rockyourcode

Subscribe
Archives
December 21, 2021

rockyourcode: What All New Software Developers Need to Know, Algorithmic Problem Solving Approach

Hello 👋! Thanks for subscribing.

Here are the articles from last week:

What All New Software Developers Need to Know

Published on: 2021-12-16

tags: Lab, Notes

Here are the bulletpoints from the ~ 30 minute video What All New Software Developers Need To Know by Dave Farley.

What All New Software Developers Need To Know

  1. Nobody Knows Everything

    Everyone is a junior in something. It's OK to say "I don't know".

  2. Apply "Engineering Thinking" to Solving Problems

    Learn from your failures.

  3. Make Progress in Small Controlled Experiments

    Get comfortable with not knowing. Always work in small steps.

  4. Be Suspicious of Your Ideas and Guesses

    Always test your assumptions.

  5. Seek Mentors

    Look to chose your own boss. Interview the organization you apply to.

  6. Seek Out Pair Programming

  7. Find Like Minds

    Go to meetups, find open-source projects to contribute to.

  8. Don't Be Obsessed With Tools

    Software development is about understanding the problem we are working on. Develop the skills to analyze problems. Talk to other people, make diagrams.

  9. Focus on the Problem You Are Solving

    Your real job is not coding.

  10. Write Lots of Code - Play With It

    Explore. Try coding exercises.

  11. It's About Thinking, Not Typing!

    Learn the fundamentals and apply them. Learn test-driven-development.

  12. Fundamentals Are More Important Than Tools

    Tools come and go, but the fundamentals stay.

  13. Language & Frameworks Should Be Incidental

    Spend some time to learn them, but look for the deeper, profound skills.

  14. Solving Problems > Design > Coding > Language & Frameworks

  15. TDD Focus Maintain Focus on the Problem & Improves Design Quality

  16. Take Coupling/Dependencies Seriously

  17. Concurrency Requires Caution

  18. Optimise for Learning & Discovery

  19. Work Iteratively

    Gather feedback.

  20. Work Incrementally

    Make progress as a series of experiments.

  21. Be Empirical

    Observe. Evaluate ideas in the real world.

  22. Optimise to Manage Complexity

    Create modular systems. Improve cohesion. Separation of concerns. Manage Coupling. Use abstractions.

Source

  • What All New Software Developers Need To Know by Dave Farley

Algorithmic Problem Solving Approach

Published on: 2021-12-14

tags: Lab, Notes

I bought the course JavaScript Algorithms and Data Structures Masterclass a while ago because I feared that I needed to do algorithm challenges when applying for a job. Luckily, that was not the case.

It's still a useful resource and I liked the tips for solving problems.

The tips come from the book How to Solve It by George Polya. It's a book on mathematics, but the principles apply to programming, too.

1. Understanding the Problem

  1. Can I restate the problem in my own words?
  2. What are the inputs that go into the problem?
  3. What are the outputs that should come from the solution to the problem?
  4. Can the outputs be determined from the inputs? Do I have enough information to solve the problem?
  5. How should I label the important pieces of data that are a part of the problem?

2. Concrete Examples

Coming up with examples can help you understand the problem better. Examples provide sanity checks: user stories and unit tests.

  • start with simple examples
  • progress to more complex examples
  • examples with empty inputs
  • examples with invalid inputs

3. Break It Down

Use pseudo-code or code comments. In an interview, explain the steps you want to take without worrying about details like language syntax.

4. Solve the Problem (or Solve a Simpler Problem)

If you can't solve the complete problem, try to solve a simplified version.

5. Look Back and Refactor

  • Can you check the result (does it work)?
  • Can you derive the result differently?
  • Can you understand it at a glance?
  • Can you use the result or method for some other problem?
  • Can you improve the performance of your solution?
  • Can you think of other ways to refactor?
  • How have other people solved this problem?

Links

  • JavaScript Algorithms and Data Structures Masterclass by Colt Steele
  • How to Solve It by George Polya

Thank you for reading my blog.

Don't hesitate to reach out via email or Twitter!

Don't miss what's next. Subscribe to rockyourcode:
GitHub X
Powered by Buttondown, the easiest way to start and grow your newsletter.