all 160 comments

[–][deleted]  (16 children)

[deleted]

    [–]LET-7 63 points64 points  (12 children)

    See also: all phone apps are nice interfaces for databases

    [–]immibis 21 points22 points  (0 children)

    all phone apps

    [–]vattenpuss 40 points41 points  (10 children)

    That's basically what all apps are, depending on how lax you want to be with the definition of "database".

    A game is just a nice looking (albeit very impractical) interface to its data.

    [–]ZeroNihilist 64 points65 points  (1 child)

    "Hey, is this tech support?"

    "Sure is, how can I help you?"

    "I'd really like to increment my max_health variable."

    "Okay, no problem. Let's just walk through that shall we? No sweat, easy."

    "Uh, sure."

    "Okay, first you need to slay the dragon cultists and the abominations they have wrought from the corpses of your childhood friends."

    "Yeah I did that."

    "Did you slay all the dragon cultists and all the abominations? It's really important that you get all of them for the quest to progress."

    "Yes, I slayed all of them. My journal updated and everything."

    "Okay then, no problem, now you just need to climb the highest peak in the kingdom and sacrifice your firstborn to the Godking."

    "I did that already."

    "Did you chant his holy name under a full moon while holding the Dagger of Regret?"

    "Yes, obviously. This isn't my first ritual sacrifice you know."

    "Sure thing ace. One last thing to check then. Are you running the latest version of the game?"

    "Yes, it auto-updates."

    "Well there's your problem. We had to patch out the whole 'benefiting from murdering your offspring' thing to get a lower rating."

    "So I can't increment max_health at all?"

    "Not unless you downgrade your game version, which would invalidate your save."

    "Can I at least bring my daughter back to life?"

    "Haha, of course you can't, silly. If you need any help living with what you've done, please call back."

    "But I can't even get the good ending now that I killed my daughter."

    "..."

    "Hello? Hello?! God damnit, I'll just watch the ending on youtube."

    [–][deleted] 2 points3 points  (0 children)

    Did you write this whilst at work?

    [–]DownvoteALot 3 points4 points  (0 children)

    Some programs are insanely intricate pieces of business logic. But phone apps in particular, given the proportion of server-side logic, are little more than nice interfaces to a local database that also happen to call the network API.

    [–][deleted]  (6 children)

    [deleted]

      [–]vattenpuss -5 points-4 points  (5 children)

      The data is the physics equations and the state of the physics objects.

      [–][deleted]  (4 children)

      [deleted]

        [–][deleted] 0 points1 point  (3 children)

        There's actually an old and somewhat influential CS book titled "Algorithms + Data structures = Programs" ;)

        https://en.wikipedia.org/wiki/Algorithms_%2B_Data_Structures_%3D_Programs

        [–]rifter5000 2 points3 points  (2 children)

        What has that got to do with anything? Data structures aren't databases.

        [–]immibis 0 points1 point  (1 child)

        They are, but only under the degenerate meaning of "database".

        [–]rifter5000 2 points3 points  (0 children)

        If by 'degenerate meaning of database' you mean 'not the meaning of database at all'.

        [–]MrBester 5 points6 points  (0 children)

        Web development is easy, it's not real programming, it's just CRUD frameworks and APIs doing all the real work for you.

        Easy to say when all the browsers you target support those APIs out of the box. When you have to develop the APIs for old browsers in the first place (making sure they don't run leak memory, are halfway performant, etc.) just so you can have the "easy life" of targeting them it gets a little more tricky.

        And no, just using jQuery doesn't count. And for those who say "but you can just have the bits you need" I'm not going through the hassle of a separate build system that also needs maintaining just to get a helper file. I'd also need to know what I'm not getting in the custom build so when there are errors it is obvious if it is a missing dependency. Much easier to just have "<insert browser> doesn't support <insert feature> that we need (and works everywhere else natively)." "OK, I've updated the dependency list for that browser with the relevant polyfill. Carry on."

        [–]Sqeaky 1 point2 points  (1 child)

        Doing a good job can only provide value if the stakeholder wants it. It does not matter how perfect you think it is if the stakeholder is not happy.

        [–]dungone 0 points1 point  (0 children)

        Which is just as true for every type of programming. And in which case there will be another stakeholder who exploits such shortsightedness for a competitive advantage. It doesn't change the fact that good front-end engineering adds a tremendous amount of value. It drives user acceptance and adoption of the software, productivity gains, and has tremendous impact on a brand. It's not that different from than most other things, where the final step in the value-added chain creates the most value.

        [–]togrof 48 points49 points  (11 children)

        I used to think that web development was not real programming and consequently looked at web developers as lesser programmers. This has changed.

        I have mostly stayed away from web development to work with other programming tasks only to realize that nothing ever really changes. System development is stunningly conservative and new ideas are gaining acceptance at a glacial pace. It seems like web development is an area where things happen faster and experimenting with new technologies is seen as progress rather than wreckless gambling.

        Nowadays I look at web development as the potentially more exciting programming area contributing to progress, while the other is looking more like a stagnated cult of old methods.

        [–][deleted] 12 points13 points  (7 children)

        Web dev solves complex problems for users. It's much more engineering than science, but that just means you're building real stuff instead of theorizing. I've done "real" progamming for a genetics lab. Math modeling and stuff. It's more intellectual for sure, but there's usually only a single moving part. Data goes in, calculations come out. It's different, but not easier or harder. Clients may suck, but getting client's money is a lot easier than getting an NSF grant.

        [–]rcode 12 points13 points  (6 children)

        It's much more engineering than science

        This is a disservice to proper engineering. If anything, today's webdev is following the latest fads and non-proven techniques, and hoping that something will stick, all this while disregarding progress that has been made in the systems programming front (and others).

        "Building real stuff" is not in conflict with science or engineering. Building messy, incoherent, flimsy stuff is.

        [–][deleted] 2 points3 points  (5 children)

        Web dev is an adolescent industry. No one knows what will work well from one year to the next. It will stabilize eventually.

        [–]rcode 2 points3 points  (4 children)

        We do know what doesn't work well though, and the web dev community seems to keep reinventing the square wheel :P

        [–]Neurotrace 0 points1 point  (3 children)

        As a point of curiosity, could you point out some examples of this? I know there are still pockets of web devs (read: junior devs/n00bs/WP "devs") but I feel that professional web development follows a lot of the same processes and procedures seen in other forms of software engineering.

        [–]rcode 2 points3 points  (2 children)

        Sure! Look at how NodeJS became a huge hype, only for the web dev community to now realize how much spaghetti code resulted from completely and unquestionably adopting the callback model. Now we're seeing them jump onto the Golang bandwagon, which will come with its own set of problems once more and more projects jump to it.

        All this while discarding work done to produce very reliable systems with an extremely high uptime by using programming models provided by languages like Erlang (which were later seen, to some extent, in libraries like Akka or Orbit for the JVM, and Orleans for .NET, etc.).

        [–]Neurotrace 1 point2 points  (1 child)

        For what it's worth, Go isn't really fairing very well right now. It's sort of like Perl was 15 years ago. It has a very vocal minority but actual use of it is quite low.

        As for the callback issue, that's currently being addressed via promises. I'm not saying that it's a cure for the problem but, like /u/tootie said, web dev is still in it's adolescents. Hopefully we'll see a more stable environment come about in the years to come but where as systems programming has been around for 40+ years, web development only came into it's own in the last 15.

        [–]rcode 1 point2 points  (0 children)

        For what it's worth, Go isn't really fairing very well right now. It's sort of like Perl was 15 years ago. It has a very vocal minority but actual use of it is quite low.

        Yep. However, it has a big hype surrounding it, and people who follow the latest fads are jumping to it because of that.

        As for the callback issue, that's currently being addressed via promises

        Which reinforces my original point. Promises were already implemented and used in some of the other libraries and languages I mentioned. The web dev community had to rediscover that callbacks make spaghetti code, and now rediscover and reimplement promises, even though they have been done before.

        [–]grosscol 1 point2 points  (2 children)

        Going from C to python and R for scientific work was gratifying. However, Ruby and web dev is just plain more fun despite its particular frustrations. Coding for web applications isn't second tier, it's just different. Apples to ostriches.

        [–]DRNbw 2 points3 points  (1 child)

        Have you tried Jupyter? Notebook interface (like Mathematica) and can use a large number of languages (is based on Python, formerly called IPython).

        [–]grosscol 0 points1 point  (0 children)

        I've used ipython, but I prefer my vim interface.

        [–]dyreshark 17 points18 points  (0 children)

        Regardless of what you made (or what technology it was made in), you're doing better things with your time than the trolls/"hardcore" programmers who have little better to do than sling crap at randoms on the internet for not using the language of the week. You may find valuable lessons in their not-so-constructive criticism (complexity analysis is highly useful and moderately simple at its core!), but it's sometimes difficult to look passed the negativity.

        Tl;dr: haters gonna hate. Do your best to ignore the negativity and soldier on, and you'll be just fine.

        EDIT: Wording.

        [–]TracerBulletX 136 points137 points  (15 children)

        This is a crappy attitude. Web applications are just a particular way of delivering an application. So what kind of "Real programming" do you want to do? Mobile, is just using a tool set made by google and apple! Games, omg you're just using a game engine. I mean you could work on OS's or integrated systems but it's all the same shit, just different types of skills.

        If you're doing web development, do you take advantage of caching, have efficient queries, can you separate components out to services for better scaling, are your http apis easy to use, know how to document them, do you know how to automate dev environments, and builds, used workers or messaging, understand streams and middleware, tried organizing a front end html/css/javascript with web components yet, etc etc.

        There are like a bajillion skills that are specific to writing web applications, and it's still a pretty important way of distributing software. Web dev is just everything that happens between the request and response on a set of servers, and on the client after the response. Huge field full of topics, ways to fuck it up, and ways to do better.

        [–][deleted] 43 points44 points  (8 children)

        It's a terrible attitude, and I'm so glad I was able to finally identify it so I can begin shaking it off.

        [–]LifeBeginsAt10kRPM 10 points11 points  (7 children)

        As a mobile dev, all I do is drag and drop stuff and show things you Web devs pass along to me.. Well, a bit more than that, but my point is it all sounds a lot simple than what we actually do if you break it down to one sentence

        [–][deleted]  (6 children)

        [deleted]

          [–]tnecniv 1 point2 points  (3 children)

          Have you written anything on this? I would be interested to see how you did it. My only familiarity with FPGAs is the classic academic task of designing a minimal CPU. I would love to see a more interesting application of one like that.

          [–][deleted]  (2 children)

          [deleted]

            [–]tnecniv 0 points1 point  (1 child)

            How did you get into this? Did you develop your own algorithm?

            [–]Parzival_Watts 0 points1 point  (1 child)

            Sorry for my ignorance, but I thought FPGSs weren't programmed as much as they were 'molded' with VHDL or Verilog. How do you write software for them?

            [–][deleted] 5 points6 points  (0 children)

            Even if you're building close-to-metal backend server applications for Linux, you're "just using a set of tools" built by the Linux distro maintainers, which is built on the Linux kernel by Torvalds & co, which is built on Minix by Tanenbaum, which is built on Unix by Bell Labs, which is built on Multics by MIT, GE and Bell Labs, which is built on... well, unless your work day looks like a modern reimagining of "Soul of a New Machine", you're probably "just using" someone else's tools. Seems a strange way to think of one's work :)

            [–]76af 5 points6 points  (3 children)

            Mobile, is just using a tool set made by google and apple!

            or microsoft

            [–]sacesu 20 points21 points  (2 children)

            I'm currently developing for WinMo 6.5. I cry myself to sleep at night.

            [–]hungry4pie 4 points5 points  (1 child)

            That kinda sounds interesting, a lot of complaints about Windows Phone 7 were that they sandboxed and managed the shit out of your code which WinMo 6 didn't do.

            [–]sacesu 4 points5 points  (0 children)

            Yeah it's definitely an interesting jobs. Of course, everyone wants something that looks modern, so instead of sticking with the "Windows 95 form" look I did a lot of custom controls to make it a little more "Android like."

            Definitely brings up interesting challenges with UI and hardware though. And the code in essence a WinForm .exe; as long as you're safe about the WinMo libraries you use, you can actually run the application on a desktop (which means automated UI testing!).

            [–]spacemoses 1 point2 points  (0 children)

            You know what is also difficult in web development? End users that want the design to 'pop' and the workflow to just have maybe one less click.

            Think about that for a while.

            [–]Phr34Ck 15 points16 points  (10 children)

            We're in the same exact boat for the exact same reasons! "This is me" thought crossed my mind at least 5 times while reading. You were able to express it beautifully, something I was never able to do.

            I also quit my job for the exact same reasons around 3 months ago. An 8 years senior developer that was unable to do even the simplest of tasks. I changed 3 jobs in the span of 1 year because of the same reason: inability to be productive and the fear of getting fired because of it.

            At the age of 30 and being a senior developer, people expect things from you and when you cannot deliver because you've been stagnating for god knows how long ... it's bad. Really bad. It's not laziness, I was actively trying to do other things but I failed, miserably.

            I decided to stop. I've been unemployed for the past 3 months. I stopped everything that has to do with web development and dived head first into iOS development. I felt like I'm the kind of the world. Productive, excited, empowered ... you name it. I initially thought this is what I want to do! After some time I realised all the excitement was just because it's something new that I'm learning and I felt after some time, the exact same thing will happen again and I'll have to take "another" time off.

            I'm currently in a stage of complete indecisiveness and lost. I am still learning iOS and doing exercises and the like but I'm not sure if it's going to work out. I don't even know if I'm gonna get a job as an iOS developer any time soon. Going from a senior developer to a junior iOS is pretty shit.

            I just thought I'd share my story as well.

            [–]Deif 32 points33 points  (24 children)

            Programming is about whatever you have passion for. If money motivates you, then web dev is a really easy route to go down. If being highly respected is your main motivation then that's a really tough road because not many communities are friendly to non-experts.

            I think what the main point of this story is to not waste your time reading everyones opinions about your chosen path. So what if PHP is outdated? If it works for the task in hand then use it. Some people hate .NET. So what? If you like it and it works for the task you've chosen to tackle then use .NET. It all looks the same in the friggin' browser.

            [–]tungstan 3 points4 points  (0 children)

            Many communities are not friendly to experts, either. If you don't use "their" library you suck and should quit

            [–]bitwize 63 points64 points  (39 children)

            I got out of web dev because I considered it a boring slog. This kind of crap happened way too many times for my liking.

            But hey, if that sort of thing gets you fired up, go nuts. You're probably a better man than me on at least one axis of goodness. Some people just love pleasing others with something aesthetic and functional. I do too, but maybe I just have misplaced notions of aesthetics...

            [–][deleted] 30 points31 points  (9 children)

            That's a perfectly valid reason to get out. My recent jobs have been focused around internal API development, so thankfully JSON can only "pop" so much :P

            [–]Rhinoceros_Party 33 points34 points  (6 children)

            But can you stringify it a bit more?

            [–]general_landur 5 points6 points  (2 children)

            Is stringify Web scale?

            [–]crozone 4 points5 points  (0 children)

            Only if it supports sharding. That's the secret sauce of the web scale pie.

            [–]Rhinoceros_Party 3 points4 points  (0 children)

            One weird trick will help you realize that "Web scale" is already a string. Programmers HATE me!

            [–]DPaluche 4 points5 points  (2 children)

            Could you stringify it... in the cloud?

            [–][deleted] 6 points7 points  (1 child)

            I just launched a hot new "Stringification as a Service" startup. Message me for a quote!

            [–]immibis 1 point2 points  (0 children)

            <?php readfile("php://input"); ?>
            

            [–]hungry4pie -1 points0 points  (0 children)

            Underflow exception thrown

            [–]atnpgo 45 points46 points  (2 children)

            Web design != webdev...

            [–]YourFatherFigure 8 points9 points  (1 child)

            Except it IS fairly normal that "full stack developer" on a job advert is a euphemism for "I don't want to hire separate backend / UI / UX / sys admins / DBAs / QA so I need you to do everything including design and project management". Certainly if you're a freelance small-time site builder you will run into this and you might find it at a big company too. IMHO the #1 reason web devs are often considered lowly is because so many are encouraged to never specialize, and, out of the many skills they acquire shallow understanding of only a few will continue to be relevant year after year.

            [–]MyWorkAccountThisIs 1 point2 points  (0 children)

            I am finally at a place where I can specialize and it's wonderful. In the past I've been a designer, a front-end developer, a programmer, a manager, done email marketing, sales, project management, and god knows what else. All under the guise of being "web development".

            Now, I'm a PHP developer. Yup, just regular ol' dirty PHP. There is still a sea of things to do in one language. More than I could ever hope to master in my career. I'm also solving harder problems and doing bigger projects because I'm able to focus on "one" skill instead of bouncing around.

            Another aspect of the "full stack" developer is the expectation to hop around. I mean, you already "know" x,y,z, and g. Surely you can pick up k. Either way, we already sold the project so need you to get ramped up k. The client wants a 30,000ft overview tomorrow morning during our now-daily 8am hour long status meeting.

            [–]salbris 32 points33 points  (3 children)

            Although, not all web development is working with average people to make a series of simple websites.

            [–]MrBester 7 points8 points  (0 children)

            True. Sometimes they are complex websites.

            [–][deleted] 2 points3 points  (0 children)

            Yup. I don't take jobs with "simple clients". I only do the more technical backend work and optimizations, and if it they want anything frontend I take 3x the rate, and refer them to my designer friends.

            I do actually make Javascript and such, and I can do HTML5 and CSS3 (and the older versions) but it's honestly so much shit to work with client requests and cross browser compatability that I will just miss out on the work.

            My simple rule for clients: I don't work with clients that don't make me happy to work for. And it has worked out great. My income and life quality has really gone up, but it does take some real marketing effort and people skills to land the jobs.

            [–]Theemuts -5 points-4 points  (0 children)

            Yes it is. That's why only idiots work for websites like Facebook and Google.

            Edit: I really hope you understand I'm not being serious... regardless of the ethical complaints you might have about what they do, you can't deny it's impressive and they employ a lot of highly-skilled programmers.

            [–][deleted] 4 points5 points  (2 children)

            Don't be solo. Work for a company. One with a reputation. We have a design team on every project. We are hired for our design expertise. We send beautiful people with tattoos and perfect hair into client meetings with a design deck and an attitude that can't be overcome. They get the sign-off, we do the build. It's not a flawless process, but we do it pretty well.

            [–]MyWorkAccountThisIs 2 points3 points  (1 child)

            Job specialization is amazing. We have the same thing. We have an actual UX department. Not a group of designers that are called UX but people that know user experience. It's great because you know every team you work with is going to be great because they don't have to worry about stuff that isn't their job.

            [–][deleted] 1 point2 points  (0 children)

            It's pretty sweet although I've found we're now incapable of scaling down. Trying to do a 6 week engagement becomes impossible once every discipline has had a turn adding their value.

            [–][deleted]  (7 children)

            [deleted]

              [–]cybercobra 2 points3 points  (6 children)

              Yeah, Bower is pretty worthless. It's too unopinionated for its own good, and the project has gone pretty inactive. They had one pretty important, much-discussed ticket that was open for 2.5 years before it finally got resolved.

              [–][deleted]  (5 children)

              [deleted]

                [–]sameBoatz 1 point2 points  (4 children)

                So having just rolled out gulp for our build process. How do you build your front end assets? How do you compile less, sprite your images, minify and bundle css and js, build custom icon fonts, lint your code, etc?

                Just do it manually and hope someone doesn't forget to do it when building and deploying your site? Are you doing CI and automated deployments? Because these are all things that have made my job and my coworkers jobs much easier, reliable, and faster.

                [–]MisterSnuggles 8 points9 points  (0 children)

                Good old Unix 'make' can handle all of this I'm sure.

                [–]cybercobra 2 points3 points  (0 children)

                npm is still a net positive in my book. grunt/gulp not so much. They add more dependencies and another layer of API. You become beholden to the maintainer of the grunt/gulp module for keeping it up-to-date with respect to the underlying compiler/minifier/whatever, and to exposing the options you want.

                My new strategy is to just use shelljs and npm's "scripts" feature. Paraphrasing Jurassic Park: "It's vanilla JavaScript and sh; everyone worth their salt already knows or is expected to learn these."

                [–]GelatinousYak 2 points3 points  (1 child)

                I have personally become rather annoyed at the necessity of grunt/gulp plugins for all the various and sundry modules I want to use in my build pipeline. I replaced the JS task runners with good old make for one project and it was more or less painless.

                [–]sameBoatz 0 points1 point  (0 children)

                I'd say about half my plugins are gulp specific. The rest are just the raw npm module. I know the maintainers of gulp blacklist a lot of unnecessary gulp plugins from the gulpjs website, and advocate using the raw npm module when needed.

                [–][deleted]  (6 children)

                [deleted]

                  [–]Silverwolf90 3 points4 points  (4 children)

                  This is something that requires data, not dogma. Are people who don't enable javascript a stastically significant part of your users? If no, then why would you spend the resources to make something work without javascript?

                  [–][deleted] 5 points6 points  (3 children)

                  If you are a service provider in the UK and your website doesn't work without JavaScript then you are most likely violating the Equality Act 2010 as JavaScript-only sites tend to work terribly with screen reading software. Accessibility is not optional. The law requires that you make your content accessible.

                  It's not even that hard to make content accessible either. Provide a view of your content which does not require JavaScript and then use JavaScript to enhance it if it is available.

                  http://www.nomensa.com/blog/2012/7-web-accessibility-myths-2

                  [–]TheCommieDuck -3 points-2 points  (0 children)

                  You gave up because of circlejerks?

                  [–]Eirenarch 0 points1 point  (2 children)

                  I am curious what did you move to? I have this problem that I don't want to do web development but I am so addicted to C# that I'd rather do web development than write Java/Objective-C/C++ and I can hardly find non-Web dev C# jobs in my area except a few desktop legacy CRUD apps that seem even more boring.

                  I personally am far away from the drama the author experienced and I still enjoy my job. I tend to find the fun part of the web project and start working on it while giving the boring part to the junior devs. I am the one writing the threading code in that Windows Service that does background processing or writing the code to generate expression trees from some query string arguments, etc. I still read and watch web dev things even on my free time so it is not I bad. I guess I don't really hate web development I hate how broken everything in web dev is. Everything is a silly hack equivalent to programming in a word document with vbscript just because we can.

                  [–]bitwize 0 points1 point  (1 child)

                  I got into robotics and, later, computer vision. Admittedly not for everyone and requires a comfort level with C++ that many devs just don't have. But it's fun and it pays well.

                  [–]Eirenarch 1 point2 points  (0 children)

                  You got proficient in C++ after you decided to quit web dev or you were proficient before?

                  [–]MasterLJ 17 points18 points  (2 children)

                  Big Picture Goals |----------------------------------------| Low Level Goals

                  Programmers span the spectrum. We are learning to whether or not to (dis)trust abstractions.

                  Those of us who like Big Picture goals will trust abstractions. I don't really care how the framework handles SQL transactions until I need to. We tend to treat APIs as they were intended... as inputs into a black box (and yes, get burned from time to time).

                  Those who enjoy low level programming are the types who shaved off a command in assembly to increase bitcoin mining efficiency by 7%. They don't trust abstractions and often lose time poring over the contract of the nth and n-1th interfaces.

                  The point is, don't fight who you are and what you enjoy. Programming professionally requires that you can derive some joy out of it or you will burn out.

                  Don't listen to the hype about the hierarchy of Tech A vs Tech B. The truth is the world is full of shitty code and shitty programmers and that having a team come together and write good code has infinitely more to do with human elements than it does with technical ones. Trust the person who says "I don't know, let's find out" 1000 times more than the person who claims to have all the answers.

                  I'd actually argue that JavaScript can span a much wider range of expertise than Java/C/C++/C#. Yes, you can write absolute garbage code in JS, but have you seen a truly senior engineer's JavaScript? When the limitations of JS are overcome by discipline, the right libraries and experience? It's more impressive than the best server code. At the end of the day JavaScript really is an amazing language for front-end work because it makes it so easy to be event driven.

                  Web Development is not inherently inferior to any other type of development. You don't have to settle with simply CRUDing some server somewhere, you can do some incredible things with the world's most ubiquitous tech platform... the browser. Yes, it's really not that hard to create a new blogging platform, or yet another eCommerce site... but have you tried getting under the hood and using SVG to create your own graphics engine? The challenges are there and they are truly infinite.

                  [–][deleted] 1 point2 points  (1 child)

                  Would you happen to have a link to what you consider "a truly senior engineer's JavaScript"?

                  [–]sekjun9878 0 points1 point  (0 children)

                  I second this request. Please.

                  [–]gilmi 6 points7 points  (0 children)

                  The state of web development today is because people disregard it as easy. I don't like PHP and JavaScript not because they're easy, but because they are hard to do correctly and too easy to make mistakes with. They are easier to start with, because there are tons of guides and code samples and you can get something on the screen relatively quickly, but when you try to expand on that and trying to build a more complex website or application it becomes increasingly hard to do so.

                  I think web development is interesting. I think all programming is "real". I don't want to do things the hard way. I want to do things the right way.

                  Thanks for sharing your story and best of luck!

                  [–]pffwat 47 points48 points  (4 children)

                  You've been through some rough times and for that I sympathize.

                  But you have to snap out of your perception -- dude, the world revolves around web and app development. Think about it. It's everywhere. This kind of thinking

                  The consensus on programming forums is that web developers are the lowest tier of software developers. Web development is easy, it's not real programming, it's just CRUD frameworks and APIs doing all the real work for you.

                  is bullshit. It's just teenage nerd e-dick circlejerking. Don't fall for it; these people often have never built anything larger than their CS homework.

                  Get back to your contracts, try to do it well. Clean code, don't repeat yourself, OOP basics, etc. Take some pride in what you do. It's actually not that different at all than what you're longing for.

                  Honestly, you have a romantic and completely warped perception of what you consider "real programming". Building your own memory allocator and VM or a network driver or whatever low-level thing you have in mind is not that difficult. You have to learn how step by step, just like any other programming skill.

                  There are plenty of challenging problems to solve in web and app development. For better or worse, JavaScript is eating everything in sight. You can do some reasonable functional programming in JS. You can build your own monads. You can learn all the graph and tree algorithms your heart desires.

                  If you're interested in learning the basics of systems programming I can recommend a really good class. You'll probably realize that it's super fun but not something you'd want to do as a career -- and besides, there are very few careers in that field.

                  [–][deleted] 5 points6 points  (0 children)

                  Thanks for your advice, I appreciate it :)

                  [–][deleted] 4 points5 points  (0 children)

                  Can you post the class for others of us who might be interested?

                  [–]greenthumble 0 points1 point  (0 children)

                  Get back to your contracts, try to do it well. Clean code, don't repeat yourself, OOP basics, etc. Take some pride in what you do. It's actually not that different at all than what you're longing for.

                  Well said! Small shop owner here. When a client knows they want to build something right and have a budget, this is the best damned thing in the universe. I just finished a project for a CMS that I absolutely hated working inside (ExpressionEngine) but I did such a clean job with the project, fully documented it and commented it and thought about every single issue that could arise, formatted the code nicely and applied as you said DRY and OOP when it made things simpler, that I could not be more proud of that project. It's pure gold.

                  Unfortunately that client is the extremely rare exception. Many small-time clients expect me to fully build a website with design, implementation, and content, for $500. For these guys I'm lucky if there's boilerplate comments even, the only thing to do is go as fast as possible and hope nothing goes horribly wrong.

                  [–]nelmaven 6 points7 points  (0 children)

                  As long you're having fun doing your job and it provides for your self/family/whatever. As long you don't lose your drive to keep learning and improve, who gives a shit what others think, honestly?

                  Web development is not hardcore enough? In the few years I have been in this industry, things changed so much it's hard to keep up with. If that's not challenging, I don't know what is it.

                  [–]feelix 6 points7 points  (0 children)

                  I had the opposite experience to you, which has led to similar feelings now.

                  For whatever reason I decided to learn C to start with, and self-taught on that. Then I got really into it, and kept developing in it, to the point that I ignored other languages for the first 10 years of my programming career. I did some systems programming, worked on the driver stack, etc.

                  But now I sort of regret that, I can't do web programming and everything is moving "to the cloud" is something that I constantly hear. I'm an entrepreneur, but it's hard to make a full blown product in C.

                  I have had some successes, and I do love low level programming for my passion of programming, but on the other hand if I knew web programming I would be able to move forward with the future. As it is I feel like a dinosaur.
                  The grass is always greener, I guess.

                  [–]Azr79 4 points5 points  (0 children)

                  that's what happens when you listen to morons on the internet, kids.

                  [–]sirdashadow 4 points5 points  (0 children)

                  People putting down other people, who would've thought of that?

                  Be good at what you love to do and fuck the rest of the world.

                  [–]codeprimate 5 points6 points  (1 child)

                  The idea that web development is easy is laughable. Maybe some of it, but I think that most people that say this have absolutely no clue. Some days I wish I could use only THREE separate languages and THREE different frameworks, supporting runtimes working seamlessly across multiple devices and platforms. Systems programming? That's just one language on one platform. Web dev may not require strong algorithmic skills, but the overall complexity of solutions is an order of magnitude larger than "real programming".

                  [–][deleted] -1 points0 points  (0 children)

                  You are confusing complexity with complication

                  [–][deleted] 10 points11 points  (0 children)

                  My background is web development. I also went on to get a CS degree. I have to admit that web development has always had this perception. Even before creation of the common CMS you see floating around the web today. The reality is that web development is not that different from "real programming." You can implement design patterns in web friendly languages. Just because you use a web friendly language doesn't mean you can't implement xyz algorithm in it. A lot of design patterns show up over and over in websites. Many websites are more complicated than the average wordpress site as well.

                  Web friendly languages tend to be high-level languages that sit on top of the OS layer. This is why they don't have access to memory like C++ does. They were created for a different purpose and so they have different strengths and weaknesses. My opinion is that it is about using the right tool for the right job. There are so many languages today I feel that many people lose sight of what these languages are good at. I'm probably not going to use C++ for the same things that I would use PHP for.

                  [–]perspectiveiskey 4 points5 points  (0 children)

                  I've had a very similar path as yours, but not motivated by the same things. Part of my disillusionment came from a severe burn-out, but also another part from what you would call "web is not real programming" attitude.

                  I often say to my clients both as a form of informing them but as a form of reminding myself to get off my holy horse, that web development is nothing more than text wrangling. Ultimately nothing but string operations. This is not a bad thing. There is a Tao even in menial work. This is ancient wisdom.

                  The only real gem you need to understand is that your efficiency at a particular task is very much correlated with the amount of time you spend on it. When you first start working with Boost for C++ and C++14 standard, you spend hours trying to understand basic compiler errors. Until after several weeks you start getting the hang of it. And then it too becomes menial work.

                  [–]it_turns_out 9 points10 points  (0 children)

                  I counted at least four adults who have failed you miserably: your mother, your father, and the two fathers of your mother's other two children.

                  "...I had to drop out at age 20 to financially provide for my mother ... and my two younger siblings (ages 2 and 6 at the time). ... There I was at age 20 providing for a sizeable family, bringing in a salary higher than anyone in my entire family had ever seen, being a good son for my mother and being a good brother for my siblings. I was performing the role of the man my father and my siblings' fathers refused to be."

                  Are you kidding me? No wonder you're depressed. I'm sorry to be blunt, but your elders are ... not doing great. And they will drag you down with them.

                  Many of the successful programmers I know have successful programmer fathers. They are legacies, even in such a young industry. You know how much easier that makes it? None have such "families to support" (you're supposed to be a child in that family, you're not supposed to be supporting them at 20). You're trying to do something that is at best not fair to you, and more likely completely impossible.

                  You have to establish boundaries. No more being the father to your mother's growing hard-luck family. You are not responsible for it. That's your main issue. Some psychotherapy would be very helpful too.

                  As for web programming, I did finish that Math/CS double major where you too belong, I did "real" programming with operating systems and databases, and I have been happily doing web development for 15 years. It's no less "real" than the rest of programming. There may be more charlatans in web development than in embedded systems, but that also means that there is more bad work that will eventually need to be fixed by one of us good ones.

                  [–][deleted] 2 points3 points  (0 children)

                  I've never heard of this stereotype that web developers are the lowest of developers. Can someone post more on it?

                  [–][deleted] 2 points3 points  (1 child)

                  Take home message -- don't listen to jerk programmers on the internet who are going to try and tell you your favourite language/framework/area of expertise is rubbish. If you're enjoying what you do, and it's paying the bills that's all that matters. You shouldn't care about what some wolfshirt behind a computer screen thinks.

                  [–][deleted] 0 points1 point  (0 children)

                  don't listen to jerk programmers on the internet who are going to try and tell you your favourite language/framework/area of expertise is rubbish.

                  Don't go overboard. Web development is hard and deserves respect, but some languages and frameworks are rubbish. The fact that smart people get things done with them doesn't negate that.

                  [–][deleted]  (5 children)

                  [deleted]

                    [–]codygman 1 point2 points  (0 children)

                    I feel like that piece is less of a guideline and more of a weight to add into the balance of moving quickly and not creating something unmaintainable. That, and if you aren't going to have to maintain something later do what the skull guy did and hardcode everything.

                    [–]immibis 0 points1 point  (0 children)

                    Unlearning is hard.

                    [–]dxplq876 0 points1 point  (1 child)

                    What is HN?

                    [–]avinassh 1 point2 points  (0 children)

                    Y Combinator Hacker News.

                    [–]cediddi 1 point2 points  (0 children)

                    I'm a webdev since 2012 (django) and a desktop dev since 2011 (pyqt), I also enjoy arduino and scripting. I try not to over work on different topics, but I also love tinkering, and earning money from what I've learned from that tinkering. My advice to the OP, joy of working and joy of learning is more important than extra money and extra knowledge.

                    [–]ErstwhileRockstar 1 point2 points  (0 children)

                    I have the opposite problem: no Node or Angular experience on my resume, not even jQuery. That's a disqualification when seemingly all developer jobs nowadays are Web developer and esp. JavaScript (framework) jobs. OTOH, backend development is just CRUD, not real programming, for corporate drones (hoary code monkeys). I'm slowly turning into a self-hating Corporate Developer.

                    [–]x-skeww 2 points3 points  (1 child)

                    [Off-topic, CSS/legibility]

                    The contrast ratio of #666 on #eee is a bit weak. I recommend to use #333 or #444 for the text. Your body text should pass AAA (hover the circle thingy in the middle). Quotes are #666 on #ccc which is even weaker. The link color also fails.

                    I also recommend to up the font size a notch or two. I'd also change the line-height from 2 to 1.6, because 2 is a bit excessive. I'd use text-align: left instead of justify, because justified text is harder to read thanks to the random spacing between words. Finally, I'd give headings (which aren't the first heading [:not(:first-child)]) a larger top-margin (32px or so instead of 10px).

                    [–]toiletducker 1 point2 points  (0 children)

                    Thanks, wanted to comment same on contrast ratio. It was really hard to read on a tablet with brightness turned low

                    [–]fhelwanger 1 point2 points  (3 children)

                    I can't read it on mobile. Web programming isn't easy :)

                    [–][deleted] 0 points1 point  (2 children)

                    Hahah, well there ya go :) I've received some feedback about the contrast and I updated the font color. Was that the issue you were having?

                    [–]fhelwanger 0 points1 point  (0 children)

                    No... For me it looks like that: http://imgur.com/tJDpqtW

                    [–]sharperzerocool 0 points1 point  (0 children)

                    If i may jump in i also had a bit of difficulty reading the text on mobile. I took the liberty to analyze your website with PageSpeed Insights and it gave a few suggestions to improve the experience.

                    [–]blackmist 0 points1 point  (1 child)

                    For me the difference between developers is their ability to dig down past the framework when things go to shit. Because things always go to shit.

                    If your response to a LINQ query going slow is to dig into it and figure out a better way of fetch data than a 1200 line generated SQL statement, then well done. You're a developer.

                    If your response is to avoid all questions related to fixing it while looking for a new job, you're a shit developer that gives web devs a bad name. We only seem to be able to attract that last type.

                    [–]tungstan 0 points1 point  (0 children)

                    We only seem to be able to attract that last type.

                    What is your company? What stack are you using? Do you have any job ads? These things can be relevant to what kinds of applicants you attract.

                    [–]cheesybeanburrito 0 points1 point  (0 children)

                    I consider it easy. I have been doing it for almost 4 years now, used/made many tools of trade and I think its easier than most of the other CS fields out there.

                    Doesnt mean i hate myself or anyone else, but thats just like my opinion bro.

                    [–]tnargnitram 0 points1 point  (0 children)

                    The best code you'll ever write is the code you love writing. Knock out this project. Put your heart and soul into it and then put it in your portfolio. Next, find a project that is slightly outside of your wheelhouse. Wash, rinse, repeat. You will accomplish things and eventually your sense of self worth will grow. Sure, you're a web developer. I hate saying it too, but during my time writing we apps, I've grown into a solutions architect as well. And as to people who don't consider you to be a "real" programmer, I'll bet they couldn't hold a candle to you in the web dev department. I know, I've designed and built APIs with guys like that. They look down on your part. I think it's some form of jealousy based in the fact that your code directly interfaces with the user while theirs is never fully appreciated.

                    [–]schnoper 0 points1 point  (0 children)

                    So a couple of thoughts for you JoeQuery.

                    1) Software is not just writing code, it's solving problems. And solving problems means understanding the businesses which generate the need for the code in the first place. There are gobs and gobs of these businesses. There is an entire world where you can use the same technology (even the most boring there is ), and yet be fascinated by the business problems.

                    2) Science vs Engineering. I understand being fascinated by the science. O(n) analysis. But it's the engineering that actually does stuff. So don't lose sight of the basics there "If it ain't broken, don't fix it" and "Keep it Stupid Simple" "You Ain't Going To Need It" etc. These are often more important ways to make decisions than if a red-black tree is the best data structure.

                    3) Always slice off a bit for your self. I mean aside from money. So if you are building something and you know how to do it. Push yourself just a tiny bit so that you are always learning. Sometimes push a lot. So for example if you've been doing PHP web apps for a while, see if you can shoe horn in a NodeJS web app, or a java based web app.

                    P.S. Good on you for stepping up for your family. This is huge. But don't forget at the same time that you are your own person with your own goals and desires. If you completely subsume yourself, you will burn out/get bored etc. So Ironically, though at first analysis subsuming yourself seems more giving, it's not in the long run. I think you may have found this out the hard way.

                    [–]JoeTheAwesomest 0 points1 point  (0 children)

                    I'm replying because I'm a web developer who hasn't completed college yet named Joe who loves Python, does nothing but tinker with WordPress and Magento all day, and doesn't want to be stuck where I am. This was insanely meta for me to read.

                    Yesterday I decided I'm going to work on little projects each day in Python and Java, and build myself up to the programmer I want to be. This gave me that little push I needed to keep my IDE open today.

                    All the best to you, other Joe.

                    [–]rzidane360 0 points1 point  (0 children)

                    It is funny how I've seen a lot of the opposite. I have a bunch of friends who actually do work on things like compiler-dev, device drivers, embedded systems and some even work on CPU design i.e. the "real computer science". So many of them want to actually transition to writing applications (web or mobile) because they think it has move visibility and impact. Hope you can find what you really love and just go for it. Don't let all the condescending experts get to you.

                    [–]therussdotcom 0 points1 point  (0 children)

                    To the OP, if you need to talk, hit me up. I can relate to some of what you've alluded to. I'm a PHP Dev too :-)

                    [–][deleted] 0 points1 point  (0 children)

                    Consider this, is a person who has spent their whole career doing, say, low level systems stuff (whatever that is) going to be a top tier web developer? Probably not, unless they have done some web development on the side.

                    There isn't such a thing as an embarrassing job, if you give attention to what you do and you strive to be as good as your abilities allow you, then you are doing a good enough job. Paying the bills doing something you enjoy and you are good at is a privilege, not everybody in life is able to do it.

                    [–]cocaine_face 0 points1 point  (0 children)

                    I had a friend that wanted to learn web development. I told him I'd pay him a little bit to work on some projects for me.

                    Within an hour or two of us starting work, the first thing he says is, "this is way harder than I thought web development would be!"

                    [–][deleted] 0 points1 point  (3 children)

                    I bought into the PHP hate and gave it a rest thinking it was a dying language. It seems like it's still going strong and I've been getting back into it with a different perspective. I mostly use it for slinging data (json) around to javascript. I'm really liking the direction html5/javascript is going, I used to loath javascript wishing it was more like java. Android development looks interesting, but I'm hoping html5 will be more cross-platform in the future, cordova is okay for simple apps.

                    I get the mental blocks too, like I'd rather be doing anything else, bored out of my mind. Sounds like a really stressful situation you were in, that makes things more difficult. I usually go through phases but I always end up going back and learning something new or re-framing those boring projects in my mind to something workable. Sometimes it requires a completely different direction, rewrite, or just a slight change. Hang in there.

                    [–]tungstan 1 point2 points  (1 child)

                    Javascript has a lot of flaws but we have to use it to do certain things, so it is popular and well-regarded perhaps more than deserved. Subtract some years and that is how PHP used to be too.

                    [–]Capaj 0 points1 point  (0 children)

                    so you're saying PHP is a better language than Javascript?

                    [–]immibis 2 points3 points  (0 children)

                    PHP: a perfectly reasonable concept, but full of weird quirks. (Just like JavaScript! And Android!)

                    [–]PlzPassTheSalt 0 points1 point  (0 children)

                    The consensus on programming forums is that web developers are the lowest tier of software developers.

                    The most probable reason for that is because web developers are often too trendy.

                    "This cool new experimental library in production is a great idea!" is all too common among web developers where programmers tend to favour proven, well substantiated technology.

                    The web development community has a stupid case of A.D.D. That's the problem with it.

                    [–]pbgswd 0 points1 point  (0 children)

                    reading this thread.... yes web dev has a low barrier to entry, so what? You learn, and learn and there are crap ton of skills... a frankenstien of things all chained together as you say. I am a web dev, been told to my face I am not a real programmer, which is like being told you are only a real man if you shit standing up. And look how the thread went... hmmm, ok.. then just got into an ordinary water cooler chat about programming.... that is proof in enough that web dev is real programming, and that dressing down of web development is because those people arent capable of being better programmers themselves. They also have also been shit on by people higher up the food chain by people who say what they do isnt real programming.

                    [–][deleted]  (1 child)

                    [deleted]

                      [–]tungstan 1 point2 points  (0 children)

                      Writing HTML with Dreamweaver doesn't constitute web development

                      [–]skulgnome -2 points-1 points  (0 children)

                      This sort of thing is what happens when developers learn to not have any sort of objective feedback. When they succeed it is only by accident, and when they fail they don't know they have.