I take issue with point 4 "Rejecting of Best Practices". The article states "Simply put, best practices are non negotiable.". Problem is, "best practices" is large body of rules-of-thumb which are almost always context dependent and often contradictory. Often they lead to worse code overall when applied outside of the relevant context. So I would reformulate as: Only reject a "best practice" if you understand why it…
Signs of an Immature Software Developer
71–80 of 100 posts
Re: Signs of an Immature Software Developer
#72I take issue with point 4 "Rejecting of Best Practices". The article states "Simply put, best practices are non negotiable.". Problem is, "best practices" is large body of rules-of-thumb which are almost always context dependent and often contradictory. Often they lead to worse code overall when applied outside of the relevant context. So I would reformulate as: Only reject a "best practice" if you understand why it…
From my experience, it is usually the expert beginner developer that takes up religious ‘best practices’ discipline. This is roughly around the time they are about to get over the plateau and hit 6-7 years of experience. The identity begins to attach to things that fit that timeline, as in, ‘I am roughly here and therefore based on how I see myself, I should be aligned to what I perceive my identity to be’. This real…
Re: Signs of an Immature Software Developer
#73In my experience (over 20 years) rules are meant to be broken. You can’t have a set of meaningful rules that can’t be misfits in some cases.
“Write unit-tests!”
- on a shell script?
- for my playbook?
- on that static html-css?
- on my docker config?...
You’ll learn that best practices are great guidelines when you begin. Once you’re seasoned you’ll know what’s right... that’s what make you senior. You don’t ignore them, you use them wisely.
Re: Signs of an Immature Software Developer
#74I take issue with point 4 "Rejecting of Best Practices". The article states "Simply put, best practices are non negotiable.". Problem is, "best practices" is large body of rules-of-thumb which are almost always context dependent and often contradictory. Often they lead to worse code overall when applied outside of the relevant context. So I would reformulate as: Only reject a "best practice" if you understand why it…
I’ve come across junior colleagues who latch on to some "best practice" that they read/heard about, then preach it to anyone who will listen and aggressively debate it to death, instead of actually getting any work done. The solution is to ignore these "my thing is objectively better than yours in 100% of cases" debates - choose the pattern/design/paradigm/thing with the least compromises and do something productive…
For the juniors on my team, the next question I always ask after the answer "it's best practice" is always "why is it best practice?"
It's fundamentally important to understand why something is best practice, so that you know when it is not the best course of action.
Re: Signs of an Immature Software Developer
#75Re: Signs of an Immature Software Developer
#76> Focus on the business problem, not the code Staffing and code maintenance are business problems. The tech matters at various levels of concern.
The code can have the least amount of technical debt, be written in the most simplistic way and be abstracted enough to allow the business to evolve but if the business runs out of money nobody cares about the rest because it won't matter. Staffing and code maintenance are a business problem but I see software developers early in their journey put too much weight on these compared to bottom line value to the company.
"Business problems" aren't constrained here to "startups". Most business concerns are things that already exist in successful companies, because they are in business.
Re: Signs of an Immature Software Developer
#77For example most modern languages have list comprehension and some kind of built in map-reduce on a collection built in for free, nicely debugged, etc. Once in awhile you'll run into noob code where someone writes their own long elaborate and buggy routine full of if/then and goto to slowly iterate a pointer thru an array, sometimes skipping the first or last element of the array, etc. But if all an immature dev knows is "if then and goto" and not that fancy list comprehension stuff, you can get some crazy looking code that can be optimized, sometimes, down to one idiomatic line of code.
There are of course other examples of non-idiomatic code. Now is DRY don't repeat yourself idiomatic or a best practice or both or ?
Re: Signs of an Immature Software Developer
#78Earlier quoted context omitted.
From my experience, it is usually the expert beginner developer that takes up religious ‘best practices’ discipline. This is roughly around the time they are about to get over the plateau and hit 6-7 years of experience. The identity begins to attach to things that fit that timeline, as in, ‘I am roughly here and therefore based on how I see myself, I should be aligned to what I perceive my identity to be’. This real…
I call them "Medium Developers" - they have a medium amount of experience, and get a lot of their knowledge and dogma from Medium articles :)
Re: Signs of an Immature Software Developer
#79I take issue with point 4 "Rejecting of Best Practices". The article states "Simply put, best practices are non negotiable.". Problem is, "best practices" is large body of rules-of-thumb which are almost always context dependent and often contradictory. Often they lead to worse code overall when applied outside of the relevant context. So I would reformulate as: Only reject a "best practice" if you understand why it…
No,your skepticism is warranted and I'll back you up here. "Best Practice" is a common excuse I hear from juniors to justify cargo cult coding. The example of "testing" being evoked a "best practice" is strained. Testing is not a "best practice", it's a basic step in software design where you have accountability for results. It can be done wrong.
The reason? It’s a small, rapidly-built prototype hooking two poorly documented systems together while the company makes daily adjustments to the manual process I’m automating.
Everything is in flux because we have just started working with a new vendor that will significantly improve our logistics. All of the chaos is deliberately considered and discussed weekly. (I’m in all of those discussions.)
It’s really beautiful to see this all come together. Once we’ve figured out how this will work, it’s time to firm up the internals and nail it down with tests.
Even if that day never comes, the application has extensive logging (~75% of the application code is devoted to highly detailed logs) and production errors will quickly be detected, with enough information to manually fix a bad import or export.
Once edge cases do come up, you can bet I’ll write tests to prevent regressions.
Re: Signs of an Immature Software Developer
#80I take issue with point 4 "Rejecting of Best Practices". The article states "Simply put, best practices are non negotiable.". Problem is, "best practices" is large body of rules-of-thumb which are almost always context dependent and often contradictory. Often they lead to worse code overall when applied outside of the relevant context. So I would reformulate as: Only reject a "best practice" if you understand why it…
Corollary: any expert in a particular area should know better than best practices to deal with a given problem.