DEV Community

Ben Halpern
Ben Halpern

Posted on

Tell me an unpopular software opinion

I tweeted this yesterday and the response was not good.

Tell me your unpopular opinion. Lighthearted only.

Oldest comments (312)

Collapse
 
mendoza profile image
David Mendoza (He/Him)

unit testing can sometimes be overlooked... :v <3

Collapse
 
aritdeveloper profile image
Arit Developer

Devs can build their portfolios on WordPress

Collapse
 
ben profile image
Ben Halpern

This is a great one.

Wordpress isn't exactly an "elegant solution" these days, but it is a hardened one with basically every use case imaginable covered. Any user-facing flaws can be overcome with tooling and config, same as any comparable software.

It's also very useful to learn Wordpress. The company behind Wordpress just raised another $300m. The software isn't going anywhere any time soon.

Collapse
 
learnwithparam profile image
Paramanantham Harrison

True Ben.
Headless Wordpress with Gatsby kind of well optimised frontend will be a killer combo for mid sized projects

Use cases,

  • content websites
  • e-commerce websites
Thread Thread
 
jkhaui profile image
Jordy Lee

Can second this. Been building a full-stack app for a few months now using WP as the backend + GraphQL API and React Frontend. Also use some serverless functions to supplement functionality that can't be done in WP.

It's been amazing because as a single dev, I can work on what would otherwise be a huge/impossible project by leveraging WPs' CMS, authentication features and plugins.

The only thing slowing me down is the WordPress GraphQL ecosystem is still almost non-existent

Thread Thread
 
chris_beef profile image
Chris B

I'm going to be looking into Gatsby and next.js this year. One question - how do you handle updates on Gatsby when a post or something else is updated in WordPress? Do you have a hook/action that is triggered and posts to gatsby to run a new build?

Collapse
 
0xdonut profile image
Mr F. • Edited

I used wordpress once in 2003 but I haven't built a single wordpress site ever since!

I recognise what people have done with it, and it's maturity as a platform, but I count myself lucky!

Collapse
 
piq9117 profile image
Ken Aguilar • Edited

Mine is even more primitive. I use a static site generator. Lol

Collapse
 
jvarness profile image
Jake Varness

Too many plugins, not enough code I can modify without fear.

Collapse
 
georgeoffley profile image
George Offley

I've had one on WP for years now. I'm switching to hosting everything on a GitHub pages site. It's just far easier to maintain with little effort. Helps focus on writing rather than messing with a WP set up.

Collapse
 
s_aitchison profile image
Suzanne Aitchison

Super high coverage testing is sometimes a waste of time 😬

Collapse
 
ben profile image
Ben Halpern

For every metric, there is an equal and opposite metric.

Test coverage is good to know and track, but it can hide problems if it isn't a factor considered alongside a lot of principles and qualitative decision making.

Collapse
 
s_aitchison profile image
Suzanne Aitchison

Yes exactly; test coverage isn't the goal in itself and I think sometimes focusing too much on a percentage coverage is a distraction from creating an actual robust pipeline.

See also: snapshot testing in the frontend. Very easy to achieve close to 100% coverage with tests that are easily ignored and overwritten when they fail 🙄

Collapse
 
adam_cyclones profile image
Adam Crockett 🌀

100% coverage of low quality tests is so much worse than 20% critical tests.

Collapse
 
vulpcod3z profile image
vulpz

Who writes the tests to test the tests?? 😵

Collapse
 
mike_hasarms profile image
Mike Healy

Coast guard.

Thread Thread
 
jgaskins profile image
Jamie Gaskins

I understood that reference

Collapse
 
dwilmer profile image
Daan Wilmer

Mutation testing

Collapse
 
patryktech profile image
Patryk

sometimes

Many, many times.

That said, if you are publishing libraries that are meant to be reused (e.g. on PyPI, or NPM), 100% is often a good idea.

Collapse
 
gypsydave5 profile image
David Wickes

💯 coverage is usually an indicator of highly coupled testing, which leads to very fragile tests, which leads to the tests being turned off...

Which leads to anger, anger leads to hate, and hate leads to suffering.

Collapse
 
ryansmith profile image
Ryan Smith

Basic for loops in JavaScript are fine.

Collapse
 
sesamestrong profile image
Sesamestrong

Depends what you're using then for. For performing operations on every element of an array or object, Array.prototype.map is really nice. But I definitely agree that for loops as opposed to Array.prototype.map, reduce and for each are never really bad; they're just sometimes not the best.

Collapse
 
karfau profile image
Christian Bewernitz

