In the present time, it's really hard to stay simple. I have seen many developers using a combination of 6 to 10 technologies to build a simple CRU...
For further actions, you may consider blocking this person and/or reporting abuse
This feels nit-picky and gate-keepy and I don't know where to start.
I'm not going to deny that more knowledge is better, or say that your frustration is invalid, but... this is derisive, not inspiring.
You don't start by learning how
printf
works in assembly before you get going in a C++ project do you? That would be quite unnecessary, and the wrong place to start. It's a simplification compared to the levels of frameworks JS has but I think it holds.Tell me, what good does this article do for people who are likely at the start of their careers? They don't deserve the label of engineer because they aren't advanced enough? Terms like "Frameworker", code monkey, etc is not how we build people's confidence. Words like these assassinate interest in participating in a community that would ever call others that. This is the attitude that earned StackOverflow its reputation of being jerks, and why engineers I know personally will never post there. It can be a problem to jump right into frameworks, but your frustration is misdirected.
Even if someone doesn't know how React or GraphQL works under the hood, that's kind of the point is it not? We want our software to be so good that it can be used without being an expert in every layer. Nobody would get anything done if that was a prerequisite to start. Especially since the web has always been a sandbox easy-entry platform.
From a personal standpoint, I think CSS is an antique with bad developer ergonomics. Tailwind makes my life easier because it allows me to focus on delivering without affecting page performance. I dive deeper into other topics and languages that I actually appreciate. Does that mean I'm a frameworker or a software engineer?
Part of being an effective engineer is knowing how to curb your Rockstar enthusiasm to meet the needs of the business in a timely manner. Runway is only infinite when you're working for free. Being "curious about how things work behind the scenes" is good, pursuing that curiosity depends on your monetary and emotional budget.
The beauty of writing software is that you can dive as deep or shallow as you want with it. It is not a delusion to tell ourselves that we "can build anything", it is an affirmation of our tenacity and imagination. I would actually argue the opposite of what you've said, which is that frameworks make it even easier to build anything without knowing how they work. The entire point of any framework or library is to remove the barriers of entry.
I also disagree heavily with your assertion that understanding an entire system is easy. It's an ideal; it's not easy. Have you ever tried to write a basic operating system, where mission critical is knowing how the entire system works from bare metal and up? Understanding even a bite-sized Unix clone for teaching such as Xinu is a feat to be quite proud of, given that such a thing is possible for a student. In an enterprise setting, understanding the entire system is a pipe dream you spend a career pursuing. Even principal engineers probably don't understand an entire enterprise system + every layer top to bottom. That would be anywhere from tens of thousands to millions of lines of code.
I have been developing software and participating in online dev communities for over a decade now. From everything I've learned, this is not the attitude that inspires anyone.
It's crazy how this comment is longer than the original post 😄
Giving people the title engineer just to make them feel welcome is just wrong and deceitful in my opinion. A lot of platforms have taken advantage of this to create courses like "Become an Engineer in 6 months" or "The one course you need to be a Software Engineer". A lot of people taking these courses aren't aware that these platforms aren't giving them the full picture🖼
So we can look at this post as more of enlightenment for someone. Also companies are at disadvantage too. They would hire someone with the label Engineer only to find out they can't deliver. This would also be detrimental to the individual's moral 😔
I think the software industry really needs to work on these job titles. It's better to refer to someone as react developer, django developers or Laravel developer than to throw the title Engineer to anyone who prints Hello World 🌎
Nurses aren't less than doctors. Niether are air hostesses than pilots they all play an important role in their profession but we can't call a Nurse a doctor 😷
There's a lot to unpack in this post, I'm sorry you find that crazy. Luckily, nobody but oneself can bestow the title Software Engineer. It is highly unprofessional to tell someone they aren't one just as much as it is for predatory courses you mentioned, because they haven't met the definition of a stranger online. There is no standard of qualification for this title. Nurses and Doctors however do have standards of qualification. In my book, anyone who is not quite good enough to meet OP's definition is a young/junior/aspiring engineer. It is a mindset just as much as it is a skillset, and it should be thought of similar to apprenticeship.
If a company does not do their due diligence to filter out the capable from the not, that is on them and their hiring process. This hypothetical is a poor excuse to make PSAs telling new developers they aren't good enough.
This post is far from enlightenment to the impressionable junior engineer. It is something I would actively encourage all aspiring engineers to completely ignore. It is fuel for their imposter syndrome and calling the term "frameworker" enlightenment is callous. The point can be made with empathy rather than superiority, and can be said in a way that does not actively hurt future engineers who are especially vulnerable to online jerk behavior. A young person reads this and thinks "I will never be good enough", and that's enough for some to stop before they even get started. That is the point I am making in my reply.
"Luckily, nobody but oneself can bestow the title Software Engineer."
Actually only a state can legally five you an Engineering license, it takes about 10 years, 2x 8 hour tests... must work under another professional engineer first for 4 years, must do auditable continuing education credits.
But your right, feel free to call yourselves doctors, so long as your not writing prescriptions your safe, same with engineers... dont stamp anything with a state seal and sign claiming to be an engineer, you can call yourself worlds best engineer for all anybody cares.
I find it crazy in good way that everyone can drop their opinions about the issue. It's good that someone would read the post and see comments like yours that can inspire them to keep pushing 🙏🏿
I think of the issue like this. Would you rather be a Doctor, or Doctor Phil. Would you rather be a web developer or an engineer in name only, the difference is the same.
Engineering, fundamentally, is the application of science for practical applications, period. Science is not react best practices, or ORM obfuscation, since is a principle in finding a truth and engineering is about finding the best use for that truth.
The web world ignores these subjects, pretends they don't exists and reinvents everything backwards. Agile is to project management as Covid is to the economics... another side effect of engineers in name only, pretending to be process engineers designing human processes.
The web world is insaine... they higher programmers to build a giant Frankenstein, then higher engineers to come fix it... totally backwards... but hey, job security for me.
The Doctor/Doctor Phil analogy doesn't hold for me. To say engineering and programming are like apples and oranges is false. They have the same foundational skills, but engineering builds on programming through planning, understanding, and holistic thinking. Part of the ignorance of these important skills is the brutal reality of employment in a corporation. Nobody wants to build projects that don't scale or get Frankensteined, it is often the result of bad business misusing capable engineers/programmers who could become engineers.
It's funny. I work with engineers (PE), computer scientists, and architects. All three types love to code but only one type can do it well (CS). It's funny that folks here want to give engineers/PEs some glorified status, when they're just as human as the rest of us. I can tell you that yes, engineers are not frameworkers, they are tinkerers and copy-pasters.
@destinationluuv
Engineers do copy paste a lot, same with lawyers, programmers tend to reinvent everything... agile which is like project management on heroin, the word architect, the word engineer, a million duplicative frameworks. Engineers know not to reinvent solutions, we find the best solution. CS in my experience are by far the worst programmers, they make good IT and security guys imho.
@zachbryant
Does for me, only definitions under the law matter across people and corporations... they can define what they like, but onky the law matters in court.
Engineers have to worry about court, programmers and cs generally do not.
One thing I know with certainty, if all Engineers constructed their products with the same attention to detail as supposed "Web Software Engineers" nothing would stand. Bridges would collapse, skyscrapers would fall the first year, cars would be rubgoldburge machines.
One thing common that programmers tend not to understand, yes various frameworks can be thought of as interchangeable parts, but they can't be forced together... the crap I've seen man... a corporations of 150,000 unable to identify the quantity of PCs they own, an application built with tailwind and bootstrap 3, overridden with custom sass crap effectively making it impossible to upgrade... ORMs thst dumb the hell out of DB Engineering in a way that forces the db not to carry its own weight. ETL algorithms without the T.
Don't think there isn't danger when you call yourself an engineer and aren't one, depends what your building... if your building the software for a nuclear plant and your bug causes a meltdown that is on you... but nuclear plants require the pe seal for everything... and doctor phil isn't writing prescriptions... so the analogy is spot on.
If doctor phil writes a prescription it's off to jail, if you sign your code as an engineer and someone dies from your negligence, you too. Not the same for programmers and developers or even architects, only the company can be held liable... so yeah, most web companies are complete idiots for redefining engineer to be this wildly broad in nature... not really their fault, but still, no reason to higher train conductors when you really need a PE.
There is absolutely zero distinction between an engineer and a developer. None. They’re synonyms. What’s important is learning how to hire, not sorting out various levels of hiring success and failure into different titles. If you still need the elitism, the next level up from engineer/developer conventionally is architect.
Some random tidbit in the grand scheme of things. In the state of Oregon you're not even supposed to call yourself an "engineer" unless you have an engineering degree, and the funny part is, a computer science degree isn't an "engineering degree". The state tried to sue someone over this.
I try to call myself a "software developer" rather than a "software engineer" but you'll see many job titles even at leather companies with engineer in the title.
I remember when I started programming the term was "script kiddies" which was a term to reference folks that could copy, paste, and run scripts. Dare I say though that's how I got started. We all have to start somewhere.
Being a software engineer is much more than just the code and based off your responses, you sir are not a software engineer.
I find it strange that we've gotten to the point where you had to feel the need to compare CSS and tailwindcss to C++ and assembly. It's absurd.
Its absurd how the only thing you got from what he said was that very specific comparison. Which again, he did for the right cause.
Anyhow, I 100% agree with Zach. His response was more than mature and reasonable. Not ever artist is Leonardo Davinci. Not every chemist is Alexander Flemming and not every developer is Linus Torvalds.
According to your analogy, it makes me think you have never either heard of growth or have never worked with any junior developer (even the ones with computer science degrees).
I think that's the point of the OP. Not every hacker/programmer/developer is an engineer.
That is true no doubt (how you said it), everyone is on their own journey. This post's derision borders on denying others their capability of growing into good engineers. Attitudes like the OPs, reality checks, unkind labels all serve to keep people down. It spends exactly no time on giving aspiring engineers the tools to grow and fit OPs own definition and instead spends the entire time dunking on people who I guess aren't good enough.
I don't know where you got the idea that it's all I got from his reply, I don't have to respond to the entire content of his comment. Maybe read stuff without arriving at absurd conclusions.
Had to rewrite my reply, it's a little late for me 😝
Well, I did not make a comparison between Tailwind/CSS to C++/Assembly in my comment. However I don't find discussing the ergonomics of languages in such a way absurd at all. Please don't call it such if you find it strange and don't understand. I am curious for you to elaborate on why you think such a comparison would be absurd.
Agree, just because you don't kmow it, doesn't mean it wrong or bad. Learn itself is a science.
I find your reply disingenuous, saying you didn't make the comparison after you've edited the comment to remove that part. And I'll call it whatever I like, so far it fits the label, please don't gate-keep my words, a little strange after accusing someone of being gate-keepy in you original comment.
And it's a little bit strange of you to assert you didn't make the comparison but also want me to expand on the "nonexistent" comparison. Anyway, C++ isn't just something you sprinkle on top of Assembly, which Tailwindcss is. Comparing apples to oranges is...well absurd.
I got secondhand embarrassment reading you double down on misquoting me. You did misquote my comment. I did not make that comparison at any point. I tried to be transparent in that I read your comment and mistakenly thought I did compare them, given it was around 2am for me. I'm sorry you find the truth disingenuous, I digress. But I remained open to hearing your thoughts for you to save face and have a civil discussion, only for you to turn around and make a jerk of yourself in the comments.
If you think someone advising you to use kinder language is gatekeeping, you have work to do. It is never okay to go around assigning pejoratives to people, especially to those are in a position to learn from us. Such behavior is a stain on the profession.
After all that, you answer the comparison misquoted by yourself with a condescending quip about what C++ is and isn't while seemingly mistaking the topic of ergonomics (stated above) for the languages overall. You are aware that C++ and Tailwind are abstractions over Assembly and CSS respectively. The apples to apples comparison regarding ergonomics lies here.
I find this whole interaction to be quite illuminating of my original comment's main point. Please try to be better at treating others with respect and empathy because the opposite is not welcome here.
If you think saying something you said is absurd, you're not to be taken seriously. It's strange you want me to care about your feelings of embarrassment on my behalf, go try that tactic on someone else 😂.
I find it interesting you've decided to double down on your disingenuousness, ignoring the fact you edited out the part where you made that comparison while claiming you made no such comparison, I wonder why.
Pointing out tailwind is an abstraction is a mundane point, in fact a useless one to point out, everything is an abstraction of something. Why will I be here arguing with you over ergonomics, I use React and Tailwindcss.
You make unsubstantiated claims, you say I misquoted you without point to any specific point where I did that.
@shifi I don't know where you got the idea that it's all I got from his reply, I don't have to respond to the entire content of his comment. Maybe read stuff without arriving at absurd conclusions.
It's true, insaine quantity of overlapping frameworks out there... what these idiots don't realize is: it takes only 1 change to a language to completely eliminate the need for a sea of frameworks... look what happened to silverlight when the html 5 canvas came out.
"You don't start by learning how printf works in assembly before you get going in a C++ project do you?"
... actually, if you are in 4 year Software Engineering or Computer Engineering program you do start with assembly, technically you start with 1s and 0s.
I agree we should be inclusive... the frustration this guy is showing is the same I show often, an engineer in a web developers world. Ultimately, this is HRs fault. There is an enormous difference to how an engineer solves a problem vs a web developer. Engineers are about preventing problems by reducing the seas of infinite possibilities down to manageability. Developers are about implementing whatever they are told using whatever tools available no matter what... in my experience anyway. It's a completely different mindset and approach, completely different background required.
So I agree with you both, inclusive is good, but stop trying to reinvent words that have legal definitions, include the engineers that have been defined since the dawn of the industrial revolution, and stop considering software programmers to be software engineers... so much insaine havoc I've witnessed, just because HR and staff don't understand the distinct in web. In mainframe they do, in cpu design they do, usually they do for desktop and server apps but not always... look what happened to SolarWinds, an engineer would never use password for root in security management software, give me a break, not when you have some liability. A programmer can do anything, one only needs to be sitting at a computer writing code to legally call oneself a programmer. Only definitions under the law matter to an engineer, programmers tend to be unaware of the importance of terminology, let alone will take the time to write definitions.
So... end the insanity, keep things inclusive including the world before web 2.0, dont call yourself an engineer unless you are really doing engineering... problem prevention via architecture, no problem resulting or pure implementation via hands in code.
I have been fortunate enough to attend a couple of universities; perhaps there was a time when students started with assembly, but it's the exception these days, save for the odd purist prof and select universities. CS and CE often start in the same intro programming courses, which in general don't cover such advanced and untimely topics as assembly implementations of complex functions.
In my opinion it is an exaggeration to say software engineering and being a programmer are completely different. They are not; they have the same foundations. SWE is just more holistic in its approach.
At least in my country/state, as I believe is same in most, Software Engineering at best is regulated for certain roles. It is otherwise unregulated save for a handful of countries. (Edit: I just saw your comment explaining your location/license, and I understand your point on protecting the term Engineer)
I think it would be much more productive for everyone to drop the superiority approach, the drawing lines in the sand, and instead spend this energy lifting others up to become better software engineers.
A little tough when I spend my career cleaning up after these engineers, when it took me 10 years to call myself an engineer. Yes, in software engineering and computer engineering they do start with assembly, they usually start lower. I didn't even start programming till my third year.
Engineer type is not intended to be exclusive. I have electrical and computer engineer degrees, licenses in computer and software, I've done security, db, structal, electrical, robotics, cercuit design, industrial control systems, software, network engineering to name a few. All universities offer specialty engineer programs in each of these fields, plus chemical engineering, structural, etc... in all these cases, they are graduating engineers, people dedicate years to it.
So it's tough "lift others up" when others are bringing my entire profession down, of all engineers, to be grouped in with any one who can program, high school kids... sorry, engineering and programming are not equal... it is true, one does not have to be an engineer to do engineering... that being said, there is very little real engineering on the web as a matter of economics, the word was effectively repurposed to mean "thinking a little about architecture while implementing"... don't even get me started on how yawl corrupted the word software architect... your effectively calling architects, developers/programmers, engineers, IT/CS all the same thing... one cannot claim "formal qualifications" as an engineer without the requirements satisfied.
Being an engineer is something pretty inherent, like being a body builder, doctor, lawyer, marine... being a programmer is down right ephemeral... software developer is an accurate and respectful term for what most web guys do, but trust me it ain't engineering. Hell, they wouldn't let us start taking programming till we got past differential equations and fundamental datastructures.
There is definitely no need for computer scientists to start with assembly, nor programmers... real engineers though, definitely recommended.
I understand this sooo much, because it personally affects my current state of employment, I am work in an environment where the senior dev created his own library in Vanilla JavaScript which the company uses to also everything and if i am stuck because I don't fully understand the basics, I get looked at like a slacker and un-serious and the solutions aren't even online, it's really discouraging because to meet up i have to use external methods to push the pace
Highly recommend to quit that job 😅 I mean it's up to you and your current situation, but it sounds like you're not going to learn anything there except how to stroke one persons ego.
I agree. Been trying to get somewhere else tho, but my current situation ehh I am kinda stuck, but on the positive side I am able to grasp the basics of JavaScript.
Thank you for this! We need more inspiring engineers like yourself. As if the juniors weren't overwhelmed enough already. Everyone I know including myself had an imposter syndrome at a certain part of their career and I know some (intelligent) people that even quit because they found the community unbearably toxic. I have contemplated the same a couple of times, especially after seeing how ruthless some devs on StackOverflow are and being massively downvoted and attacked because of a small typo myself.
You cannot have a more wrong take. He's not talking about learning to read binary before you start writing code. He's talking about people who crash platforms in production because they don't know how db indexes works after years of experience in working with ORMs only. He's talking about people who need 10 servers because they use a standard bloated framework instead of just writing a simple single file script that can run on a freaking raspberry. He's talking about people who use the pretty colored dashboard to get the status of a server but don't understand what's actually wrong with the server because guess what, the said dashboard freezes exactly when the server is overload.
Software is hard, if you can't deal with that and are not passionate enough to overcome this, stay out. You'll make everyone's life's easier, especially yours.
And toxic positivity is the worst of lies, to the point of being predatory!
At this point I'm beating a dead horse. It's not toxic positivity to ask people not to use pejorative language when referring to people who you claim to want to grow.
Sorry but this is hilarious to me. CSS is amazing. Tailwind is a most butchered version of CSS.
"From a personal standpoint, I think CSS is an antique with bad developer ergonomics. Tailwind makes my life easier because it allows me to focus on delivering without affecting page performance."
There is this fad, in some people who have little to express by themselves, that consists in creating some kind of opponent based on some sort of fuzzy description like "people who uses frameworks but doesn't now a lot more than that", and then build an argument to come out like a winner or an expert or better than who knows because I don't know why!
C'mon, let's grab a coffee!
Just by the fact that you come here to say that "CSS is an antique with bad developer ergonomics", we can already see that you don't understand anything about the front-end, even more so to say that tailwind is something good. It's probably a backend that doesn't understand frontend basics and thinks they know something. Maybe the day you need to maintain a legacy tailwind project you'll change your mind. As the author said, in a simplified way, learn the basics before saying that library A or B is the perfect solution.
You apparently didn't understand what the author meant and preferred to choose the worst possible scenario. When he says "basic", I personally understood it, understand javascript, CSS, HTML, programming paradigms, programming principles, literally basic things, but very important to have a minimally well-built project.
You can play engineer on personal projects, but in the business world there are many consequences for those who want to do things anyway just because they think it's cool and want to see the "beauty of writing software".
I kinda agree with you but you see, what he is saying is not far from the truth. You know how to write css if an opportunity presents itself right? I think what he is trying to say is before jumping into learning of frameworks, one should actually learn the basics of programming if not how will the next generation build the next bootstrap or tailwind or the next big thing if we keep depending on frameworks and libraries.
I have seen developers learn react and stuffs without learning the rudiments of html, css or javascript and according to the writer, they want to call themselves software engineers, that is absurd. What if you are asked to work on a framework as that, do you have the skill to build that. One of our very crucial role as software developers is giving back to the community and I think that's what the author is trying to say
Could not agree more. I would like to add, it seems like such engineering mindset contributed to the fact that hiring management care more about "how system work" rather than what the jobs is actually going to look alike.
Ofc there's no doubt we shouldn't focus ourselves on one framework or a tool set, we should aim to understand the concepts behind it.
But to say there's a measure of how senior you are depending on how much you down you go is ridiculous.
I like to consider myself as UI developer not react developer but that doesn't mean I look down on people who specialize! In fact, I learn from them. My experience didn't depended high proficiency in one framework or toolset. Why would I consider myself better?
Never force people to change rather invite them. And this post is bringing no good to beginners whatsoever.
Actually the post is not made to, as you say, "assassinate interest", but otherwise to encourage people that know nothing about real programming to start learning stuff the right way to see things differently, when i first started i mastered vanilla js then moved on to react, next, svelte etc... So you shouldn't encourage people that mostly copy-paste code and don't understand how it works because that is not the way they will learn.
I make that statement judging effect, not intent. This language and attitude goes right past intent. It is well known for it's troublesome influence on young aspiring engineers. There are no words of encouragement in this post. I challenge you to point out a quote that is. In fact it actually contains the opposite: telling people they are deluded to think they can build their dreams because they aren't good enough.
I recommend reading up on the oceans of anecdote of how language like this is hurtful to young people who see the established engineers as representatives of the field. It without exaggeration drives people away entirely, because they would rather not work with people who would actively demean and gaslight them saying it's only words of encouragement.
No there is definitely a difference between I could build a simple database if needed and I can barely use. Like a software engineer should be able to build something without a framework. Now frameworks are nice because they do cut down redundancy that you would setup otherwise but there's a decent amount of people that don't actually understand how to sue the framework properly or haven't figured out how to create a highly reusable function for something you know you are going to use a lot. With react, I made two functions that can essentially handle all of my object state updating so I all have to do is add a check and set state and it will handle it. People aren't curious about how things work and therefore they fall into redundancies and extremely large code files because they are not utilizing the language as much as they can. One may not necessarily need to understand the details from the ground up but they should be able to explain enough of the behind the scenes to be able to teach people what it is essentially doing. There is a decent amount of people that go I just write this line and it does it but idk why and that's kind of a problem if you are calling yourself a software engineer. Which mind you, has also set forward a lot of weird requirements because of how people just throw that around.
Well said, really appreciate your thoughts
Agree!
This post is incomplete without your comment. Applaud bro. Stay in love!
Thank you! You have expressed my thoughts exactly, and you did it so eloquently.
Please this should be a article
You're not an engineer, if you don't know how write programs in binary.
... and toggle them into the machine via front-panel switches, and reading the indicator LEDs for all your output...
00100001 00110000 00111111 00111010 00110001
Way too abstracted. I'd like to see the sub-atomic representation of these bits ;-)
😂😂😂
Engineering is not what you think it is. The first engineer existed before there were any schools. 'Software Engineer' is more than a job title. You can't expect everyone to start by learning the fundamentals of a topic first. And you can certainly not draw a line and say "If you didn't learn these, you are not a software engineer." Building software solutions is engineering. You don't have to know assembly.
Create a checklist of the requirements for being a software engineer, and for each item in your list, I'll show you someone who doesn't tick that box but is still ten times more of a software engineer than you are.
I understand that you are trying to emphasize the importance of learning the fundamentals, but what you managed to do is just gatekeeping
Wrong.
"Building" is implementation, not "Planning"... engineers plan a lot more than they implement.
You'll have to look up your state requirements if you want to legally call yourself a Professional Software Engineer, they have a checklist... 4 year abet degree, 4 year apprenticeship, 2x8 hour tests is the most common.
The grandfather clause from engineers before 1920s is why you are allowed to call yourself an engineer, but your not a professional engineer by the legal definition without a license.
Based on my CSS knowledge 20+ years, I really like to use Tailwind because in my perspective that is fare better layout coding in right place on HTML or any framework ( daily based I used React, but I prefered Qwik. ) .
So basic vertical list ( I don't like fight with CSS class names )
`
Do you still know how to do that in css? Otherwise one could argue you don't know css anymore 😛 tailwind is terribly limiting in the utility classes that it outputs. Rather use something like PandaCSS where it generates utility classes based on the CSS you write, so you can do everything that CSS can do and your CSS knowledge is transferable if in the future an even better tool comes along.
I don't know why people keep saying this.
But if you don't understand css, how can you write tailwindcss?
What class name would you even use if you don't know your css well?
To me to write tailwindcss you need to understand css.
Css is kind of low level, there is a lot more infinite possibilities mixed together in css, you have to pick the best, that's engineering. You can still engineer with tailwind, but the entire purpose is to dumb it down, so everyone can do things faster... there is a trade-off for opinionated-ness, the more opinioned, the less infinity but the less flexibility too... always fundamentally the goal of a framework... even in building construction, it's a "framework" on which to build to make it more standard and certain... I.e. an engineer can design a framework, an architect can imagine one, and a programmer or technician can implement one... only untrue in web design, where all roles seem to be mixed... you got people with CS degrees calling themselves engineers but operating like technicians. It's the cause of a lot of havoc.
Utility class names have nothing to do with CSS. For starters it's a completely different syntax.
I cant understand this comment. Css does have the concept of class names though syntax is quite unique to optimize network speed mostly. When you say 'utility classnames', there is no concept in css that I am aware of, pretty vague concept, everything is a utility or helper. I think your considering one of many ways to use css, for style libs... like bootstrap. Maybe your talking about sass. Sass is worthless in the modern era imho.
Tailwind css is a utility class framework, you don't write css, instead you write the names of a limited number of utility classes that live in the tailwind css framework.
A utility class in CSS is typically a class name that holds a single CSS property, like
padding: 8px;
you combine those utility classes to style an elementGot you... yeah, that's another difference between engineers and devs. Engineers tend not to use framework specific terminologies, when existing terminology covers it. Every vendor wants to reinvent their our terms in an effort to hook folks. But it's mostly marketing, something that needs to be excluded from the engineering process. Css classes are that and nothing more... doesn't matter what sass or tailwind decides to call it, only definitions under the law matter (in this case css standards). Never used tailwind only bootstrap... hence the issue, same crap different manufacturer, yet you and I can't understand each other, unless we stick to common terms.
Yall need to get off your high horse. Talking about css like it's soo important lol what joke. Come back to me when you gotta move billions of dollars daily at scalable levels. That's engineering building things that are sustainable and with practical design patterns and architecturally sound. You front-end devs need to humble yourselves. Wow css you make pretty ui's... who cares bro that's why it's a good place to start. Everything's an abstraction go back to binary
Utility class is a common term in CSS... designsystem.digital.gov/utilities/
🤣🤣🤣
.grid {
display: grid:
}
.gap-4 {
gap: 1rem;
}
IMO tailwindcss makes writing css better and reusable
I'm all for learning the basics and concepts, but for valid criticism, you need to avoid ad hominems.
At some point in every developers career, they'll think they've learned mostly everything they can about our industry, and instantaneously forget the time and effort required to get there.
If you're lucky, you'll have another moment of clarity in your career, where you find yourself embarrassed by the ideas you held at the time you wrote this post.
Don't forget where you came from, and don't forget how far you still have to go.
I struggled to find something worth writing as a comment to the original post, I guess this might have been it.
Back to the roots is very important. In my opinion, any framework or library should to be a natural jump for developers, but only when the base technology has been understood, otherwise, we'll be blind consumers not active creators.
I’m the best god damn frameworker and I don’t need to deny it because I deliver and make more money than you.
Agreed, although I'd argue that some things are a blackbox for a reason. What's important I think is that you understand the technology you use, to the point where you have enough knowledge to be able to pick the right tool for the job. For example, you don't have to understand exactly how the vdom works to be able to use React properly, but its essential that you understand when and how it renders. Similarly, you dont have to understand exactly how an electric toothbrush works, aslong as you understand that you need to put toothpaste on it and move it across your teeth and change the brush from time to time.
Valid points, poorly communicated. Your post will not inspire anyone to become a great developer like you if you keep being a gatekeeper. My feeling is that you're just pissed off at your coworkers with less experience than you. You may be right, but venting your feelings like this will not do any favor for anyone.
Simple to measure. If you can create a complete solution without a framework, you know about memory, processing, storage, communication and the like, you're probably an engineer; otherwise, you know how to program and use frameworks
But nowadays you don't have to be, people are hired simply because they know how to create something
It's not a bad thing to know how to use frameworks, the bad thing is to have no idea how they work. Because then you can't even gauge whether you really need it
If you program in node, have you ever looked at the code of an npm package before installing it? There are packages with 10 lines of code and several dependencies, do you really need that?
I do not entirely disagree. It concerns me that people rarely know how their software and their food is made. That being said, where do you draw the line? Sure, I know SQL and I can prove it with relational algebra. But do you really want me to put "select " + var1 + " from " + var2 + " where " + var3 inside of a program, or would you prefer I use an ORM which is safer and less error prone.
I have not heard the term Frameworker until today but I guess even though I can write recursive functions in C, I have also used Laravel and Spring so I guess I am a Frameworker.
You say that you are not an engineer unless you understand the whole system. If you use Linux, does this mean you know what function does the dirty deed of resizing the ext2 file system? How about AWS, is it abstracted for you, like it is for the rest of us or do you have intimate knowledge of their code base. If you answered No to these questions, I would suggest that you might be a Frameworker of sorts.
If you do have intimate knowledge of the AWS code base, please fix the notification banners in the console. I only need to see "This is our new console look" one time.
I reckon the author only uses punched cards and some lightbulbs he filled with argon, so the things you mentioned are not software engineering to him.
I am a software engineer. I hold a software engineering degree from an ABET Accredited university, I hold a software engineering license from the state of Tennessee.
You are 100% right that most people who are "Programming" on the web know nothing about "Engineering" anything. However, your wrong in that we need a new term to describe it, framerworker is unnecessary, programmer is fine... to be a programmer or developer, one only has to be sitting at a computer... to be an engineer takes as much effort as a doctor or lawyer, minus the need for graduates degree in the usa mostly.
Technically speaking, your breaking the law by calling yourself an engineer without a license. It's unenforceable unless you start signing and stamping things with an official seal... when an engineer uses the state to certify any document, even code, they are accepting some liability if the product is wrong, same as a doctor writing a prescription or lawyer filing a brief.
Hence, on the web were agile rules and project management doesn't exist, where code is allowed to evolve functionaly when critical bugs exist, where the winners are generally the first instead of the best... engineering in any regard is rare to non-existant.
In my experience as an aspiring self-taught developer, I've noticed a concerning lack of attention paid to software architecture and its documentation, particularly among self-taught programmers like myself. While I can learn a new programming language or follow a tutorial in a few weeks, I often struggle when it comes to implementing my own ideas from scratch. I find myself lost on where and how to even begin. As a result, I've shifted my focus towards learning how to properly architect and document architecture of software systems.
This emphasis on architecture mirrors other engineering fields, where blueprints are always created before construction begins. However, in software development, we often jump straight into coding without this crucial planning step. Additionally, many frameworks and libraries lack documentation on their underlying architectural design. This lack of information makes it difficult to choose the right framework for a project. I believe that the first step in building any software, regardless of size, should be to establish a solid architecture. This architecture can then guide the selection of a framework that best aligns with your design goals.
I'm not sure why so many people misunderstand. I don't think anyone claims that you need to know EVERYTHING before using frameworks. The issue is that people start using them without having any fundamental skills. You can create janky software that delivers value without fundamental skills. However, you will spend a huge amount of time trying to maintain it or you'll be switching jobs every couple of years to dodge the technical debt.
Got to agree with this. I work in the field for roughly 20 years now and I lost count of projects built at organizations with so many different frameworks that nobody there actually knows how to maintain things properly anymore.
Now with AI it's even more critical, when some wannabe devs just ask chatgpt how to do it and copy paste insecure code to corporate applications that handle millions of users, without actually understanding what it's doing and the implications of their code.
Software engineering is about understanding the whole structure, needs, performance, security, costs, code, etc and know why one solution is better than others.
A line of code that needs 0.1 seconds might not seem important, when you could use another function that takes 0.05 seconds, until thousands of users run that script. CPU resources would be cut in half by just switching to certain functions that are faster, meaning, on a large company spending thousands or millions in servers, reducing the loading times by half would save them a lot of money in CPU power and maintenance.
It's not a "as long as it works" approach where you just use whatever comes to your mind or are familiar with, then throw more iron on it to keep working. Things might work that way, until they get hacked or the servers crash due to performance or misconfiguration issues or running out of money to buy more servers.
If you build just using existing frameworks AND if you don't know basic things like SQL or CSS, or setting up a Linux server for the apps, I am sorry but you are not a software engineer.
Call yourself a developer, devops, fullstack, backend, front-end dev or whatever, and I am fine with it, but don't call yourself software engineer if you are just copy pasting from the web or gpt without understanding the full logic and implications of your actions to the general system.
That being said... software engineers are the ones that will later be called to collect the money from your company when things go wrong, to fix them, and since most other "engineers" in their team don't even understand what they are looking at, I am in a way thankful to them 😊
It's not gatekeeping. You cannot declare yourself a doctor at a hospital and just go about doing surgery on people if you are watching on YouTube, even if you understandthe basics.
Software engineering is similar. You need a set of skills to do it, and you cannot just declare you are one if you just know some parts.
This is why people have degrees at universities and then work as junior and up the ladder until they become the real deal.
There is the 10,000h theory that says you need 10,000h to master a skill - that is 5 years of full-time work (40h x 50Weeks x 5Years).
After those 5 years you are at a Point where you've seen some things and hopefully learned that you are not done learning.
Shouldn’t this post be inspirational to early career professionals? So many nasty comments. I thought that the author was bringing awareness to those in industry that think they are engineers because they copy, paste, and use a framework. In reality, engineers don’t just use frameworks, they also build them, then sell them for company profits. 😆
What is the intent of this hot-take? What purpose does any of this article serve to either inspire or inform the community in which you are involved in?
I'm happy you're able to identify problems, but while speaking through a large platform, why wouldn't you provide a solution or resources for those stuck in this loop/mindset to improve to become better than someone you would deem a 'frameworker' or whatever ambiguous title you want to apply to them.
This effectively just reads like a shit-post that should've been posted on your personal social media.
As a beginner, you are flooded with 100s of frameworks. When you search for jobs, most are demanding you know at least 3 frameworks.
It's sad most beginners do not take time to learn the basics. For most part, this post is the hard truth. 🤦🏿♂️
This post assumes people want to remain clueless on how things work.
It's also a slippery slope, if you know a tool, you then have to know how that tool works under the hood, which also has a ton of things working under the hood and so on and so forth. If I know MongoDB uses BSON to have a similar interface to JSON, should I also know how it writes that, from where and how? These are cool to know but not overly important in my opinion.
Learning CSS is valuable, but it's okay if a developer doesn't know it in depth. Ultimately, the main focus is solving problems, and as long as the solution works well, the specific code doesn't matter much.
It's difficult to make things WORK WELL when you don't know the tools you work with, you know well.
Look at all you thin-skins blasting this author. They are right. So quit coddling all the greenhorns and calling it "gate keeping". If you don't know a lot of stuff then you're not as good as someone who knows a lot of stuff, it's called LIFE. This is why the inmates are running the asylum in our field at the moment -- because this author makes a valid point that's not puppy dogs & hummingbirds and he gets dog piled.
Lol. Why don't you build your own transistors then. I don't get the point of posts like these man. It doesn't matter where you start. The builder attitude and the quality of your ideas are the only things that matter at the end of the day. Keep the community open and welcoming, so that we all learn from each other.
I agree that everyone should understand the basics and be able to build the same stuff with the basics as they can with frameworks. I'm also on board with the idea that frameworks are saddled with a lot of bloat that is unnecessary for a lot of projects and add domain-specific complexity and non-transferable learning overhead.
I think what that means is that we need better and more modular frameworks and libraries, not that SEs who use those tools are lesser SEs or that they shouldn't use the tools that are available.
By all means, shout the problems with modern (front-end?) development from the rooftops -- that's how we're going to collectively understand where there are problems and be inspired to work toward solutions. And totally, encourage learning the basics over the abstractions. But let's not attack or belittle each other for using tools.
One could say the same way about those who do not understand how software logic runs on physics using electrons and protons. The question is, where do you want to stop?
if you go down the rabbit hole, deep down where where even the most advanced physicists stop and say: "okay, 'god' begins here because I have no idea why leptons do what they do", we're all "non-engineers" on some level, just priding outselves on the lowermost layer of the stack we understand, below which we are just as clueless like those who know SQL, but have no idea how the database stores their data, nor why it's so darn fast to retrieve.
You’re so true dude
Counter-argument : Developers are not "frameworkers 🤮", they are problem-solvers.
Since we all solve different problems, the idea that there is a world-wide meritocracy of Good(tm) and Bad(tm) developers is very dumb.
An humble junior developer that with simple python scripts helps a brillant scientist to do his job faster is 100% a Good developer. She brings value to the world.
It's correct that there is value in learning the fundamentals
... but this post is a masterclass in how not to teach them, it doesn't bring value to the world.
Telling the new generation to start exactly where programming was 20 years ago, HTML, CSS, JS, SQL, Unix, C... completely misses the point.
We don't want the new people to solve problems are that have already been solved.
There are plenty of new problems to solve in this world, and tools like frameworks are helpful as long as they allow to solve the problems faster.
I don't know in which planet mastering non trivial frameworks like, I don't know, Spring Boot, takes only days, but that's not on planet earth.
Aspiring software engineers, this is not real, what we are hearing here is a mix of No True Scottman's fallacy, ego and hubris.
To some extent, what you are saying is somewhat correct but incomplete. Anyone who knows how to write Tailwind knows CSS, and it is undeniable. Anyone who works with an ORM knows how Database works and how things are arranged. It's just that they never gave chance to learn raw SQL and it's basics, which is wrong. Learning the basics is always something which should be done beforehand.
However, the one thing which should be the rule of thumb is: if you are familiar with the basics, then these frameworks are just wrappers around them which is meant to make things easier and nothing more. If you don't even know what a basic JavaScript function is doing, then from my perspective, you cannot even classify yourself as a developer. Not because you don't know syntax, but because you cannot decode the logic which the basic function is meant to do.
I don't see how this article is productive. It seems on the whole to be an attempt at gate keeping and bragging, along with some internalised early imposter syndrome.
We all* start out feeling like we're not good enough early on. That's part of the learning experience. However those of use that continue on to become skilled developers and can build software are software engineers.
It doesn't matter if the bricks are bigger or the house comes flat packed, it still needs an engineer to put them together.
Now, will I concede that there are different skill levels of SE and that people who only know frameworks are on the lower side? Probably yes. However even that is full of exceptions: I currently work with a fantastic NextJS React developer. Keeps up with the latest changes in his preferred stack; constantly striving for clean and functionally solid code; etc. he can make his chosen framework sing.
Can he write a jpg encoder? No. Can he write C++? No. Can he reverse a link list? No. Regardless, guess what it says on the top of his very well paid employment contract. Hint, it doesn't say framework engineer.
Stop scratching lines in the sand trying to shore up your self confidence by knocking down others. Worry about being the best engineer you can be, not whether or not the person next to you is a "real" engineer.
I am confused. There are multiple aspects of it. What does the market demands, what does the project demand(unless you are a freelancer - which is the most common thing here), what is your skill set. A decade or more in IT, you will quickly realize the paradigms of Jobs To Be Done and Big Ball of Mud. We always look at what to do, and not how to do. If ORM makes my life simple, why even bother about SQL(personally, I am more comfortable with SQL, though)?
Now, coming to start ups. React is easy, Go is easy but they are not robust enough on the long run. But, by the time when you go and check whether they are fit to standard, you have already earned enough to recruit a team to rewrite your application in whatever language you have got.
The third aspect is data volume. Its humungous. A single Jack of All Trades is no more an option. And when I need a dedicated person dealing with databases and server optimisation, why should a front ender even bother about it?
This is a wildly elitist post. I’m not saying you’re wrong in principle, but in practice this is a dickish way to present it—by denigrating people, most of whom likely just don’t know where to start. After skills and talent, the #1 thing I check for in a candidate interview is: is this person a jerk? I’d pass on you based on this post alone.
Not really. Modern programming has alot abstraction. This can be in form of frameworks or api's. my colleague had difficulty building a peer to peer video call app with js frameworks and couldn't crack it. I used the raw technology webrtc, socketio(framework still) to get this done. But guess what? even if I did build it without "frameworks" , there was still alot the webrtc api abstracted away from me, still don't know how it truly works underhood. My point is much of modern day programming involves abstraction, either through Web api, paid apis, frameworks etc. They make us build fast. But there is still a need to have a based understanding of what happens underhood to some extent, so we can fix and understand errors that will occur. I Agree with you, but your approach seems condescending and can discourage beginners. Try using euphemisms to soften the tone.
While I find sense in what you're saying Mr. Muneeb Hussain, I feel you're stuck in the past.
The past which had software engineers learn the nuts and bolts of programming languages, how, for example, a compiler works, or how these famous programming languages work under the hood. While it's advantageous to learn these, it's not a must for one to build software in today's day and age.
We live in a world where even computer science students in university are running to YouTube for the latest tutorials about Python, for example. And why not!! Aren't these YouTube instructors not teaching industry standard knowledge? I mean, if you've mastered how to drive nails into processed pieces of timber to form a chair or a bed, why would you concern yourself with how the same pieces of timber were made from logs of trees? IT AIN'T A MUST!!
However, I understand where you are coming from. I suppose you've crossed paths with some people who just mastered how to build projects from YouTube without having taken time to learn the basics of the very same tools they're using.
In conclusion, I would like to reiterate that your worry is valid and I do think it's important for novices to want to learn how these programming languages work under the hood, but it shouldn't be forced down their throats.
At the end of the day, as a senior developer or hiring manager, you get to decide whether they are a good fit for your company, and thinking like that could rob you of a very good developer.
Why stop there? Why not say if you don’t understand how the underlying machine language works, you’re not a real engineer? After all, Python, JavaScript, etc. are just higher-level abstractions too. How deep down the rabbit hole must one go for your acceptance lol? Look, I’m all for learning as much as you can, but time is finite, and the learning pathways in this field are endless. No one cares about your arbitrary standards.
Plus, the idea that people are using frameworks without at least a "basic" understanding of the underlying technology seems like a reach. Like, who is really using Tailwind but doesn’t know any CSS lol? And who hired them? IMO, you have to know CSS to even understand the value of using Tailwind, so I’m not buying it. 😂 If you’re talking about people who are just learning, what’s the point? I doubt they’d consider themselves engineers yet anyway. And for the record, there’s nothing wrong with diving right into a framework and project since it often provides the best context. You learn by building, encountering problems, and finding solutions, whether that requires a deeper dive into fundamental concepts or finding the right tooling for your project requirements.
An engineer is a problem-solver first and foremost, and modern engineering is about leveraging existing solutions to create better, faster, and more innovative products. Simple as that.
Did you fall out of the womb with a fully formed understanding of programming and software development? That's amazing.
Pretty much everyone else takes time to get there, all of us learning at a different pace and coming from different contexts and perspectives.
You could argue that css is just another framework and that "real" software engineers are the people who build css engines, not use it.
But I bet those css developers use tools, frameworks, developed by other "real" engineers, e.g., compilers, in order to make CSS. So they aren't real software engineers after all.
At the end of the day, we're always building on top of some abstraction.
I think the best way to approach it is to use existing tools and frameworks when they help you get your product in market faster. Develop only what you must in order to have the best product.
I could see how this post can be defeating but it could also be seen as a warning against getting too comfortable with frameworks. I will say most web developers do start out with the basics but once in the job market it becomes all about frameworks and we may forget. Linking this medium article as an example.
I feel like this is also why there's concern around the "shortage of good developers". I'm still trying to figure out what exactly that means in the case of web development. I'm sure there are a ton of innovation on the web but most users of the web aren't using it for innovation. As a result developers, might not develop the innovative mind associated with an "engineer," and it really is just about quickly spinning up some website. So if this post really is about elitism, being a web developer might not be brag worthy.
Note: This is from the pov of a junior.
In Vietnam, I bet 99,99% of developers they are frameworkers.
They don't have the time, or money to invest in learning, building core systems, or libraries. They tend to find the libraries, and tutorials that help them to solve the problem immediately. But when they face problems that are not googlable they are all stuck there. haha
It's true that knowing more fundamental skills will allow you to successfully handle a much wider range of projects, and to create more robust and maintainable software.
But, the whole point of frameworks is to make some types of work easier, without requiring significant engineering depth. Somebody with mad skills inReact + Tailwind can create a lot of value quickly in some scenarios, even if they can't easily work outside that context yet.
Frameworks are a great starting point for many engineers. Yes, they'll use them differently than somebody who also has years of experience in fundamentals, but that's ok.
On a personal level I am not a fan of frameworks. On a work level frameworks seem to dominate. I figure it is solely a time is money equation. Downside of frameworks is that the end result is a bit facelessandardized UIs and the process less mindful than working with languages in their native context.
Oh boy... I'm new on this world of development. I've been learning backwards then.
I started learning JavaScript by using node.js.
I started learning Typescript by exploring Ionic and Angular.
I started learning css by exploring with bootstrap, Bulma css and tail.
Wow, somebody didn't pass the interview for Angular, or React Native or NextJS...
I'm not sure what you were hoping to get from such an incendiary post.
What if you asked these folks why, and then posed more targeted, well thought-out questions ❓
Backwards thinking.
I'm happy my seniors aren't like this. They teach and show me how to be smart about approaching problems and how to apply myself and my knowledge but they also show interest and willingness to learn about new tools or libraries that I know about.
Computers(or innovations in general) are done so that we can get more, or better, stuff done with less. So if using these frameworks achieves that then maybe you are the one being obsolete. As this happens only a subset needs your skills to be able to maintain the new shiny tools.
Just like everyone doesn't need to know how WiFi or ethernet works to build a web application but some people absolutely do need to know if we want to have web applications!
Yes, frameworks are powerful. They streamline development, letting us focus on the core functionality and business logic that make the app tick. This efficiency is gold in this fast-paced industry where deadlines loom.
Look, my skills with complex database queries, like the ones I can write, are no joke. But honestly, how often do those super-indepth queries come up compared to everyday tasks? Frameworks handle a lot of the data interaction under the hood, freeing me for more strategic problem-solving.
The industry is constantly changing, new tools and frameworks popping up all the time. In this environment, being adaptable and a quick learner is way more important than memorizing every line of assembly code. Give me a skilled developer who can pick up a new framework on the fly, and I'll show you someone who can thrive in this ever-evolving landscape.
Really, software engineering is about solving problems and building effective software. Frameworks are just powerful tools in the toolbox. Knowing how to use them effectively is a valuable skill. Don't get me wrong, a strong foundation is important, but the ability to leverage frameworks and adapt to new technologies is equally crucial these days.
So, while the article might make it seem like frameworks diminish your skills, I say they empower you to be a more efficient and adaptable developer. After all, isn't that what this whole thing is about?
I think this is spot on. I have an undergrad and graduate degree in CS but I had 15 years of experience prior to getting those. Same story with HR gatekeepers who demanded a degree but not the actual ability to come up with novel, robust, and scalable solutions. I guess I am now at the architect level as my scope touches all of my company's systems. I am having trouble acquiring folks who aren't just code monkeys and who are able to work independently. There's definitely a difference between development and engineering. Engineering and architecture lend themselves closer to systems integration. Developers typically have more focused projects that fix a cog in the greater system. Engineers need to touch full stack, middleware, cloud systems, and databases far more than developers and definitely more than "frameworkers". I love that term btw!
👍 That's right absolutely.
I agree with you. Thanks.
100% agree
Your post is bogus
100% agree
Is this a joke?
best library gluer in the state!
Absolutely true
agree
Can't agree more on this. It's the quality, not quantity of libs/frameworks.
Meanwhile, the OP himself has successfully ignite these endless debates... Kudos :D
Posts from people frustrated with the natural change in the habits of people who develop software should not be allowed here, whose objective is to spread useful knowledge
How can I downvote this. Anyways 👎
Agreed!
Frame workers getting to you?
Real.
Lol
I believe you just described a junior full stack developer but hey how would I know I am just a product manager that do all that without any framework.
Well said. It is funny how today "experts" would fail to do the simplest thing if no framework or lib support it
What exactly was the point of this?
Frameworks are used because the margins in software development are very thin not because the people using them aren't good software engineers.
You need to provide, speed is important nowadays unfortunately. Still true the basics must be done
What you are saying is true 🙏 most developers uses framework on their projects. I agree with you 💯
I truly resonate with the last statement
Getting the basics right is always important. Frameworks will come later