Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. The Lounge
  3. Dumbing down code so it can be maintained by junior devs

Dumbing down code so it can be maintained by junior devs

Scheduled Pinned Locked Moved The Lounge
csharpjavascriptpythonlinqcom
107 Posts 50 Posters 1 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • M Marc Clifton

    Ever been asked to do this? I seem to be encountering this more and more -- the last company I worked for, I left because that was stated explicitly by the CTO as the new policy. What would you do if you were told to do that? And by dumbing down, I mean doing things like avoiding LINQ (except for basic things), metadata, reflection, extension methods, and any of the C# 7.0 language features. It seems that long gone are the days when companies actually invest in keeping developer skills up to par with the technologies the company uses. Or even more amusingly (not) keeping those technologies up to date.

    Latest Article - Building a Prototype Web-Based Diagramming Tool with SVG and Javascript Learning to code with python is like learning to swim with those little arm floaties. It gives you undeserved confidence and will eventually drown you. - DangerBunny Artificial intelligence is the only remedy for natural stupidity. - CDP1802

    Sander RosselS Offline
    Sander RosselS Offline
    Sander Rossel
    wrote on last edited by
    #17

    Been there, (haven't) done that :sigh: It's an upside down world really. I can't imagine this happening in any other field. Heck, most stuff wouldn't work at all if kids who just got out of school had to be able to understand it. Guy at NASA: Guys, guys, we've been doing things all wrong! Other guy: What do you mean? First guy: I just spoke to an intern and he doesn't really understand how rockets work... Third guy: So what do you suggest we do? First guy: Well...[^]

    Best, Sander Continuous Integration, Delivery, and Deployment arrgh.js - Bringing LINQ to JavaScript Object-Oriented Programming in C# Succinctly

    OriginalGriffO 1 Reply Last reply
    0
    • Sander RosselS Sander Rossel

      Been there, (haven't) done that :sigh: It's an upside down world really. I can't imagine this happening in any other field. Heck, most stuff wouldn't work at all if kids who just got out of school had to be able to understand it. Guy at NASA: Guys, guys, we've been doing things all wrong! Other guy: What do you mean? First guy: I just spoke to an intern and he doesn't really understand how rockets work... Third guy: So what do you suggest we do? First guy: Well...[^]

      Best, Sander Continuous Integration, Delivery, and Deployment arrgh.js - Bringing LINQ to JavaScript Object-Oriented Programming in C# Succinctly

      OriginalGriffO Offline
      OriginalGriffO Offline
      OriginalGriff
      wrote on last edited by
      #18

      Sander Rossel wrote:

      I can't imagine this happening in any other field.

      It's called "deskilling" and it's been happening for a long time: things are designed so idiots can maintain / fix them. Think of cars - how many mechanics can swap a bearing instead of a whole assembly? Or strip a brake caliper and replace the seals, rather than fit a new caliper? How many electronic repairs are done with a soldering iron, instead of a screwdriver and a new PCB? And it's been apparent that many of the new "developers" we get in QA believe in the "bolt on component" approach to coding ...

      Bad command or file name. Bad, bad command! Sit! Stay! Staaaay... AntiTwitter: @DalekDave is now a follower!

      "I have no idea what I did, but I'm taking full credit for it." - ThisOldTony
      "Common sense is so rare these days, it should be classified as a super power" - Random T-shirt

      Sander RosselS 1 Reply Last reply
      0
      • OriginalGriffO OriginalGriff

        Sander Rossel wrote:

        I can't imagine this happening in any other field.

        It's called "deskilling" and it's been happening for a long time: things are designed so idiots can maintain / fix them. Think of cars - how many mechanics can swap a bearing instead of a whole assembly? Or strip a brake caliper and replace the seals, rather than fit a new caliper? How many electronic repairs are done with a soldering iron, instead of a screwdriver and a new PCB? And it's been apparent that many of the new "developers" we get in QA believe in the "bolt on component" approach to coding ...

        Bad command or file name. Bad, bad command! Sit! Stay! Staaaay... AntiTwitter: @DalekDave is now a follower!

        Sander RosselS Offline
        Sander RosselS Offline
        Sander Rossel
        wrote on last edited by
        #19

        I'm not sure if it's exactly the same. I know nothing about cars, especially not in English, so I can't really follow you analogy :laugh: In software I'm also about "bolt on component" where possible. Things should be easy to use even though it was hard to write. In a car you'll need a combustion engine, but in software it's possible to go for a Flinstones approach (and somehow often done that way) because an engine is too difficult. However, when you have the engine some maintenance tasks are pretty easy, like changing oil or coolant. What my boss asked, and I'm guessing what Marc is talking about, we need the complex combustion engine, but it has to be maintained and understood at a deep level by the people who usually change a bolt. Since that's pretty much impossible you'll end up with a Flinstones car after all :)

        Best, Sander Continuous Integration, Delivery, and Deployment arrgh.js - Bringing LINQ to JavaScript Object-Oriented Programming in C# Succinctly

        1 Reply Last reply
        0
        • M Marc Clifton

          Ever been asked to do this? I seem to be encountering this more and more -- the last company I worked for, I left because that was stated explicitly by the CTO as the new policy. What would you do if you were told to do that? And by dumbing down, I mean doing things like avoiding LINQ (except for basic things), metadata, reflection, extension methods, and any of the C# 7.0 language features. It seems that long gone are the days when companies actually invest in keeping developer skills up to par with the technologies the company uses. Or even more amusingly (not) keeping those technologies up to date.

          Latest Article - Building a Prototype Web-Based Diagramming Tool with SVG and Javascript Learning to code with python is like learning to swim with those little arm floaties. It gives you undeserved confidence and will eventually drown you. - DangerBunny Artificial intelligence is the only remedy for natural stupidity. - CDP1802

          pkfoxP Offline
          pkfoxP Offline
          pkfox
          wrote on last edited by
          #20

          A line from "Real programmers don't use Pascal" - it was difficult to write, it should be difficult to understand ;)

          We can’t stop here, this is bat country - Hunter S Thompson RIP

          1 Reply Last reply
          0
          • M Marc Clifton

            Ever been asked to do this? I seem to be encountering this more and more -- the last company I worked for, I left because that was stated explicitly by the CTO as the new policy. What would you do if you were told to do that? And by dumbing down, I mean doing things like avoiding LINQ (except for basic things), metadata, reflection, extension methods, and any of the C# 7.0 language features. It seems that long gone are the days when companies actually invest in keeping developer skills up to par with the technologies the company uses. Or even more amusingly (not) keeping those technologies up to date.

            Latest Article - Building a Prototype Web-Based Diagramming Tool with SVG and Javascript Learning to code with python is like learning to swim with those little arm floaties. It gives you undeserved confidence and will eventually drown you. - DangerBunny Artificial intelligence is the only remedy for natural stupidity. - CDP1802

            P Offline
            P Offline
            PIEBALDconsult
            wrote on last edited by
            #21

            I thought the idea was to use only the newest features, because that's all the newbs know.

            1 Reply Last reply
            0
            • M Marc Clifton

              Ever been asked to do this? I seem to be encountering this more and more -- the last company I worked for, I left because that was stated explicitly by the CTO as the new policy. What would you do if you were told to do that? And by dumbing down, I mean doing things like avoiding LINQ (except for basic things), metadata, reflection, extension methods, and any of the C# 7.0 language features. It seems that long gone are the days when companies actually invest in keeping developer skills up to par with the technologies the company uses. Or even more amusingly (not) keeping those technologies up to date.

              Latest Article - Building a Prototype Web-Based Diagramming Tool with SVG and Javascript Learning to code with python is like learning to swim with those little arm floaties. It gives you undeserved confidence and will eventually drown you. - DangerBunny Artificial intelligence is the only remedy for natural stupidity. - CDP1802

              A Offline
              A Offline
              Ashman786
              wrote on last edited by
              #22

              I've been managing various dev teams (java, .net) for around 15 years now. I would have never asked my dev's to dumb code down but I would suggest that there have been occasions where devs would use a new tech or dev method not because it was needed or warranted but because it was an opportunity to learn something new. The cost of that is a general slowdown in the output of your team as the overhead of working out how the new stuff works start to impact timelines and commitments. If the new way genuinely is better then I think its an easy discussion because the cost/benefit argument should win. I encourage my devs to focus on that and we haven't really had this issue.

              J 1 Reply Last reply
              0
              • M Marc Clifton

                Ever been asked to do this? I seem to be encountering this more and more -- the last company I worked for, I left because that was stated explicitly by the CTO as the new policy. What would you do if you were told to do that? And by dumbing down, I mean doing things like avoiding LINQ (except for basic things), metadata, reflection, extension methods, and any of the C# 7.0 language features. It seems that long gone are the days when companies actually invest in keeping developer skills up to par with the technologies the company uses. Or even more amusingly (not) keeping those technologies up to date.

                Latest Article - Building a Prototype Web-Based Diagramming Tool with SVG and Javascript Learning to code with python is like learning to swim with those little arm floaties. It gives you undeserved confidence and will eventually drown you. - DangerBunny Artificial intelligence is the only remedy for natural stupidity. - CDP1802

                S Offline
                S Offline
                Super Lloyd
                wrote on last edited by
                #23

                Yeah.... I usually ignore those comment, while saying I will. Because this is what happens, say you use a very useful new syntax such as **await** SomeTask() . 1. it legit make the code more readable, less bug prone, more maintainable 2. some people are freaking out because they didn't keep up, and can't parse that syntax, hence find it "overtly clever" 3. time pass, they get over their initial shock, everybody does it by the time you force yourself to comply

                A new .NET Serializer All in one Menu-Ribbon Bar Taking over the world since 1371!

                1 Reply Last reply
                0
                • M Marc Clifton

                  Ever been asked to do this? I seem to be encountering this more and more -- the last company I worked for, I left because that was stated explicitly by the CTO as the new policy. What would you do if you were told to do that? And by dumbing down, I mean doing things like avoiding LINQ (except for basic things), metadata, reflection, extension methods, and any of the C# 7.0 language features. It seems that long gone are the days when companies actually invest in keeping developer skills up to par with the technologies the company uses. Or even more amusingly (not) keeping those technologies up to date.

                  Latest Article - Building a Prototype Web-Based Diagramming Tool with SVG and Javascript Learning to code with python is like learning to swim with those little arm floaties. It gives you undeserved confidence and will eventually drown you. - DangerBunny Artificial intelligence is the only remedy for natural stupidity. - CDP1802

                  R Offline
                  R Offline
                  Ravi Bhavnani
                  wrote on last edited by
                  #24

                  I can understand being asked (in a code review) to not be overly cryptic or to ensure any non-obvious code is well commented, but your examples of being asked to not use features like LINQ, metadata, reflection and extension methods (good grief!) seem to imply the company's dev team is grossly under par when it comes to basic software engineering skills.  Perhaps it's time to lose this gig and move on? /ravi

                  My new year resolution: 2048 x 1536 Home | Articles | My .NET bits | Freeware ravib(at)ravib(dot)com

                  M 1 Reply Last reply
                  0
                  • M Marc Clifton

                    Ever been asked to do this? I seem to be encountering this more and more -- the last company I worked for, I left because that was stated explicitly by the CTO as the new policy. What would you do if you were told to do that? And by dumbing down, I mean doing things like avoiding LINQ (except for basic things), metadata, reflection, extension methods, and any of the C# 7.0 language features. It seems that long gone are the days when companies actually invest in keeping developer skills up to par with the technologies the company uses. Or even more amusingly (not) keeping those technologies up to date.

                    Latest Article - Building a Prototype Web-Based Diagramming Tool with SVG and Javascript Learning to code with python is like learning to swim with those little arm floaties. It gives you undeserved confidence and will eventually drown you. - DangerBunny Artificial intelligence is the only remedy for natural stupidity. - CDP1802

                    T Offline
                    T Offline
                    Tinus Smit
                    wrote on last edited by
                    #25

                    How are juniors expected to learn when nothing will challenge them?

                    D M 2 Replies Last reply
                    0
                    • R Ravi Bhavnani

                      I can understand being asked (in a code review) to not be overly cryptic or to ensure any non-obvious code is well commented, but your examples of being asked to not use features like LINQ, metadata, reflection and extension methods (good grief!) seem to imply the company's dev team is grossly under par when it comes to basic software engineering skills.  Perhaps it's time to lose this gig and move on? /ravi

                      My new year resolution: 2048 x 1536 Home | Articles | My .NET bits | Freeware ravib(at)ravib(dot)com

                      M Offline
                      M Offline
                      Mario Luis
                      wrote on last edited by
                      #26

                      Pretty much nail on head. Juniors should be learning, not code automatons. Ideally if you want that it should be automated via tool or scripts.

                      1 Reply Last reply
                      0
                      • R R Giskard Reventlov

                        That is nuts. How does that help the business? Failing to challenge and educate engineers leads to mediocre and/or poor code, at best.

                        Keep your friends close. Keep Kill your enemies closer. The End

                        D Offline
                        D Offline
                        DerekT P
                        wrote on last edited by
                        #27

                        Conversely, how does having first-class code help the business, compared to having "mediocre" code? If the end result works, and doesn't require massively more expensive hardware to run at an appropriate speed, then why not? "Simple" code helps the business by reducing staff costs, increasing the pool of potential recruits, reducing "up to speed" time for new joiners ... all these things are helping the business far more than using Linq where it's not necessary. Each new language feature or concept is another thing to learn and get expert in - or not. Keeping things "simple" with a smaller subset arguably allows all staff members to become "expert" in the entire gamut of techniques, and therefore able to pick up and work on any bit of the code, regardless of their seniority / experience. Maybe playing devil's advocate a bit here, but if you look at things from management's point of view, there's something to be said for it. And if it means experienced (expensive) developers leaving in frustration - to be replaced by cheaper juniors - that's yet another win for the bottom line.

                        R S 2 Replies Last reply
                        0
                        • T Tinus Smit

                          How are juniors expected to learn when nothing will challenge them?

                          D Offline
                          D Offline
                          DerekT P
                          wrote on last edited by
                          #28

                          How does a junior learning something help the company's bottom line? If a junior programmer can understand and maintain every part of the company's codebase, there is no requirement for learning and no requirement for senior (expensive) programmers. Just sayin' ...

                          T M 2 Replies Last reply
                          0
                          • M Marc Clifton

                            Ever been asked to do this? I seem to be encountering this more and more -- the last company I worked for, I left because that was stated explicitly by the CTO as the new policy. What would you do if you were told to do that? And by dumbing down, I mean doing things like avoiding LINQ (except for basic things), metadata, reflection, extension methods, and any of the C# 7.0 language features. It seems that long gone are the days when companies actually invest in keeping developer skills up to par with the technologies the company uses. Or even more amusingly (not) keeping those technologies up to date.

                            Latest Article - Building a Prototype Web-Based Diagramming Tool with SVG and Javascript Learning to code with python is like learning to swim with those little arm floaties. It gives you undeserved confidence and will eventually drown you. - DangerBunny Artificial intelligence is the only remedy for natural stupidity. - CDP1802

                            P Offline
                            P Offline
                            pivertt
                            wrote on last edited by
                            #29

                            I understand both sides (partially): - dev side: yes it can make sense to use the new and shiny constructs/features of a programming language. No problem with that. But did you make an effort to add comments to clarify the magic shorthand that follows? Or are you the kind of "I only write readable code" developer? I had to modify a program and after the initial "who wrote this crap", I realized it was an old program I wrote. So "dumbing down" should perhaps be perceived as KIS: keep it simple. - management side: devs are an unreliable bunch of nerds so if they leave, we can't afford to stand still for months just because some star-programmer found it beneath his dignity to add comments and only wanted to use exotic libraries. F them and send it to India (so they can mess it up). Now I'm off to my micromanagement course

                            M 1 Reply Last reply
                            0
                            • M Marc Clifton

                              Ever been asked to do this? I seem to be encountering this more and more -- the last company I worked for, I left because that was stated explicitly by the CTO as the new policy. What would you do if you were told to do that? And by dumbing down, I mean doing things like avoiding LINQ (except for basic things), metadata, reflection, extension methods, and any of the C# 7.0 language features. It seems that long gone are the days when companies actually invest in keeping developer skills up to par with the technologies the company uses. Or even more amusingly (not) keeping those technologies up to date.

                              Latest Article - Building a Prototype Web-Based Diagramming Tool with SVG and Javascript Learning to code with python is like learning to swim with those little arm floaties. It gives you undeserved confidence and will eventually drown you. - DangerBunny Artificial intelligence is the only remedy for natural stupidity. - CDP1802

                              G Offline
                              G Offline
                              GKP1992
                              wrote on last edited by
                              #30

                              If you are told not to make use of good LINQ or extension methods, I do not think the resulting code would be any easier to understand. If in these cases the code is well commented, it is, in fact, compact and easier to understand. OTOH I agree with reflection (people tend to steer clear from it stating it is too powerful for its own good :laugh: ) since not many people know it. Asking developers to "dumbed down" code shows the lack of trust(maybe they have their reasons) in the new recruits. I do not think the code is the problem here. I would suggest educating the newer members of your team at least the "features" that are commonly used in the project.

                              I am not the one who knocks. I never knock. In fact, I hate knocking.

                              M J 2 Replies Last reply
                              0
                              • M Marc Clifton

                                Ever been asked to do this? I seem to be encountering this more and more -- the last company I worked for, I left because that was stated explicitly by the CTO as the new policy. What would you do if you were told to do that? And by dumbing down, I mean doing things like avoiding LINQ (except for basic things), metadata, reflection, extension methods, and any of the C# 7.0 language features. It seems that long gone are the days when companies actually invest in keeping developer skills up to par with the technologies the company uses. Or even more amusingly (not) keeping those technologies up to date.

                                Latest Article - Building a Prototype Web-Based Diagramming Tool with SVG and Javascript Learning to code with python is like learning to swim with those little arm floaties. It gives you undeserved confidence and will eventually drown you. - DangerBunny Artificial intelligence is the only remedy for natural stupidity. - CDP1802

                                T Offline
                                T Offline
                                Tomaz Stih 0
                                wrote on last edited by
                                #31

                                Economy is integral part of our jobs. At university I was taught that an engineer is a person who can do for $500 what every damn fool can do for $1.000. Best way to include junior engineers seems to be structuring software to allow pluggable codelets. Usually in places where there is a significant quantity of simple constructs to be programmed, such as data entry screens. We go as far as forcing engineers into simplistic conventions by creating frameworks that do not work unless convention is followed. But I've never heard of a case where one would simplify entire software. There are places that should not be touched by junior software engineers.

                                M 1 Reply Last reply
                                0
                                • M Marc Clifton

                                  Ever been asked to do this? I seem to be encountering this more and more -- the last company I worked for, I left because that was stated explicitly by the CTO as the new policy. What would you do if you were told to do that? And by dumbing down, I mean doing things like avoiding LINQ (except for basic things), metadata, reflection, extension methods, and any of the C# 7.0 language features. It seems that long gone are the days when companies actually invest in keeping developer skills up to par with the technologies the company uses. Or even more amusingly (not) keeping those technologies up to date.

                                  Latest Article - Building a Prototype Web-Based Diagramming Tool with SVG and Javascript Learning to code with python is like learning to swim with those little arm floaties. It gives you undeserved confidence and will eventually drown you. - DangerBunny Artificial intelligence is the only remedy for natural stupidity. - CDP1802

                                  S Offline
                                  S Offline
                                  soulesurfer
                                  wrote on last edited by
                                  #32

                                  That is a valid perspective, and further one could say that junior developers need opportunities to learn and not have their hand held too much; and there must be an expectation that developers meet minimum requirements of understanding many aspects of software development. Code reviews are an effective way to share knowledge and help develop junior devs. So, for balance, let's look at the other side. Companies invest in and employ devs to develop software assets. These assets are important to the companies value/revenue/future etc. So naturally, maintainability is a hugely important attribute of company assets. And there are many aspects to maintainability of course. I would say that if someone is asking you to "dumb down" code for easier maintenance, perhaps that is just a diplomatic way of saying that your code is not readable/maintainable. There is an old school rule that when writing code, it should be readable by other people, including yourself at some time in the future. Since I am no expert in LINQ, for example, I will often write code the simple / old way, and when Re-Sharper suggests a conversion to LINQ, I will have Re-Sharper do the conversion, and then decide if it is easier or harder to understand at a glance, and often I will undo the conversion. Complicated or unreadable code is not "better" code. (obviously there is a minimum complexity required for every different problem/algorithm). Well, anyway, I would tell your bosses that any policy that forbids using C# 7 syntax, for example, is a bad policy since every new version of c# provides syntax that is better and/or more maintainable. Cheers, Anthony

                                  M 1 Reply Last reply
                                  0
                                  • M Marc Clifton

                                    Ever been asked to do this? I seem to be encountering this more and more -- the last company I worked for, I left because that was stated explicitly by the CTO as the new policy. What would you do if you were told to do that? And by dumbing down, I mean doing things like avoiding LINQ (except for basic things), metadata, reflection, extension methods, and any of the C# 7.0 language features. It seems that long gone are the days when companies actually invest in keeping developer skills up to par with the technologies the company uses. Or even more amusingly (not) keeping those technologies up to date.

                                    Latest Article - Building a Prototype Web-Based Diagramming Tool with SVG and Javascript Learning to code with python is like learning to swim with those little arm floaties. It gives you undeserved confidence and will eventually drown you. - DangerBunny Artificial intelligence is the only remedy for natural stupidity. - CDP1802

                                    P Offline
                                    P Offline
                                    Peter Shaw
                                    wrote on last edited by
                                    #33

                                    I had that once, my reply. "So you want me to do your job of balancing the budget so you can save money by not having to train them, and thus increase profit? Do I get a pay rise and a position in your office if I'm working the same job as you?" The discussion was very quickly terminated, and the request abandoned. I left voluntarily 2 months later :-)

                                    M 1 Reply Last reply
                                    0
                                    • R R Giskard Reventlov

                                      That is nuts. How does that help the business? Failing to challenge and educate engineers leads to mediocre and/or poor code, at best.

                                      Keep your friends close. Keep Kill your enemies closer. The End

                                      P Offline
                                      P Offline
                                      Peter Shaw
                                      wrote on last edited by
                                      #34

                                      As Iv'e said for years, this so called "Skills Shortage" in the industry, is as a result of businesses own practices, but they never learn, they just keep doing the same things over and over again.

                                      J 1 Reply Last reply
                                      0
                                      • M Marc Clifton

                                        abmv wrote:

                                        Maybe a few walk-through session for the junior devs would be adequate.

                                        Yeah, unfortunately, management's view of training consists of watching Pluralsight videos rather than learning things directly from the senior devs on code that is actually relevant to the company and job.

                                        Latest Article - Building a Prototype Web-Based Diagramming Tool with SVG and Javascript Learning to code with python is like learning to swim with those little arm floaties. It gives you undeserved confidence and will eventually drown you. - DangerBunny Artificial intelligence is the only remedy for natural stupidity. - CDP1802

                                        P Offline
                                        P Offline
                                        Peter Shaw
                                        wrote on last edited by
                                        #35

                                        Try "Watching You-Tube" Marc :-) Pluralsight costs money remember :-) Oh and your only allowed to learn during lunch breaks and out-of work time too...

                                        1 Reply Last reply
                                        0
                                        • D DerekT P

                                          How does a junior learning something help the company's bottom line? If a junior programmer can understand and maintain every part of the company's codebase, there is no requirement for learning and no requirement for senior (expensive) programmers. Just sayin' ...

                                          T Offline
                                          T Offline
                                          Tinus Smit
                                          wrote on last edited by
                                          #36

                                          Touché ;P However, that changes the story from career development to office politics, and there's few things other than leaving the company which would remedy that (for the developer asked to dumb down the code).

                                          1 Reply Last reply
                                          0
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Categories
                                          • Recent
                                          • Tags
                                          • Popular
                                          • World
                                          • Users
                                          • Groups