Data Structures: Does a front end web developer need to know them?

            I came across a job description of a highly ranked company that is looking for a front end web development computer scientist/engineer. The job description stated the responsibilities like understanding product requirements, coming up with prototypes, maintaining re-usable components and work in an agle environment and so on. However, they also want the candidate to possess extensive knowledge on data structure and algorithms. 
Why should a front end scientist/engineer should know about data structures such as B+ trees, heaps, stacks and such, which are normally used for arriving at performance efficient business logic? Most of web 2.0 standards suggest using an MVC approach these days and following a REST based approach. So there is going to be limited business logic in the front end of the application.

                  I do agree that a front end engineer has to worry about the performance of the web application in terns f the resources fetched, the response time of the pages, caching issues and so on. However, having a proper design pattern with a MVC approach would take care of most of the performance constraints. I would rather be concerned about such issues and cross-browser compatibility issues.
                  Maybe it is to make sure that the front-end engineer/scientist communicates well with the back-end engineers/scientists (server side techies) and does the integration good. I doubt it, because hat destroys the rule of REST approach. As a front-end engineer/scientist, I should not be worried what the back-end does and consider it as an external entity/ black box and just confirm to the API specs.
                 Having knowledge about front-end web technologies for a few time now and I hardly ever used any complex data structures and algorithms like B+ trees and such in any of the client side code.
               Am I missing something here?

4 comments:

  1. Hi, Harsimran,
    It is nice to meet you here. Your post is informative and interesting. I am not sure whether a front end web developer needs to know about advanced data structures like B+. However, I think that it will be helpful for communicating with back end engineers/scientists. Last semester, I used MVC design patter to complete one game with other team members. I found it was hard to split one task completely into Model part, View part and Controller part. As the one who finished the view part(which should be looked as the front end part), I need know about the data structures like Arraylist that the Model part(this should be back end.) was using. Otherwise, I would spent more time and energy to finish the display job. Of course, maybe I misunderstood the definition of the front end .

    Any way, your article gives me a window to know about front end web developer. It is a good post. I will look up more materials about it. Hope I will read posts about it soon.


    ReplyDelete
  2. Hello there, Harsimran Singh, if I recall correctly, this is my first comment on your blog. I was very pleased to read your posting on data structures. The pictures you used clearly capture the concept in each data structure. Although I do not have much experience in RESTful applications myself and cannot comment on what destroys the rule of REST approach, I can agree with your point that front-end developers need not extensive exposure to data structure topics. Keep up with your great work!

    ReplyDelete
  3. Harsimran,

    I enjoyed this post a lot, as it made me think by addressing a controversial question. Personally I think it’s beneficial for ANY programmer to learn about complex data structures, no matter how much they’ll end up using them. Really understanding some of the most clever algorithms out there can make you better at coming up with algorithms of your own later on.

    The tone of the post is the perfect balance between professional and conversational. The picture was hilarious; I especially like the heap. With some proof-reading for tiny errors, this post would be even better. Nice job!

    ReplyDelete
  4. Ahhhh. We should play some time =). "I came across a job description of a highly ranked company that is looking for a front end web development computer scientist/engineer.' Computer scientist doesn't sound too bad. Computer engineer sends shivers down my spine. I think of ohm meters, soldering, circuits, and digital design when I think of Computer Engineering. As for why you should know about that I have to concur with Li Miao that it's primarily for understanding and working with other groups if you are a front end engineer. I believe that graphs and dynamic programming would probably be rather useful for front-end development. Can't be too sure though, haven't been in industry yet though.

    ReplyDelete