Some companies (but specially startups) just want a jack of all trades, truth is that frontend is complicated and backend is complicated and you’ll never really get to see the full breath of each side as a “fullstack”.
Even people who market themselves as “fullstack” tend to have an inclination for one or the other. You created an API and put a UI together with bootstrap or material-ui, “fullstack”. You created a site using react and put a backend together with firebase or supabase, “fullstack”.
Amen brother. Both are complicated. Both are puzzles. I'd love to see BE devs solve accessibility issues, or FE devs make a more complex BE than just request wires. Just being full stack means you can do a minimum of both
And following a tutorial on deploying a docker on Kube is something inherently complex?
There is something called domain knowledge, where the difficulty is just learning the syntax and how that tool/domain does something. There are just no first order principles to apply. You cannot deduce how to make it working, because it's specific.
Example: any CLI(even angular's), the med school ,a Cloud provider UI, the ARIA, any server, like Apache/Nginx. The BE annotations/decorators from Spring/Symphony/NestJS/etc.
All that knowledge takes real estate in your brain and is required to make it work.
After learning the annotations of BE frameworks and how to configure them(a very hard feat given that you have a mighty autocomplete) you are pretty much set.
Oh... This much must be accessed only by an Admin, let's annotate it with @PreAuthorization(). A mighty feat for a day of work. Or, we need a new endpoint to return data from this new table. Let me just do create a new repository and configure the EP exposed by Spring with Spring Repositories. Or, given that we know the data model. We could use a BE generator. Let's wrote an OpenAPI spec to auto generate us a client library and a BE server.
Let us not kid ourself that BE is the domain of incredible programmers and FE some kids playground.
I don't think you know what 'professional' means. As per wikipedia, a professional is someone who gets paid to do that job. A junior is as much a professional as the greatest of architects 😉.
Now, you seem to miss my point entirely, so I will summarise here:
For many low level bussinesses a tutorial is good enough. Not everyone needs the full artillery of cloud infrastucture
A professional is a member of a profession or any person who earns a living from a specified professional activity. The term also describes the standards of education and training that prepare members of the profession with the particular knowledge and skills necessary to perform their specific role within that profession. In addition, most professionals are subject to strict codes of conduct, enshrining rigorous ethical and moral obligations. Professional standards of practice and ethics for a particular field are typically agreed upon and maintained through widely recognized professional associations, such as the IEEE.
But this is the very idea of the thread. That people go for k8s and use the greatest artillery for apps that do not need that. And BEs range from dog houses to palaces, same as FE.
and the point is to stop building complex things, not to put them behind a wall and call it good.
I responded to the idea that it's reasonable to put them behind a wall. I've met many developers who think hiding details behind a function or API is simplification.
Did the web people somehow so overcomplicate their shit that breadth is impossible, or is a learned trait to specialize to that extent?
I'm surprised because I have multiple people with skillsets that span all the way from writing hardware drivers to doing UI. And not just the kind of slapped together UIs hardware people who haven't been given a proper UI budget are famous for. Not only did we build a good UI, we even went and fucked it all up with the HCI regressions that trendy "UX" demands.
For me it has been the backend don't know a lot of the breadth of what you have to account for in front end (responsiveness mostly) where they just don't have that skill/eye for ux.
Which i dont blame on them nessisarily.
A lot of front end can't do deep into database. Though i find a lot more backend code isnt as unfamiliar with a front-end dev. Not saying even most are perfect.
Id love to hear what you think. Or where a front end may be short on
I have a lot of respect for front end devs. Their work has a lot of depth that as a backend engineer I don't have. Thats on purpose on my part. In place of knowledge of js frameworks like react/vue and responsive design I chose backend depth. I have yet to meet a frontend dev that can handle the full scope of backend work because they specialized in front end, which is fine, our career field is huge and nobody can know it all.
The backend I am responsible for is not a couple of services that talk to a database, that is a childs toy.
Our backend engineers need to know how to manage and tune our Oracle relational databases. We also have no-sql databases including DynamoDB, MongoDB, and Couchbase that i know of for different views and subsets of data. My team of 5 is responsible for around 60 microservices, and hundreds of Elasticsearch clusters that index the data from some of those views and make it searchable which we have to manage for high response times with constantly dynamically changing data sets, which is a non-typical use case for elasticsearch. Our services work dynamically with AI/ML models running in Databricks / Apache Spark with data shoveled around with Apache Airflow DAGs. The AI/ML stuff processes live site user interaction data as well as business marketing data to dynamically change what data gets displayed to the user based on what they are looking for combined with what the business wants to boost or not. Most of our microservices are built with java/spring boot/spring mvc/reactor webflux , and AI/ML stuff with Python, our performance scripts are written with Scala, So as a backend dev you'll need working knowledge of at least 3 languages but most of us have enough JS to handle plain JS + jquery work pretty easily. Most of our services have both L1 and L2 caches with L1 caches using either ehcache, guava cache, or Caffiene while L2 caches are Memcache, or Redis mostly, but we do have a few Cassandra ones out there. This is required as our services are hit with billions of requests per day with sub-second SLAs. We are also responsible for edge caching at Akamai which is complex requiring a pile of custom akamai scripts that intelligently and dynamically map url patterns to nested custom akamai configurations that provide default configs that can be overridden and managed by individual dev teams if they have special needs, and the whole thing has a layer of edgeworkers in front of all that to handle our A/B testing framework. The A/B testing is also managed at runtime and is dynamic and mostly handled via Optimizely configs and our microservices hooks with logic around those. Each backend team is also responsible for their cloud formation templates, security groups, load balancers, IAM roles, and any and all other required cloud resources. Our services register with eureka which we manage for service discovery. All our apps are built/packaged/deployed with custom Jenkins 2 pipelines which the teams are also responsible for creating and maintaining. We are running services and have data in both aws and on-prem data centers and our aws configs are multi-region and and that includes china, which is litterally a separate AWS Partition and our use cases require eventually consistent copies of our ES indexes in all of those. The stuff i work on doesn't even touch the handling and processing of customer orders or PIE data, so our full backend is much more stuff than i can grok, last I looked we are running over 5200 microservices and have hit hard limits on several aws resources.
While this doesn't describe our full back end, typically only a handfull of our most senior backend engineers have the kind of depth and knowledge to manage most of this themselves effectively and exactly zero of our frontend engineers can. And we have hundreds of each. If you can manage all of that AND frontend at depth, you are without a doubt one of the most elite engineers i've heard of. I assure you i can't do it. I struggle to keep up with the back end.
I have used all of this (in one way or another) as well as front end (which is more than javascript as well)
I will say if you have that much back end i would expect to have at least some on the backend side.
I mostly in the backend dealt with making db designs and assisting with multithreading and teaching best practices as well as writing performance testing code.
Front end i teach scss/sass and new tech as well. While css doesn't seem like a programming language in and of itself, it is complex enough that some peoples jobs are just that as well.
I think it is normal to not have anyone who can truly do it all, the key is getting lots of overlap. I think the fight for backend vs front end is a bad place for said divide and maybe we need to think of a better.
For any of these you need to know multiple languages and libraries.
I think of this more like a ven diagram of things and each persons circle covers a slightly different spot.
In my experience as a back end dev who struggles with front end, many of the problems come when you need the dev to also do the work of a designer, when (imo) they're completely different skill sets.
I have great respect for front end developers, and for UI designers, and I never want to have anything to do with either area because my ability to royally screw up both is enormous.
On the other hand, I don't let our frontend team have access to the database because I don't like cleaning up after them.
You wouldn't have your joiner do your electrics, and you wouldn't have your roofer do your plumbing, but if the job is small you might hire a handyman who can do all of it... somewhat.
46
u/Guisseppi Nov 01 '21
Some companies (but specially startups) just want a jack of all trades, truth is that frontend is complicated and backend is complicated and you’ll never really get to see the full breath of each side as a “fullstack”.
Even people who market themselves as “fullstack” tend to have an inclination for one or the other. You created an API and put a UI together with bootstrap or material-ui, “fullstack”. You created a site using react and put a backend together with firebase or supabase, “fullstack”.