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.
-
Nobody Knows Everything
Everyone is a junior in something. It's OK to say "I don't know".
-
Apply "Engineering Thinking" to Solving Problems
Learn from your failures.
-
Make Progress in Small Controlled Experiments
Get comfortable with not knowing. Always work in small steps.
-
Be Suspicious of Your Ideas and Guesses
Always test your assumptions.
-
Seek Mentors
Look to chose your own boss. Interview the organization you apply to.
-
Seek Out Pair Programming
-
Find Like Minds
Go to meetups, find open-source projects to contribute to.
-
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.
-
Focus on the Problem You Are Solving
Your real job is not coding.
-
Write Lots of Code - Play With It
Explore. Try coding exercises.
-
It's About Thinking, Not Typing!
Learn the fundamentals and apply them. Learn test-driven-development.
-
Fundamentals Are More Important Than Tools
Tools come and go, but the fundamentals stay.
-
Language & Frameworks Should Be Incidental
Spend some time to learn them, but look for the deeper, profound skills.
-
Solving Problems > Design > Coding > Language & Frameworks
-
TDD Focus Maintain Focus on the Problem & Improves Design Quality
-
Take Coupling/Dependencies Seriously
-
Concurrency Requires Caution
-
Optimise for Learning & Discovery
-
Work Iteratively
Gather feedback.
-
Work Incrementally
Make progress as a series of experiments.
-
Be Empirical
Observe. Evaluate ideas in the real world.
-
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
- Can I restate the problem in my own words?
- What are the inputs that go into the problem?
- What are the outputs that should come from the solution to the problem?
- Can the outputs be determined from the inputs? Do I have enough information to solve the problem?
- 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.