Web Developer angst



  • A couple of interesting articles.

    First, a web developer who lost confidence in himself and "forgot" how to program.

    The root of the OP's troubles is his realization that web programming is seen as easy by the programming community at large. He let that idea get into his head, which somehow pushed him into a confidence ruining downward spiral.

    As I became more involved in online communities, the narrative became increasingly clear that my confidence and sense of accomplishment were unwarranted. PHP was a terrible language, and PHP developers were terrible programmers. JavaScript was a terrible language, and JS developers couldn't perform asymptotic analysis to save their life. Web developers don't have degrees and it shows in their code. Drupal/Wordpress developers are an absolute joke. Web developers never took a compilers course, so they don't understand just how easy their "jobs" are. Web developers are overpaid for how little they know. Web developers have everything handed to them. Web developers have never had to manage memory or make hard decisions. Web developers have no knowledge of data structures or algorithms. Web developers are not real programmers.

    Second article responds to the thought process of the first guy and tells him how silly he's being.

    https://medium.freecodecamp.com/no-such-thing-as-real-programming-c30b98c51d8#.l9q40q823

    My opinion: Web development has very low barrier to entry, but there's a long way to go to get to the top.

    Unfortunately (similar to UX designer and Tester jobs, for example), the difference between a beginner and an expert isn't so obvious as in some other fields. An algorithm either works or doesn't. You can mathematically prove its utility or lack thereof.

    But take a website project, and things become more complicated. The second guy lists all the various things that a good web developer will take into consideration. To the client, though, all that matters is that the site "works" and how pretty it looks. They don't see the security hole ridden house of cards underneath.

    Now frontend, on the other hand, that's for for soulless PSD cutters and jQuery slingers, punching out their meaningless days until retirement.

    🚎


  • FoxDev

    Setting up a Wordpress blog takes significantly less knowledge and effort than building an operating system.

    Making a sandwich requires less knowledge than performing a colonoscopy; doesn't mean the two are comparable.

    Setting up WordPress isn't web development. Writing WordPress, on the other hand...



  • @cartman82 said:

    The root of the OP's troubles is his realization that web programming is seen as easy by the programming community at large.

    ...

    The "programming community at large" ARE web developers. Maybe it's just a Seattle thing, but here at least web developers are AT LEAST a solid 50%, and probably closer to 75%, of what companies are hiring. Of course the term is vague and stupid like most IT terms-- the majority of my work is on a REST API, am I a "web developer"? I'm sure some people would say yes. But I've worked here well over a year, and I haven't once touched HTML, CSS, or JavaScript.

    If you include back-end API development, like what I do, in the definition, than easily 75% of jobs here are "web developer" jobs.

    @cartman82 said:

    PHP was a terrible language,

    PHP is a terrible language by most measures, but:

    @cartman82 said:

    and PHP developers were terrible programmers.

    That doesn't follow at all.

    You sure this guy's a programmer? He doesn't even know basic logic.

    @cartman82 said:

    JavaScript was a terrible language,

    I think JavaScript is an amazingly well-put-together language for what it was originally designed to do. It's just being forced to do stuff WAY outside its comfort zone, where its strengths as an embedded language (lack of a large standard library, for example-- or the eschewing of boilerplate like namespaces) become weaknesses.

    @cartman82 said:

    and JS developers couldn't perform asymptotic analysis to save their life.

    I don't know what that is, so I guess I'm a terrible developer too.

    EDIT: oh I guess that's a technical term for Big O. I did learn that in college, believe it or not. But I'm pretty sure even then I never heard the term "asymptotic analysis".

    @cartman82 said:

    My opinion: Web development has very low barrier to entry, but there's a long way to go to get to the top.

    That's fair.

    In a lot of ways, web development is significantly HARDER than traditional development, not because the problems solved are more difficult but because the environment is a complete mess of shit. Even if you have a quality IDE (and most web devs don't use one, either because they're on Macs or because they're morons and CLI is "trendy") you still need to dive into at least 3 languages to get ANYTHING done, plus usually a JS framework that's so obtuse it might as well be considered a fourth language.

    So while I can pop open Visual Studio, pick C# and build everything (well, except a web site) with that one tool, web developers need 4 tools to build anything.

    @cartman82 said:

    Now frontend,

    See this is a terminology thing, too. At our company, back-end is the REST API and front-end are consumers of it. Which means front end does a lot of serious programming. The "PSD cutters" are our UX guys.



  • Sounds to me like clinical depression. This is just the specific way it manifested.



  • @blakeyrat said:

    ...

    The "programming community at large" ARE web developers. Maybe it's just a Seattle thing, but here at least web developers are AT LEAST a solid 50%, and probably closer to 75%, of what companies are hiring. Of course the term is vague and stupid like most IT terms-- the majority of my work is on a REST API, am I a "web developer"? I'm sure some people would say yes. But I've worked here well over a year, and I haven't once touched HTML, CSS, or JavaScript.

    Using this classification, I'm guessing yes? As long as your input are HTTP requests and output HTTP responses.

    Once you make some kind of cron or windows service app to shuffle data, things become less clear.

    @blakeyrat said:

    See this is a terminology thing, too. At our company, back-end is the REST API and front-end are consumers of it. Which means front end does a lot of serious programming. The "PSD cutters" are our UX guys.

    Then you're ahead of the curve.

    Most of the frontend guys I know expect to get PSDs on one end and to produce working prototype web pages on the other (HTML + CSS + Javascript). These are then fed to backend guys to impregnate them with templating directives and plug them into whatever MVC framework they are using.



  • @cartman82 said:

    Using this classification, I'm guessing yes? As long as your input are HTTP requests and output HTTP responses.

    Huh.

    @cartman82 said:

    Once you make some kind of cron or windows service app to shuffle data, things become less clear.

    The I/O of our back-end is REST API. Seriously. Even the XML reports we generate are cued from the REST API (and one or two ancient .aspx pages, but those are certainly web development.)

    Therefore, by this definition, there is nobody at our company who isn't a web developer. Except perhaps our BizTalk guy.

    @cartman82 said:

    These are then fed to backend guys to impregnate them with templating directives and plug them into whatever MVC framework they are using.

    I think all the companies around here have been doing SPAs (Single-Page Apps, like Gmail or Discourse itself) for ages. Our "old" project, only used for some admin tasks and never shown to the outside world, is WebForms (crappy WebForms, with tons of postbacks.) The company switched from that to SPA like... 3-4 years before I joined.



  • The impostor syndrome is well-known among developers, but it sounds like this guy is really indulging himself in self-pity. Without a good reason for it. If you know your strengths, know your tools, and are doing what you like to do, then you're absolutely no less of a developer than that guy at NASA or that girl at Boeing.

    Yes, Wordpress development is a completely different beast than writing a kernel driver, implementing a nifty new air traffic controller feature which reduces accidents by 28%, or making something to operate the stock markets faster. So what?



  • @blakeyrat said:

    I think all the companies around here have been doing SPAs (Single-Page Apps, like Gmail or Discourse itself) for ages. Our "old" project, only used for some admin tasks and never shown to the outside world, is WebForms (crappy WebForms, with tons of postbacks.) The company switched from that to SPA like... 3-4 years before I joined.

    I'm doing a classic mixed MVC right now, and I long for my SPA days. Once you achieve a clean separation between client and API, going back to the mush of mixed server and client side rendering is unbearable. Even if the product might be more performant in some cases, the development speed and quality penalties just aren't worth it.

    The future IMO is, either go 100% backend rendered using something like WebForms, or go full SPA and put web client on equal footing with mobile apps. This whole MVC era will hopefully be remembered as an awkward intermediary phase between the two "clean" solutions.



  • Web development isn't any easier than other kinds of programming - there's still all kinds of design patterns to be aware of and best practices to learn and security is still a concern as is usability. Not sure where all the hate comes from.


  • I survived the hour long Uno hand

    @LB_ said:

    Web development isn't any easier than other kinds of programming

    It's acceptable to produce absolute shit in web development, though. So many people don't bother learning much at all. So what if it breaks in IE? IE sucks, don't use it, E_WONT_FIX. So what if it chews up all your battery on mobile? Buy a better phone, E_WONT_FIX.

    @LB_ said:

    Not sure where all the hate comes from.

    HTH HAND


  • FoxDev

    @Yamikuronue said:

    It's acceptable to produce absolute shit in web development,

    Web development is hard! let's go shopping!


  • Winner of the 2016 Presidential Election

    @blakeyrat said:

    In a lot of ways, web development is significantly HARDER than traditional development, not because the problems solved are more difficult but because the environment is a complete mess of shit. Even if you have a quality IDE (and most web devs don't use one, either because they're on Macs or because they're morons and CLI is "trendy") you still need to dive into at least 3 languages to get ANYTHING done, plus usually a JS framework that's so obtuse it might as well be considered a fourth language.

    +1

    That's exactly why I'm not a web developer anymore: Because you have to know a lot of different environments and standards, all of which are completely fucked up.

    What I'm doing now is challenging and complex in a different way, but not nearly as frustrating as web development. At least I'm fighting a hard problem now, not broken standards and compatibility issues.



  • I just want to say that, web development is hard. But that's because the web wasn't meant for this shit. Everything is a hack on top of HTML which from the beginning was broken except for what it was, a fucking document with nice formatting. And in 1995 comes JavaScript to fuck up everything even more.

    I've done my fair of development of embedded and desktop and yes, it's hard to start up, but once you know the APIs and the quirks, it's pretty straight forward. Shit, stuff like JavaFX already come with almost every widget you can need and it's like 4 years old. In web you can't use a fucking date widget which works natively.

    I mean, just look at how stupid date handling on any web project is done, you've got the date from the widget, the date from JavaScript, the date on the JSON and the date on the backend. OTOH a Date is a Date in a Swing widget all the way until it reaches JDBC.

    Web development is a mess. But that's why I get paid for so keep it coming!



  • @Eldelshell said:

    mean, just look at how stupid date handling on any web project is done, you've got the date from the widget, the date from JavaScript, the date on the JSON and the date on the backend. OTOH a Date is a Date in a Swing widget all the way until it reaches JDBC.

    Fucking dates. To be fair, dates were shit in java until recently



  • Dates are shit, simple as that. There's time zones, leap years, leap seconds, various calendars, different ways of dealing with formatting, week numbers, DST, and so on.



  • Yeah, but java forced you to create a fucking calendar object to create a date. Overkill much?


  • FoxDev

    things would be much simpler here if we just measured time in multiples of 186282.397... miles



  • You could create a Date object directly, it's just been deprecated for longer than some people reading this forum have been alive.



  • I know, but then good fucking luck using it for anything -and getting correct results



  • ...that's why its been deprecated.

    That and Date's public interface doesn't support time zones despite it storing that info internally if you create it from a GregorianCalendar object.



  • @blakeyrat said:

    Maybe it's just a Seattle thing, but here at least web developers are AT LEAST a solid 50%, and probably closer to 75%, of what companies are hiring

    Last time I checked the local job offers they were like Android, web, Android, web, web, Android, web, web, C++, web, web, web, Android...



  • @AlexMedia said:

    Dates are shit, simple as that.

    I use .net.

    @AlexMedia said:

    There's time zones, leap years, leap seconds, various calendars, different ways of dealing with formatting, week numbers, DST, and so on.

    It's handled all that since day one.



  • @blakeyrat said:

    Even if you have a quality IDE (and most web devs don't use one, either because they're on Macs or because they're morons and CLI is "trendy").

    There are plenty of decent cross browser IDEs for web development. However I don't think a full blown IDE is really necessary.

    Sublime Text / VS Code and a plugin for server and client side debugging is perfectly sufficient.

    The "CLI is Trendy stuff" is nothing to do with it being trendy. It has everything to do with it being very useful e.g. with npm and a few modules it becomes trivial to

    • Run unit tests.
    • Run JS linting tools.
    • Compiling LESS or SASS.
    • Auto refresh your browser on file changes and even sync browser action between browsers i.e. I was testing in Firefox and Browser sync was running the same actions in Chrome at the same time ... which I think is pretty useful.

    I've using typescript with a node watch job and browser sync using a sublime plugin for typescript which gives me code completion and "compile time" checks (the intellisense is better than VS2015 when working with Angular JS 2).

    VS and most IDEs have decent integration with this anyway and you don't have to touch the command-line at all if you so wish. This applies to Mac users as well, many people use codekit or similar tools.

    I dunno about other people here, but these watch task jobs are a lot nicer than the old cycle of:

    1. Make some changes
    2. Find my browser tab (among all the stackoverflow tabs where I was googling the problems I am currently trying to solve) that has my local changes.
    3. Refresh
    4. Repeat 1 to 3 for every browser
    5. Repeat 1 to 4 everytime I make a change.


  • @lucas said:

    It has everything to do with it being very useful e.g. with npm and a few modules it becomes trivial to

    It would be MORE trivial if they actually bothered to write a decent UI for all this shit.

    But having usability? Quality? That wouldn't be very open source-y of them, would it. Have to serve up crap, that's what people want, just the crap.



  • @Yamikuronue said:

    It's acceptable to produce absolute shit in web development, though. So many people don't bother learning much at all. So what if it breaks in IE? IE sucks, don't use it, E_WONT_FIX. So what if it chews up all your battery on mobile? Buy a better phone, E_WONT_FIX.

    "It doesn't render right in IE8", I go over and they have put a block element in a span or something else retarded. The IDE even underlines this stuff in red and they just plain ignore it.



  • @blakeyrat said:

    It would be MORE trivial if they actually bothered to write a decent UI for all this shit.

    They do, I think you missed where I said this:

    @lucas said:

    VS and most IDEs have decent integration with this anyway and you don't have to touch the command-line at all if you so wish. This applies to Mac users as well, many people use codekit or similar tools.



  • @lucas said:

    They do, I think you missed where I said this:

    You said that but it doesn't make sense, because I know for sure that it doesn't have a UI.

    You're saying "oh it's ok that he software is unusable shit because some dude at Microsoft spend THEIR time making it kind of sort it slightly less shit", but you'll excuse me if I'm not exactly impressed by that argument.


  • Grade A Premium Asshole

    Do you have this much trouble getting yourself dressed and fed? How have you not burned your house down by now? Lastly, if you do not use the tools, why do you care so much?



  • Because I want the world to have better software, and I'm extremely depressed by how AWFUL a job IT people are doing at writing software. Especially open source idiots. And I'm sick of people defending their bullshittery.

    No. It's not ok to release shitty software. It doesn't matter if you're a volunteer or not. If you're not going to even attempt to make quality software, just don't bother. We don't need more shit. We have enough shit. We have more than enough shit.



  • @blakeyrat said:

    You said that but it doesn't make sense, because I know for sure that it doesn't have a UI.

    When you press build in Visual Studio what do you think it does? It does something like this in the background.

    Process.Start("MSBuild.exe <solutionname>.sln")
    

    Which is shock, horror ... a CLI tool.



  • @lucas said:

    When you press build in Visual Studio what do you think it does?

    Builds the project?

    @lucas said:

    Which is shock, horror ... a CLI tool.

    Who gives a shit, it's implementation detail.

    Did you think I said, "DERP I AM RETARDED and also I think having a quality CLI and GUI are mutually-exclusive because I am the world's dumbest piece of shit!!!"? Because I didn't say that. But you're somehow replying as if I did.

    I guess because you think I'm a moron? Well, I'm not.



  • @blakeyrat said:

    Who gives a shit, it's implementation detail.

    If your IDE is integrated with the node tools, how the node tools work underneath is an implementation detail.

    @blakeyrat said:

    I guess because you think I'm a moron? Well, I'm not.

    It would help me to come to the same conclusion if you weren't arguing over nonsense.



  • If I weren't arguing over nonsense, what the fuck would I do all day? Something productive? Feh.



  • @cartman82 said:

    My opinion: Web development has very low barrier to entry, but there's a long way to go to get to the top.

    Yes there is. However In the past though you had to know the principles before attempting anything too complicated because the tooling just wasn't available to do anything significantly complicated. The number of devs that dunno how to write a form without jQuery and some form validation library is pretty shocking because they were never forced to do it without JS.

    These days there is becoming a clear division between "front-end" and "server-side". Both sides are getting pretty specialised. There simply isn't enough hours in the day to learn both now, and so most developers are specialising.



  • @blakeyrat said:

    If I weren't arguing over nonsense

    You would not be yourself



  • As a full-stack web developer, I will turn increasingly to JavaScript libraries to handle that sort of thing so I can concentrate on the back-end side.

    Also, someone else has already made the wheelform validation library, so why should I reinvent it?



  • Because a lot of these libraries are just wrappers around what already provided by the browser. It is a lot cleaner to use something like a polyfill rather than a using a full blown library. Most JS polyfills for native functions can be found on MDN.

    A lot of common form validation scenarios can already be done just using attributes on your form elements. I suspect again they can be polyfilled where necessary.

    Modern browsers all have roughly provide the same APIs so cross browser inconsistencies are not much of a concern these days unless you have to support anything older than IE9.


  • area_deu

    @powerlord said:

    Also, someone else has already made the wheelform validation library, so why should I reinvent it?

    Because Legoing together half-assed libraries that may or not do the job you need them to do is not development. It's not even code-monkeying. "There's a jQuery plugin for that" has pretty much become the standard answer, no matter how old or shitty said plugin is.

    I recently let one of our junior developers run loose for a prototype/demo project. The result? 25 JS "plugins" or libraries or whatever loaded on every single page, five of which did more or less the same.
    Ran like shit, but at least looked got enough that we got the contract. Needless to say we started over from scratch then.



  • @ChrisH said:

    Because Legoing together half-assed libraries that may or not do the job you need them to do is not development. It's not even code-monkeying.

    It's "building the forum software for the next ten years".



  • @blakeyrat said:

    No. It's not ok to release shitty software. It doesn't matter if you're a volunteer or not. If you're not going to even attempt to make quality software, just don't bother. We don't need more shit. We have enough shit. We have more than enough shit.

    Shitty is in the eye of the beholder. If software gets a job done, even if it's imperfect, then it has value.


  • Grade A Premium Asshole

    @another_sam said:

    Shitty is in the eye of the beholder. If software gets a job done, even if it's imperfect, then it has value.

    Unless it is open source. If it is, then it is obviously crap and everyone involved in the project should be so shamed that they commit bukkakeseppuku to atone for their sins.

    Blargle blargle.

    Heineken is awesome beer, you should buy everything that MS farts out because it is the bestest thing since Mac Classic and HyperCard.


  • :belt_onion:

    @blakeyrat said:

    It's handled all that since day one.

    I give you Noda Time:

    Noda Time exists for .NET [because] the built-in libraries for handling dates and times are inadequate. [The platform provides] far too few types to represent date and time values in a way which encourages the developer to really consider what kind of data they're dealing with... which in turn makes it hard to treat the data consistently.

    While the .NET date/time types are actually easier to use than their Java counterparts (largely as a result of being immutable structs instead of mutable classes), they're actually less powerful - in .NET, there's no such concept of "a date and time in a specific time zone" for example.

    And also this:

    You may be thinking at this point, "You're making a big deal out of nothing. I don't want to think about this stuff - why are you trying to make everything so complicated? I've been using the .NET API for years, and not had problems." If so, I suspect there are three broad possibilities:

    • You're far, far smarter than I am, and understood all of these intricacies through intuition. Your code always makes use of the right kind of DateTime, uses DateTimeOffset appropriately, and will always do the right thing with invalid or ambiguous local date and time values. No doubt you also write lock-free multi-threaded code sharing state in a way which is as efficient as possible but still rock solid. What the heck are you doing reading this in the first place?
    • You have run into these issues, but have mostly forgotten them - after all, they've only sucked away 10 minutes of your life at a time, as you experimented to get something that appeared to work (or at least made the unit tests pass; the unit tests which may well be conceptually wrong too). Maybe you've wondered about it, but decided that the problem was with you rather than the API.
    • You've never seen the problems, but only because you don't bother testing your code, which has so far only ever run in a single time zone, on computers which are always turned off at night (thus missing all daylight saving transitions). In some ways you're lucky, but you've got a time zone.

    Okay, that was somewhat facetious, but it really is a problem. If you've never really thought about the difference between "local" times and "global" instants before, you should have done. It's an important distinction - similar to the distinction between binary floating point and decimal floating point types. Failures can be subtle, hard to diagnose, hard to explain, hard to correct, pervasive, and easy to reintroduce at another point of the program.

    Handling date and time values is intrinsically tricky. There are nasty cases to think about like days which don't start at midnight due to daylight saving changes (for example, Sunday October 17th 2010 in Brazil started at 1am). If you're particularly unlucky you'll have to work with multiple calendar systems (Gregorian, Julian, Coptic, Buddhist etc). If you deal with dates and time around the start of the 20th century you may see some very odd time zone transitions as countries went from strictly-longitudinal offsets to mostly "round" values (e.g. Paris in 1911). You may need to deal with governments changing time zone transitions with only a couple of weeks' notice. You may need to deal with time zone identifiers changing (e.g. Asia/Calcutta to Asia/Kolcata).

    Dates suck, let's use stardates milliseconds since the ignition of our sun.



  • Fucking this.

    Saw the whole of modernizr loaded in (not a custom build). To check for one modern browser feature.



  • @svieira said:

    in .NET, there's no such concept of "a date and time in a specific time zone" for example.

    DateTimeOffset? Pretty sure that's been in the framework since day one.

    I guess maybe what he's trying to say is that C# doesn't have a type for "a date and time that was originally recorded in this particular time zone". Which is true. I also don't see the utility of such a thing, but. What do I know.

    Here, I just invented one:

    public struct DateTimeWithZone
    {
     public DateTimeOffset dateTime;
     public TimeZoneInfo timeZone;
    }
    

    You're welcome.



  • @asdf said:

    What I'm doing now is challenging and complex in a different way, but not nearly as frustrating as web development. At least I'm fighting a hard problem now, not broken standards and compatibility issues.

    Would you care to elaborate ? I kind of feel the same way about web dev.



  • @Eldelshell said:

    I just want to say that, web development is hard. But that's because the web wasn't meant for this shit. Everything is a hack on top of HTML which from the beginning was broken except for what it was, a fucking document with nice formatting. And in 1995 comes JavaScript to fuck up everything even more.

    I'll just leave this here: programming sucks.


  • Garbage Person

    @anonymous234 said:

    Last time I checked the local job offers they were like Android, web, Android, web, web, Android, web, web, C++, web, web, web, Android...

    This shit is one of the reasons I'm still at WtfCorp. Except mix in VB because the PA state government is a VB.net shop with major NIH problems.


  • Winner of the 2016 Presidential Election

    @stillwater said:

    Would you care to elaborate ?

    What do you want to know?



  • @Weng said:

    the PA state government is a VB.net shop

    That explains a lot.



  • @cartman82 said:

    PHP was a terrible language (...) JavaScript was a terrible language (...) Drupal/Wordpress developers are an absolute joke.

    These are all 100% true facts. Whoever designed Drupal database should be deported to Mars.

    @cartman82 said:

    My opinion: Web development has very low barrier to entry, but there's a long way to go to get to the top.

    Oh yes. Especially that entry-level materials tend to do bad job at teaching people how to do things properly.

    @RaceProUK said:

    Setting up WordPress isn't web development.

    It's a terrible comparison anyway. And setting up WordPress to any kind of acceptable performance and security is not really a low-effort job.

    @blakeyrat said:

    In a lot of ways, web development is significantly HARDER than traditional development

    This is true especially on the medium+ scale. If you're sloppy then you get things like RoR celebrating 2k requests/second and services rewriting from scratch the second they become popular. People underestimate the "soft real-time" part and its impact on development too often.


Log in to reply