As soon as you need to have async code in your forEach callback you need to switch your code to the for loop again. So if there is any chance this might happen, pick it right away...

Thread Thread
 
diek profile image
diek

Nope, you can Promise.all()

Thread Thread
 
karfau profile image
Christian Bewernitz

How, .forEach doesn't collect the returned value, you would need to switch to .map and there are quite some cases where you don't want to fire all of these things "at once".

Thread Thread
 
sesamestrong profile image
Sesamestrong • Edited

Then you can use await and Array.prototype.reduce. It sounds a bit awkward but is actually straightforward.

Thread Thread
 
karfau profile image
Christian Bewernitz

I'm not sure I get your point (or whether you got mine), so I'll put some code:

Independent of using map or reduce to iterate over an array, the "aaync callback" will return the promise immediately for every item.
(Even the function that contains the await Promise.all will immediately return with a promise, of course)

The implication is that you can not run those async actions in a sequence using the methods provided by Array.protype.

Meaning urls.map(fetch) is the same as urls.map(async (url) => await fetch(url)) and it's not different from using reduce to create that Array of Promises.

But

for (const url of urls) {
  await fetch(url)
}

Will only trigger the second fetch after the first one is done.

I have had plenty of experience where servers have blocked to many simultaneous requests, so it's worth considering the impact the code can have.

(If that's not clear I'm willing to take the time to write a post about it.)

Collapse
 
jsbeaulieu profile image
Jean-Sébastien Beaulieu

I really don't like seeing people using .map for things not returning a new array. The whole concept of "mapping" comes from functional languages, or even higher, from mathematics, and always have been about "mapping" one set (your input) to another (the returned array). Discarding the output and using map as a glorified for loop makes the intention unclear.

Collapse
 
ankitbeniwal profile image
Ankit Beniwal

Full Stack Devs really exist.

Collapse
 
daniel13rady profile image
Daniel Brady

What is a full stack dev? A "jack of all trades"?

Collapse
 
peiche profile image
Paul

Yes, we exist. I design, write markup, styles, and handle back-end code and design database models.

Thread Thread
 
jasonelkin profile image
Jason Elkin

But can you solder? 😜

One of the fun games to play with people who call themselves full-stack devs is to see just how "full" their stack is. So often it's just a bit of JS and PHP.

Thread Thread
 
ankitbeniwal profile image
Ankit Beniwal

I can solder 😂😂

Exactly, I have also seen bad examples of full stack. But that doesn't change the fact.

Collapse
 
daniel13rady profile image
Daniel Brady

I ask because I think people use the terms "front-end developer," "back-end developer," "full-stack developer," "Java developer," etc. in different ways.

Sometimes an "XYZ developer" term seems to describe the skill set possessed by a developer, and other times it is used to describe the specialization area of a developer.

When talking about skill sets, the term "full-stack" makes some sense to me: it emphasizes that a developer has learned a little about a lot and is comfortable diving deeper anywhere, including new territory.

But when talking about focus areas or areas of specialization, I think the term "full-stack" can be confusing: it seems to say "I'm good at everything," but a) that's not true, and b) every tech stack is different.

Thread Thread
 
daniel13rady profile image
Daniel Brady

Also, the terms "front-end" and "back-end" refer to different things depending on if we're talking about web development or not.

Personally, the only modifier I tend to use with the terms "developer" and "engineer" is "software." Anything more feels like I'm putting myself in a box, and it might be hard to get out of later on.

"I'm a software engineer with ___ experience using ___ technologies, and I want to learn more about ___ by working on ___." More verbose, perhaps, but also a more accurate characterization of myself.

Thread Thread
 
jasonelkin profile image
Jason Elkin

I think you've hit the nail on the head. Web Devs too quickly silo themselves into front or back-end and limit themselves to understanding only part of the product they're working on.

So often I've seen features implemented in the wrong place in the stack. Not because the Dev was bad, because they didn't want to learn a language on the "other side" of the stack.

This should be more than doable for an average Dev (being multilingual is, after all, a thing) but for some reason the REST API seems to represent a cultural divide between the front-enders and back-enders and us full-stack Devs are viewed suspiciously by both.

SOLID, TDD, Agile, all apply to both "sides" of the stack. It's certainly possible to be a good Dev on both sides - so long as you don't measure being a good dev as simply someone who can remember all the native functions in that language.

Collapse
 
piq9117 profile image
Ken Aguilar

This is not so uncommon. There are a lot of people who can program the client all the way to Assembly. The question is, is this an efficient way to work in a project?

Collapse
 
