Agent641,

Designing good UX can be as difficult as writing good code.

Source: Im UI/UX designer and project manager and also QA/QC and also devops and also write the specs and documentation. The only thing I dont do is write the code. The hardest of all those roles is UX. The easiest is project management ("Did anything go tits-up today? No? Well carry on, then ")

Biases: I have no formal training in any of those things and was actually hired as a helpdesk tech.

Elderos,

It seems to be a rare talent indeed.

I am a programmer so my own approach is to find whatever similar project had to solve the same UUx requirements, either by searching the web or from memory, and to start iterating on that. Fortunately it is pretty uncommon to have to reinvent the wheel.

Well, most of the UX designer I have worked with don’t do that, and most didn’t seem to have that much experience using softwares. I have seen some weird shit in meetings, as the “non-expert” it can be very delicate to call those bad designs repeatedly. Even basic rules like when to use radio buttons vs checkboxes are sometime broken. All people working 6 figure jobs++.

I guess I have spent too much time on the computer over the last 2 decades and played around with too many interfaces to ever be satisfied with much of anything.

Agent641,

Thats pretty much what I did too. With no artistic flair or training, I just copied similar software that has a good UI. While Im not great at designing one, I know a good UI when I see one.

I unironically love the look of old grey winforms, but my developers dont like it. They want to use new flashy frameworks. But much of the software I design is intended to be used by warehouse and industrial factory staff. Most are over 40. I know they feel comfortable with the old visual style of winforms, so thats what I insist on for many apps. For newer software projects, Im happy to work with something more modern, like Maui.

MashedTech,

I agree with you honestly. Utility over prettiness. Honestly, a lot of modern apps and websites have pretty UI and awful UX…

Poik,
@Poik@pawb.social avatar

Designing good UX is harder than designing good UI is harder than writing good code. As a machine learning engineer, I will never be able to design UX. I have made a pretty UI once though.

fabian,

PMs and UXers are the Tom Sayers of the software world, whitewashing aunt Polly’s fence and making the other kids do the work and pay for the privilege.

MashedTech,

Bro I swear. The amount of times I keep seeing bad UX drives me nuts.

spokenlollipop,

I am programmer turned “everything else around the code” doer. I constantly have to correct/suggest UI and UX improvements and it can be such a time sink to tell devs to change stuff for it…

callouscomic,

Basic fundamentals of user experience design are not a given apparently. I’m sorry, you wanted to be able to tab through boxes? The enter key should work? Who would thought it.

mindbleach,

Warm take. Engineers who don’t know engineers shouldn’t design interfaces have never had a non-engineer give feedback for their interfaces. We’re all the same kind of weirdo.

firelizzard,
@firelizzard@programming.dev avatar

I mean, yes, but also I’ve dealt with plenty of awful engineer designed interfaces that made my job harder than I’d like

OADINC,

This is the only way;


<span style="color:#323232;">if (condition) {
</span><span style="color:#323232;">    code
</span><span style="color:#323232;">}
</span>

Not


<span style="color:#323232;">if (condition)
</span><span style="color:#323232;">{
</span><span style="color:#323232;">    code
</span><span style="color:#323232;">}
</span>

Also because of my dyslexia I prefer variable & function names like this; ‘File_Acces’ I find it easier to read than ‘fileAcces’

greywolf0x1,

I’ve only seen the second type in C#, to be fair, it makes code neater but i’m glad I left it for Java.

icesentry,

How does it make code neater? All it does is add a ton of empty vertical space. It makes files arbitrarily longer at essentially no benefit.

TopRamenBinLaden,

I think it would be a much hotter take if you had the opposite opinion. I’ve only met a few of those.

Evilsandwichman,

I’m not a programmer (I tried learning programming and unity but got lazy so…) but when I learned about if-then statements, the second one seemed like the way it’s supposed to be; I mean it looks so clean and simple. Do actual programmers prefer the first method?

firelizzard,
@firelizzard@programming.dev avatar

I prefer the first method because it reduces the number of empty lines I have to scroll past and visually filter out

coloredgrayscale,

The 2nd is the style guide used in C#, and therefore what you’ve encountered in unity.

AI_toothbrush,

It depends for me. If the condition is some goofy ahh multiline syntax hell i like to use the second option.

mindbleach,

