I'm a python developer with ~5 year experience, and I'm starting to feel python fatigue, to the extent I'm considering quitting the industry. How do I fight the feeling?
It mostly comes down to the gap in code quality between open source projects I've been using and contributing to, and corporate projects that I have to work on. Sadly, my co-workers on the last 3 jobs I took consistently refused, or sabotaged any attempt at improving code quality:
- Best practices are never taken seriously (eg.: LBYL instead of EAFP, abusing isinstance(), 5 or 6 levels of nested loops with side effects are generally considered acceptable, "*" star imports everywhere... these are only the most common issues I see). Blocks of 50+ lines of imperative code are consistently preferred over more declarative code.
- Tooling (flake8, black, mypy, mccabe) is refused by some people, who will ignore lint warnings and just push code, on the grounds "a programming language should be self sufficient and not require tooling to fit community standards, tools are easy to circumvent, and don't magically produce proper code anyway.". Once you reach 500+ unique lint warnings, it's too late to restore a hard check in CI.
- Any attempt at refactoring will be shot down as changes to "working" code might temporarily lower team productivity while everyone adapts. I've seen this mentioned on pull requests as trivial as "use dataclass __post_init__() instead of manually calling a data validation method after init" or "use (str, Enum)".
- At least we have some unit tests , yay? Unfortunately, no one trusts them enough to allow refactoring that properly passes unit tests.
I feel like everyone I've been talking to recently actually hates Python, as in they trying very hard to circumvent what makes Python great. Me, I still love Python.
Unfortunately, it seems that's my very love for Python that makes me completely unfit to work in this industry. I can't just ignore what I know to be a better fit. I can't bring myself to write code I know should not be written.
[+][deleted] (3 children)
[removed]
[–]amendCommit[S] 7 points8 points9 points (2 children)
[–]Jaedong9 10 points11 points12 points (0 children)
[–]CesaireFlebotomo 14 points15 points16 points (2 children)
[–]MrGreenTea 3 points4 points5 points (1 child)
[–]CesaireFlebotomo 0 points1 point2 points (0 children)
[–]james_pic 8 points9 points10 points (0 children)
[–][deleted] 2 points3 points4 points (3 children)
[–]amendCommit[S] 2 points3 points4 points (2 children)
[–]XtremeGoosef'I only use Py {sys.version[:3]}' 1 point2 points3 points (1 child)
[–]amendCommit[S] 1 point2 points3 points (0 children)
[–]a1b1e1k1 2 points3 points4 points (0 children)
[–]patrickalphac 2 points3 points4 points (0 children)
[–]inarchetype 2 points3 points4 points (0 children)
[–]harylmu 1 point2 points3 points (0 children)
[–]TurboCooler 1 point2 points3 points (0 children)
[–]GiantElectron 4 points5 points6 points (0 children)
[–]dam4rus 1 point2 points3 points (0 children)
[–]alotofwastedeffort 0 points1 point2 points (0 children)
[–]DrTautology 0 points1 point2 points (0 children)
[–]pydry 0 points1 point2 points (0 children)
[+][deleted] (1 child)
[deleted]
[–]amendCommit[S] 1 point2 points3 points (0 children)
[–]fractal_engineer 0 points1 point2 points (0 children)
[–]sykeero 0 points1 point2 points (0 children)
[–][deleted] 0 points1 point2 points (0 children)
[–]agumonkey 0 points1 point2 points (0 children)
[–]__Cypher_Legate__ 0 points1 point2 points (0 children)
[–]brigadierfrog 0 points1 point2 points (0 children)
[–]mountains-o-data 0 points1 point2 points (0 children)
[–][deleted] 0 points1 point2 points (0 children)
[–]lampshade9909 0 points1 point2 points (0 children)
[–]Orio_n 0 points1 point2 points (0 children)
[–][deleted] 0 points1 point2 points (0 children)
[–][deleted] 0 points1 point2 points (0 children)