jsbeaulieu profile image
Jean-Sébastien Beaulieu

Depends.

If your team and project scopes are small, hiring "full-stacks" make sense. There simply wouldn't be enough work for a full-time front-end developer in many places.

However, I've also seen places hiring a full-stack in hopes or getting rid of the need for an actual front-end developer for their product. Or hiring front-end devs who can use Firebase in hopes they won't need a back-end.

This rarely works, and when it does, it does quite poorly.

Collapse
 
jsbeaulieu profile image
Jean-Sébastien Beaulieu • Edited

I think that while they do exist, they all tend to have a specialty and, more importantly, relatively important shortcomings. I've yet to meet an actual full-stack that doesn't suck at one part of the stack, be it CSS, server configuration, DevOps, whatever.

Myself included. I suck at doing responsive layouts.

Collapse
 
gomugilad6 profile image
Gilad Bar

You need a BSc in computer science to be a good developer

Collapse
 
loujaybee profile image
Lou (🚀 Open Up The Cloud ☁️)

I'm not sure that's an unpopular opinion today.

Collapse
 
jappyjan profile image
jappyjan

I agree. It's not unpopular but just wrong...

Collapse
 
daniel13rady profile image
Daniel Brady

Counter unpopular opinion: being a good developer has less to do with your knowledge of computing science (e.g. algorithms, runtime complexity, hard maths), than your ability to communicate your solutions to complex problems in non-technical ways.

Collapse
 
adam_cyclones profile image
Adam Crockett 🌀

What if you just watch computer science lectures from universities. I can't afford to go back to uni I'd be 200yrs old before I paid that off.

Collapse
 
_hs_ profile image
HS

A lot of them have BSc in something else, a lot of them have no BSc at all. So it's not unpopular it's in fact untrue. Although I have BSc in IT which is a bit different, most of my knowledge comes from work or learning by myself in spare time. Now I know more people without BSc in computer science that are way better than me.
It's not defending something it's just a good argument. Don't remember that many popular developers that had BSc while becoming famous. basically I want to argue that you can learn outside of university.

Collapse
 
jkhaui profile image
Jordy Lee • Edited

Yes I think that's definitely the growing sentiment these days, that CS degrees (and many other degrees to be fair) are becoming less necessary for one to be considered "good" in one's field.

The two main reasons I believe are responsible:
1) economic reasons: tertiary education costs have inflated to absolutely absurd levels (as a general observation, it also appears quality of teaching is declining). This leads to many people who want to learn CS-related topics, but aren't going to fork out $50k & 4 years to do so. Thus, the natural reaction is to self-teach.
2) It's taken far longer than expected, but the internet is finally providing the quality resources once monopolised by universities. Furthermore, web-based innovation is now occurring so rapidly that unis can't even keep up with the latest developments and industry practices.

These 2 trends combined together mean that a developers skill-level is becoming less coupled from their credentials and is instead more a result of one's drive, resourcefulness, and practical experience.

Collapse
 
lbeul profile image
Louis

You need a BSc in CS to be a good computer scientist. But not every computer scientist is a good developer. Most good computer scientists I know are more of a mathematician than a dev.

Or as Paul Graham writes in Hackers and Painters: "Computer science is a grab bag of tenuously related areas thrown together by an accident of history, like Yugoslavia."

Collapse
 
_hs_ profile image
HS

Hmm, never heard of that one but good to know how my region became like it is - thrown together by an accident of histroy xD.

Anyways exactly what might be the problem: software development != computer science. Some people mix these two so it might be the reason for confusion.

Collapse
 
safijari profile image
Jariullah Safi

Unpopular by the way of being completely wrong.

I'm self taught and work with many "BSc in computer science" and several of them will look at my solutions to problems and go "woah you went all CS on us, this is gonna take my some time to review" and I'm like "dude it's just a graph".

Point being: you need CS knowledge to be good at CS, a degree is not a requirement and often not sufficient.

Collapse
 
dwilmer profile image
Daan Wilmer