Even then - ) { on a newline.

alcoholicorn,

I use all 3.

If it’s very short and there’s 2 or more in a row, I’ll put it all in one line.

If there’s a bunch of nested if statements, then I’ll use the second.

Else I’ll use the first.

zer0,

Don’t enforce using the same tech stack on each new project. When customer, domain, environment, requirements etc differ, so might the tool suite, languages, frameworks etc

kucing,

People with golden hammer problem: no, I don’t think I will

bidenicecream,

Computer hardware has been getting faster and faster for decades at this point, but my computer still slows down. Like WTF. The dumbass programmers take the extra power given to them and squander it instead of optimizing their code. Microsoft word could run pretty well on a windows 98 PC, but the new Word can slow down PCs that are 5-10 years old. Programmers are complete idiots sometimes…

barryamelton,

I recommend www.youtube.com/watch?v=pW-SOdj4Kkk on this topic.

darcy,
@darcy@sh.itjust.works avatar

i hate to say it but r u able to use linux ?

NBJack,

Linux can be just as much of a slow-ass OS. The real issue is all of the crap everyone wants to do is the browser now.

257m,

With linux you have the option of debloating your system by using a minimalist distro with Windows you have no choice

Evilsandwichman,

As someone who only learned a few things about programming, is optimizing code an easy thing? I’ve read about that many times but the only thing I could imagine (and I had to imagine it as I’m not really a programmer) is that perhaps their codes could be more efficient (so rewriting their code so that ten lines do the job of thirty for example) but I feel like if they lack the logic skills or math skills to do it then perhaps that’s why the code contains large functions and such.

But again, I’m not a coder, so I’ve no idea how in practice code can be optimized.

257m,

Shorter is usually faster so your right on that account but not always. There are few things like optimizing for cache hits that can vastly speed up programs but are hard to do. Most slow programs are due to technical debt, high dependencies usage, mixed with laziness and lack of interest in developers with speeding up their program.

IcecreamMelts,

Microsoft has not made a good product. Ever. Every program has issues that should not be there if you’re selling it. Yet they get away with it

darcy,
@darcy@sh.itjust.works avatar

typescript? i know its a bandaid on a severed leg at this point but still

MashedTech,

Hahah

Droechai,

Excel is a very nice product, and I really enjoy AoE2. Even if it now has a quite large tech debt with HD the release version was super stable and a leap forward compared to its contemporaries.

The first Xbox was also a very good product.

warlaan,

Visual studio has been the best IDE for a long time, and OneNote is still the best note taking application.

DerpyPlayz18,

I use OneNote everyday, but it lacks feature parity between the devices you use it on

corsicanguppy,

I have to say that at least it’s achieved in usability what I’ve used on unix for about 30+ years now. Hint: the VI tribe reeeeeeally hates it.

FMT99,

Speaking as a member of the vi tribe, I appreciate VSCode and understand why someone would prefer it, even if I don’t myself.

doubletwist,

Even as someone who has disliked MS since the mid-90s, I am willing to admit they have made some good products. The Intellimouse 2.0 was one of the best mice I’ve ever used. It was my main mouse for something like a decade, and even now, almost 25 years later, it still works as a backup mouse when I need it for something in my homelab.

spokenlollipop,

This is a bit too extreme. I guess I’d say it’s more like… they do sometimes make something good, and then make it awkward to use outside of Windows/attach other arbitrary nonsense restrictions etc.

NightAuthor,

Someone didn’t own a Zune and it shows.

CheeseNoodle,

People won’t believe me that windows is an absoloute dumpster fire, sure it works most of the time but when it doesn’t it quickly becomes apparent how much the whole thing is creaking edifice built atop pretty much every past version of itself. I could do a whole rant.

NBJack,

One Note. I have yet to see anything from anyone come close. Works with all of my devices, allows me to use a stylus for designs on an infinite graph paper canvas, and damned good at note taking.

ArmainAP,

I really love the project structure of C++. I know ghat it is an archaic design developed like this due to lack of resources, but I find packages extremely offputting.

The first reason is that splitting declaration and implementation across files makes it easier to figure out what something does.

Second reason is that I feel that I have more control over libraries and packages that have to be manuallyaddedto a project rather than using a package manager.

Third, I feel like modern languages iterate over too many versions too fast. C++ has version releases too, but I feel that versioning is handled better from time, compatibility and stability.

dyc3,

Finally, a real hot take. It’s funny because all of the reasons you stated are exactly why I don’t like C++.

Xylight,
@Xylight@lemmy.xylight.dev avatar

Make your app use native components instead of making your own crappy theme for the 782th time

hairyballs,

This is especially true for steam… what a crappy app

MashedTech,

Bro I swear.

mathterdark,

MATLAB is an okay programming language when used in the right context. It’s intended for scientific applications, so trying to do your standard object oriented programming with it gets weird. I think we forget that some things were made for a specific purpose- you know, a hammer can’t do everything and all that.

BautAufWasEuchAufbaut,
@BautAufWasEuchAufbaut@lemmy.blahaj.zone avatar

GNU octave 💖

xigoi,
@xigoi@lemmy.sdf.org avatar

MATLAB is bad not because it’s not object-oriented, but because it’s proprietary and can’t be run without an IDE.

TheGamingLuddite,

Assembly is fun because it makes you feel like a wizard, even if you’re bad and it’s not an efficient way to code. Everyone should try it once.

buh,
@buh@hexbear.net avatar

I had a job where for whatever reason their codebase that was started in 2010 was mostly assembly

whenever I was upset with them, I would write the most esoteric assembly with zero comments explaining how whatever I was making worked

this is neither an endorsement nor a rebuke of assembly, just my (technically) professional experience with it

etler,

One of my classes had us design our own 8 bit processor and assembly language. It was a lot of fun designing it. It was like a little puzzle to figure out how to get features into those limitations

FreakingSpy,

You might enjoy the game Shenzhen I/O, it’s a programming puzzle game about developing gadgets with limited space for code

mindbleach,

6502 especially. It’s super goofy compared to anything that made the jump past 8-bit, but that’s because it was designed for handwritten bytecode.

I would not recommend the NES, though. The video chip is fiddly and awful, and to this day, nobody’s sure what color anything should be.

UnfortunateShort,

Programming is the easy part, and a useless skill on its own.

If you can only program in one language, you can’t program.

C++ is the single best language to learn programming.

Stupid mistakes you make are not bugs, at least not for you.

SpaceCowboy,
@SpaceCowboy@lemmy.ca avatar

Yeah Comp Sci was a new department at my Uni when I went there, and they didn’t have the program figured out yet. So first year we had to do everything in Pascal. Second year they decided to switch to C, so we had to write everything in that. Third year they realized an object oriented language might be good to teach, so we had to do everything in C++. Last year we were doing stuff in Java.

As disorganized as it was, in the end I learned more about the concepts better than I would have if they stuck to one language all the way through. Nowadays I work mainly with C# (it pays the bills) but I never took any classes in it. Just google how to do whatever concept and get the specific syntax for the language and you’re good to go.

AdmiralShat,

I started with C++ 15 years ago

Every time one of my friends tries to get into programming, they always want to start with Python or they want to jump right into using a game engine. They always fail

I don’t hate python like some people do, but i think it terrible for beginners

hairyballs,

Funny, I think C++ is literally the worst language to learn programming. I would go with JS or OCaml at first, then Rust if they need manual memory management.

UnfortunateShort,

I thought about explaining why, but ultimately decided against it. Felt like it would take much of the hotness out of the take :D

My rationale is that C++ not only implements pretty much every concept there is, it allows for high- as well as low-level programming. That way you can learn bottom-up or top-down… Or both! Whatever suits you. You can also use it for pretty much anything and natively on pretty much any platform. That’s especially great for students with tons of different devices who don’t know what they want to do later. And it has a lot of strange, basically deprecated stuff built in you can use as curious examples and to make the learning process more interesting.

Finally, if you can deal with C++, you can deal with anything. It is a horrible yet beautiful language.

xigoi,
@xigoi@lemmy.sdf.org avatar

C++ makes programming look way harder than it actually is.

Elderos,

The best codebase I have ever seen and collaborated on was also boring as fuck.

  • Small, immutable modules.
  • Every new features was coded by extension (the ‘o’ in S.O.L.I.D)
  • All dependencies were resolved by injection.
  • All the application life cycle was managed by configurable scopes.
  • There was absolutely no boiler plate except for the initial injectors.
  • All of the tests were brain-dead and took very minimal effort to write. Tests served both as documentation and specification for modules.
  • “Refactoring” was as simple as changing a constructor or a configuration file.
  • All the input/output of the modules were configurable streams.

There is more to it, but basically, it was a very strict codebase, and it used a lot of opinionated libraries. Not an easy codebase to understand if you’re a newbie, but it was absolutely brain dead to maintain and extend on.

Coding actually took very little time of our day, most of it consisted of researching the best tech or what to add next. I think the codebase was objectively strictly better than all other similar software I’ve seen and worked on. We joked A LOT when it came time to change something in the app pretending it would take weeks and many 8 pointers, then we’d casually make the change while joking about it.

It might sound mythical and bullshity, and it wasn’t perfect, it should be said that dependency injection often come in the form of highly opinionated frameworks, but it really felt like what software development should be. It really felt like engineering, boring and predictable, every PO dreams.

That being said, I given up trying to convince people that having life-cycle logic are over the place and fetching dependencies left and right always lead to chaos. Unfortunately I cannot really tell you guys what the software was about because I am not allowed to, but there was a lot of moving parts (hence why we decided to go with this approach). I will also reiterate that it was boring as fuck. If anything, my hot take would be that most programmers are subconsciously lying to themselves, and prefer to code whatever it is they like, instead of what the codebase need, and using whatever tool they like, instead of the tools the project and the team need. Programming like and engineer is not “fun”, programming like a cowboy and ignoring the tests is a whole lot of fun.

luckystarr,

I never got so far, but had a system built which some parts of what you described. It was incredibly relaxing to develop with it. Our take as a team was: boring is better, we don’t want to be paged on weekends.

corstian,

This! Software engineering suggests a certain professionalism wich unfortunately is hard to find. From an accessibility point of view I am simply not able to participate in these cowboy style events for I do not have the mental capacity to do so. Ironically I have been able to work more effectively than others by focussing on quality.

Coincidentally I published some of my work earlier this week. It’s an opinionated library dictating the structure of your core domain. In return it completely decouples infrastructure. This way you do not really have to touch infra at all during day to day operations, which simplifies things immensely! As the domain exists at the very core of most software projects, it greatly impacts the way everything else is designed as well.

MashedTech,

Bookmarked. Thanks!

flakusha,
@flakusha@beehaw.org avatar

Error: ‘o’ is not found in ‘S.O.L.I.D’

chicken,

I am not smart enough to effectively code with certain languages and design patterns and that’s ok. There is nothing wrong with accessibility being prioritized or with making tradeoffs for the sake of reducing complexity.

pexavc,

what makes you say you are not smart enough? I do not think there is a “smartness” scale to design patterns.

chicken,

You have to learn and conceptualize it. Some things are harder than others to learn and conceptualize. Some tasks can be easily broken down piece by piece, some you can’t do without modeling a complex system in your head. There is definitely a “smartness” scale if only because things have different demands on attention, perception, and short term memory.

pexavc,

Yeah I see what you mean about conceptualization + long term memory. I’ve always felt the process of abstracting things higher and higher to be fulfilling. Not sure why. But, it is very easy to get lost and over engineer and in turn not adding any value besides more stress, solving no real problems.

chicken,

IMO it isn’t even that it’s necessarily bad, there may very well be a tradeoff that helps you, it’s just that the tradeoff may be different depending on who you are and what your brain can do.

thomasdouwes,
@thomasdouwes@sopuli.xyz avatar

Not sure about here but is was a hot take on reddit:
Pointers are not that hard and really useful

jvisick,

I can’t imagine anyone but a total novice disagreeing with this.

I can understand finding pointers hard at first, but I can absolutely not understand trying to argue that they aren’t useful.

thomasdouwes,
@thomasdouwes@sopuli.xyz avatar

There where a lot of “painter hard” memes back r/programmerhumor. Probably a lot of beginner’s over there.

I guess i cheated by already having an understanding of how the computer works before starting C.

AdmiralShat,

Pointers are absolutely hard for beginners, and it is arguably hard to learn when and where to actually use them properly

tryptaminev,

What is so difficult to learn about pointers? I am not a programmer, i just used to dabble in C++ and a bit of C# and java for school and now python for uni. I found pointers in c++ much more straightforward, then memorizing when a function is doing call by value or call by reference. I still hate java for doing it half half and not letting you do it differently.

NightAuthor,

Learning pointers feels like one of those things, if you’re physically capable of learning it, then it just takes having it explained in a certain way, or seeing a certain implementation and then it just clicks.

mindbleach,

They’re easy when they work. If you screw up, you have to fold your brain in half to figure out what you’re trying to do, what you’ve actually done, and what to do instead.

Nevermind the compiler throwing errors because the syntax is awful and it won’t tell you what it expects.

willia4,

TDD is overrated. Code coverage is extremely overrated. Both of these tend to lead to a morass of tests that prove the compiler works at its most basic level while simultaneously generating a surplus of smugness about the whole situation.

Tests have their place. Tests can be, and often are, valuable. But the easier the test is to write, the easier it would’ve been to just encode it into the type system to begin with.

bamboo,

As someone who works on python code and kinda hates it, type annotations and a CI pass for mypy would catch the majority of our bugs. It’s painful

SpaceCowboy,
@SpaceCowboy@lemmy.ca avatar

Yeah creating tests for every single method is insane. If a feature changes it’s more difficult you either have to figure out how to implement the change without changing the method, or you change the method and have update the unit test. But if you’re constantly updating the unit tests, how do you know if you might’ve broken something else that the test was intended for.

It’s way better just to do integration tests that match the feature request. That way the feature that someone asked for will continue to work even if you decide to refactor the code.

Alexstarfire,

Unit tests are only worthwhile if you refractor code or write the unit tests before writing the code. We started adding unit test for most everything where I work and I think it’s far more effort than it’s worth. It’s not that it catches nothing but it catches so little I don’t think it’s worth the time spent writing them.

Double_A,
@Double_A@discuss.tchncs.de avatar

Code changes that could affect tests happen all the time. It doesn’t need to be a specific refactoring of that unit.

Alexstarfire,

I don’t think you understood my point. That’s exactly why I think unit tests aren’t all that useful. Most code changes require updating the unit tests so unless you change the unit tests first all that’s being done is saying, yep this works how I programmed it to work.

Double_A,
@Double_A@discuss.tchncs.de avatar

But if unit tests that other people wrote unexpectedly break, you know that you maybe changed things that you maybe didn’t mean to change.

wolf,

TDD as in religion is overrated. TDD done right is IMHO extremely effective.

The problem is, writing good tests is really hard, and I have seen/committed/experienced a lot of bad tests… just the top of my mind problems with TDD done wrong:

  • testing the implementation instead the interface
  • creating a change detector
  • not writing / factoring the tests in a good way
  • writing tests / TDD w/o having an overall design for the software

For every non trivial piece of software written w/o TDD, I always saw the same pattern: First few hours/days/weeks, rapid progress compared to TDD, afterwards: hours/days/weeks wasted in debugging, bug fixing etc… and the people can not even catch up with tests if they wanted.

Is TDD always the answer? Of course not, it is a tradeoff like everything else in technology. OTOH I have yet to see a project which benefited from not using TDD by any metric after a few days in.

r1veRRR,

Compiler checked typing is strictly superior to dynamic typing. Any criticism of it is either ignorance, only applicable to older languages or a temporarily missing feature from the current languages.

Using dynamic languages is understandable for a lot of language “external” reasons, just that I really feel like there’s no good argument for it.

SpaceCowboy,
@SpaceCowboy@lemmy.ca avatar

Yeah the error list is my friend. Typos, assigning something to the wrong thing or whatever is fixed without having to run the code to test it. Just check the error list and fix any dumb mistakes I made before even running the thing. And I can be confident in re-factoring, because renaming something is either going to work or give a compiler error, not some run-time error which might happen in production weeks later.

darcy,
@darcy@sh.itjust.works avatar

true but i dont think is really a hot take?

flakusha,
@flakusha@beehaw.org avatar

Dynamic languages are good for prototyping, especially if a lot of libraries available

hairyballs,

It’s much easier to work with streams of untyped data in a weakly typed language.

spokenlollipop,

Even when you’re using a dynamically typed Lang you should be using all the appropriate scanners and linters, but so many projects just don’t.

I joined a large project half way through and I ran pylint and stared as the errors (not just style stuff) poured out…

kaba0,

I do believe that static typing is at least a local optimum, but I am still not entirely convinced. Rich Hickey is a very convincing presenter and I can’t help but think that he is on to something — with Clojure the chosen direction is contract-typing, which is basically a set of pre- and post-conditions for your functions that are evaluated at runtime. Sure, it has a cost and in the extremes they are pretty much the same as dependent types, but I think it is an interesting direction — why should my function be overly strict in accepting a “record” of only these fields?

  • All
  • Subscribed
  • Moderated
  • Favorites
  • random
  • uselessserver093
  • Food
  • aaaaaaacccccccce
  • [email protected]
  • test
  • CafeMeta
  • testmag
  • MUD
  • RhythmGameZone
  • RSS
  • dabs
  • Socialism
  • KbinCafe
  • TheResearchGuardian
  • oklahoma
  • feritale
  • SuperSentai
  • KamenRider
  • All magazines