|
My freelancing to date has largely consisted of ML, stream processing, data integrations, microservices, and other backend work. However, more recently I've shifted to include frontend work with react/reflux/react-native/electron and I have run into a high number of issues with development practices. I find myself declining most work for obvious lapses in development practices and, on occasion, "duped" into accepting a client that sounds good on paper but isn't. I have observed a severe lacking in areas like: - Testing (i.e. usually none, which is often spun like an odd pro that they are so "fast")
- Devops (e.g. lack of repeatable/automatic deployments, things must be hand-touched, no continuous integration)
- Project management (e.g. no tracking of bugs, features, etc via issues, no milestone usage, no documentation)
- Git/Github basics (e.g. don't break the branch when doing PRs, create useful commit messages)
- Understanding of CSS/HTML basics (e.g. best practices, standards, anti-patterns)
- Understanding of React/Flux basics (e.g. child keys, anti-patterns, bastardizing with some weird approach)
- Understanding of functional programming basics (e.g. immutablity, HOFs, pure functions)
- Understanding of computer science basics (e.g. weird custom approaches that poorly mimic trees, no big-o concerns that hurt perf, memory leaks)
- Separation of concerns (e.g. making UI components know about and concerned with the data persistence layer)
- Security (e.g. secure credentials committed, pretty much an afterthought)
Are these issues simply the norm for frontend development and something I just need to get used to OR is perhaps my frontend network itself poor and something I just need to work on building up to more "solid" clients? I understand few companies are perfect and I am not asking for it all, but coming across clients with lapses in all these areas is what concerns me. |
React/Flux is still super new. Hell, there are like a dozen Flux frameworks out there with more on the way, and people are still arguing over what it looks like. So, you shouldn't ding people for that.
Functional programming is something that, at least for what you've mentioned, is a nice-to-know and easily explained insofar as it matters to front-end devs.
Security tends to be a rabbithole and something that, if taken seriously, can really slow down a project. So, it makes sense to market yourself as "Hey, I can backfill your security holes". No reason to be high and mighty.
CS basics is something you can again explain, or charge a premium for.
Devops is a pretty vague and bankrupt concept. Lack of automated deployments is not necessarily bad, it may just not be how they roll. Lack of automated builds and tests is a different matter. Deployment/adminny stuff is typically a pain point in any org, and it just sucks. Look at it as an opportunity on selling them how to do it the Right Way.
The stuff that I would absolutely be concerned about would be lack of testing (if they won't even acknowledge the deficiency), the lack of understanding git and project management, separation of concerns, and the CSS/HTML basics.
~
Long story short, though, is that it is exceedingly rare to see any shop that has everything on that list squared away--and if they did, they wouldn't be hiring freelancers to save their ass.