I think that having a BSc (and MSc, now that I'm bragging) in computer science made me a better developer, but I don't see how the ability to prove the NP-completeness of a problem is a requirement for being a good developer.

Collapse
 
fultonbrowne profile image
Fulton Browne

Native mobile development makes sense.

Collapse
 
sylvaingirod profile image
Sylvain GIROD

Are you telling that my job is an unpopular opinion ?
this makes me sad :(

Collapse
 
fultonbrowne profile image
Fulton Browne

Makes me sad to, there is so many tasks that are just better on native.

Collapse
 
patarapolw profile image
Pacharapol Withayasakpunt • Edited
  • It is best to decouple frontend and backend, even in Desktop app or Mobile app; and the most stable / mature solution for frontend is JavaScript.
  • There is frontend in Desktop and Mobile environment.
Collapse
 
juankruiz profile image
Juan Carlos Ruiz Pacheco • Edited

POC are likely the first production release

¯\(ツ)

Collapse
 
saschadev profile image
Der Sascha

Haha yes

"we have a poc, so the Software is already complete. There is only some logic missing!"

Collapse
 
daniel13rady profile image
Daniel Brady

Sad but true. I haven't been in the game long, but I feel like the whole "move fast, break things" mantra is often interpreted as "ship your prototypes."

Collapse
 
oksoimdave profile image
dave medlock 🧔🏻

Most software products I’ve seen have at least one feature that just screams “we have a demo on Monday, can you code this over the weekend?” And then that’s what goes to prod because there’s another demo on Friday for some other feature.

Collapse
 
_hs_ profile image
HS

learned this the hard way

Collapse
 
kiszkielisa profile image
Artur ⚡ Kiszkielis

I would love to hear about your experience in this area.

Thread Thread
 
_hs_ profile image
HS • Edited

Well latest one was like build this and that and we need demo up in 3 months. Next thing you know always new feature requests and as a must. After that they started talking about release in another 6 months and I was like heeelllll no. They agreed to build prototype and then rewrite the whole thing but I'm sure they think well it's only bug fixing and optimizing. The code is impossible to maintain so hope they understood last time what rewrite means

Collapse
 
hdv profile image
Hussein Duvigneau

Man I think I just found my support group 😢

Collapse
 
phm200 profile image
Peter Miller

Scalability can be a premature optimization

Collapse
 
equinusocio profile image
Mattia Astorino

It is, always.

Collapse
 
adam_cyclones profile image
Adam Crockett 🌀

Don't need it, yet doesn't come into it.

Collapse
 
tasmto profile image
Tashinga

As long as it works... it's fine.

Collapse
 
daniel13rady profile image
Daniel Brady • Edited

What context do you have in mind?

I think "it's fine if it works" makes sense for rapid prototyping, proof-of-concepts, and other "throw-away" code, but when it comes to code that will be shipped and therefore maintained, I lean towards "good enough to work is not good enough to ship."

Collapse
 
karfau profile image
Christian Bewernitz

Fully agree, since the statement without context could also be applied to social injustice that just works for most people.

Thread Thread
 
tasmto profile image
Tashinga

😂😂😂 Making vague statements keeps me out of trouble 😂😂😂

Collapse
 
tasmto profile image
Tashinga

True, though I meant more for personal growth etc... and not business needs because there always seems to be a pressure to do better or write less with "more advanced" languages. A carousel is a carousel regardless of what tech was used and how it was hacked together and I think that you should be proud regardless. I'm probably wrong though...

Good to see developers and the like still being practical as ever though 😂😂😂

Collapse
 
adam_cyclones profile image
Adam Crockett 🌀

As long as a questionable bit of code has decent tests I'd let it in the codebase.

Collapse
 
mousetail profile image
Maurits van Riezen

'Cloud' hosting is inferior to a standard VPS for most users

Collapse
 
patarapolw profile image
Pacharapol Withayasakpunt

Why? Got a blog or video to explain?

Also, what is VPS and how much does it cost?

For beginners dev, hosting shouldn't cost a penny.

Collapse
 
mousetail profile image
Maurits van Riezen

VPS stands for virtual private server. It is basically just a computer with certain specs you have full controll over. This means you can host anything on it, a website, a game server, mine bitcoins, whatever. I have one for just €5 a month, though the specs are not that great.

When I say cloud, I am referring to the services offered by Google or Amazon. The main difference is the "pay-for-what-you-use" policy, instead of a fixed price per computer you pay for the amount of processing power you use. The dynamic scaling ususally needs to be done with some API which leads to vendor lock-in, plus if you use a bit more in a month it actually quickly gets more expensive than a VPS with similar specs.

I agree for beginners you shouldn't by either, better to use GitHub pages, Heroku, or PythonAnywhere. However, if you need non-trivial processing power or a custom domain or anything outside the limitations of those services, get a VPS.

Also, don't get shared hosting. It's barely cheaper but usually you are restricted to PHP and when you need anything that requires root you have to go via customer support. The only advantage is that you don't have to set up email yourself.

Collapse
 
saschadev profile image
Der Sascha

"Testing ist not neccesary"

Some comments may only be visible to logged-in visitors. Sign in to view all comments.