Category Archives: Software Engg

Unit Tests – An Alternate Functional Requirements Documentation

The article presents a perspective on how unit tests could be written in a way that they could be used as an alternate form of documentation for understanding functional requirements. Many a times, it has been found that developers, primarily rookies, did not have a clarity on how to name unit tests. Thus, many of them have been found to name the unit tests such as testXXX where XXX is name of the method which they wanted to tests. There has been many recommendations on how to name unit tests, some of which are following: Given…When…Then… Check the page by Martin Fowler (http://martinfowler.com/bliki/GivenWhenThen.html) WhenXXX_ExpectYYY Names representing different use case scenarios …

Continue reading

Posted in Unit Testing. Tagged with .

Content Framework for Lunch & Learn Sessions on IT Applications

The article represents a framework using which one could plan their content for taking an introductory session on their applications. The primary objective of such presentation is to provide the audience with following information: Business overview Applications overview The proposed framework aims to satisfy the education needs for different stakeholders including delivery manager, project manager, development & testing teams. Presenters talked differently In my recent experience, I attended a series of sessions taken by leads of different project teams working for the same customer. Except for few of them, most of these sessions were not very interesting and audience enjoyed lunches more than the sessions. Following are some of the …

Continue reading

Posted in Software Engg.

APIs Performance Testing with Twitter Iago

The article talks about performance testing tool, Iago, which is created at Twitter for testing their core database interfaces, storage sub-systems and domain logic, up to the systems accepting front end web requests. Performance requirement of Twitter platform? Simply speaking, end users expect to read & post tweets with a very fast response time and, Twitter is expected to respond in that manner irrespective of load arriving at it with absolutely no room for any slowness, whatsoever. That is a tough one, isn’t it? This is unlike many enterprise business systems where users can be a little forgiving by waiting for the response to show up. So, they needed to …

Continue reading

Posted in Performance Engineering. Tagged with , .

How to Measure Software Development Productivity

The article lists down pages/papers on measuring software development productivity. The Theory of Constraints: A good read on measuring software development productivity Measuring Productivity of Software Development Teams: The paper lists down different techniques/models for measuring software development productivity. CannotMeasureProductivity: Then, there is this article by Martin Fowler which says that it is difficult to measure software development productivity. He points about ineffectiveness of following approaches of measuring developer’s productivity: Lines of codes (LOC) Function points The software development teams working based on Waterfall model or Agile methodologies model tend to measure the developer’s productivity in terms of following variants: Function Points Story Points (size) vs Velocity Following pages present …

Continue reading

Posted in Software Engg, Software Quality. Tagged with .

Why Amazon.com Pages Rely on DNS Pre-fetch

The article presents a perspective on why Amazon.com pages rely on DNS pre-fetch and what other e-commerce websites could learn from this.   Whats Happening Under the Hood? As you do the view source of the homepage, amazon.com, you would find following Javascript code snippet, right at the top of the page:   <meta http-equiv=”x-dns-prefetch-control” content=”on”> <link rel=”dns-prefetch” href=”http://g-ecx.images-amazon.com”> <link rel=”dns-prefetch” href=”http://z-ecx.images-amazon.com”> <link rel=”dns-prefetch” href=”http://ecx.images-amazon.com”> <link rel=”dns-prefetch” href=”http://completion.amazon.com”> <link rel=”dns-prefetch” href=”http://fls-na.amazon.com”>   Later, in the same page as well as other pages, you would find several resources such as images, Javascript, CSS files accessed from one of the above as base URLs. So, let’s try and explore some of the …

Continue reading

Posted in Performance Engineering. Tagged with , .

Data Architecture Lessons from LinkedIn.com Data Handling Mechanisms

The article aims to describe how data is managed at LinkedIn.com, the most popular professional social networking site.  Please shout out loud if you disagree with one or more of the aspects mentioned below. Also, do suggest if I missed on one or more aspects. Data use-cases at LinkedIn.com Following are some of the data use-cases that we may have come across while we are surfing various different LinkedIn pages: Update your profile, and the same appears in recruiter search in near real-time. Update your profile and same appears as network connections  in near real-time. Share an update, and same appears on others news feed page  in near real-time. Then, there are …

Continue reading

Posted in Architecture, Performance Engineering. Tagged with , , .

Developers Playgrounds to Play & Learn

The article lists down the details around different programming playgrounds that could be used by developers to learn while playing with different technologies (programming languages & APIs). What are Developers Playground? Developers playground are online applications that facilitates enhanced learning of different programming languages/API by providing developers with the IDEs like development platforms where different programs could be written and executed side-by-side and results could be studied/examined. Following is the broad classification of such playgrounds. Programming Playground In playgrounds related with programming languages, developers could learn languages while doing the coding and see the output side-by-side. Following are some of the programming playgrounds: Codecademy.com (It also presents playground for APIs …

Continue reading

Posted in API Development, Software Engg. Tagged with , .

Artificial Intelligence – Where to Put Your Time & Money

As I looked around some of the artificial intelligence (AI) related acquisitions in last few years, I got convinced, at least, on the fact that majority of large companies such as Google, Facebook, IBM are seeing various different artificial intelligence topics to play a key role in impacting end users’ life (and hence, developers) in the future. With that as the background, it gave me good enough reasons to start doing research in relation with following: As students, what topics of artificial intelligence should they take up as one of their computer science courses while  selecting under-graduate & post graduate courses? As developers/programmers, what topics of artificial intelligence should they …

Continue reading

Posted in Artificial Intelligence. Tagged with .

Can Artificial Intelligence be the Next Big Bet for Developers?

The article presents an analysis on what’s trending in the world of artificial intelligence thereby providing food for thought for the developers if they would want to bet on engineering field such as artificial intelligence and develop their expertise around that. What is Artificial Intelligence? Artificial intelligence (AI) is the intelligence exhibited by machines or software, and the branch of computer science that develops machines and software with human-like intelligence. Read further on the Wikipedia page. In this article, we shall primarily focus upon the software that could have human-like intelligence. Following are some of the characteristics of AI-based software: Maintain ontology of knowledge representing concepts and their relationships. Should have …

Continue reading

Posted in Artificial Intelligence. Tagged with .

What’s Needed to Get Your Code Quality Match ISO Standard 25010

The article relates software quality characteristics defined by ISO 25010 standard (SQUARE) with code quality and, recommends on what could be done by the developers to write the code matching the ISO quality standards. SQUARE stands for Software QUAlity Requirements and Evaluation (SQUARE). Please feel free to comment and add further points in any of the sections pertaining to quality characteristics listed later below. As per ISO 25010 (SQUARE) standards, Software quality can be defined, managed and measured in terms of following two broad categories: Quality in Use: Relates to the outcome of human interaction with the software Product Quality: Relates to the static & dynamic properties of the software …

Continue reading

Posted in ISO Standards, Software Quality. Tagged with , , , .

9 Online Developer Academies for Regular & Consistent Learning

The article presents a comprehensive list of online developer academies that provide FREE courses (90% of cases) on different topics related with web and mobile technologies that may prove to be very useful for developers at large. If I missed on making a mention of one or more other interesting portals, please shout out loud and I shall include them in the list below. Lets quickly look at what are the benefits of using one or more of these portals for learning & practicing (in some cases such as codecademy.com) software development topics: On-demand learning to learn at our own pace Structured learning New topics introduced at regular intervals Learning …

Continue reading

Posted in News, Software Engg. Tagged with .

Developing Apps for Wearable Devices (Glass/Watches)

The article represents different aspects of developing apps for wearable devices including some of the UI/programming best practices. Given the fact that wearable devices has become talk of the town including recent announcement by Google in relation with Android wear project, it would be interesting to understand some of the following in order to innovate apps for wearable devices: What are different kinds of wearable devices? What are different categories of apps that may fit the wearable devices? What are the UI best practices to develop apps for wearable devices? What does it take from programming perspectives? Different kinds of wearable devices? Following are some of the different kinds of wearable …

Continue reading

Posted in News, Software Engg. Tagged with .

List of Developers Sites from Top 5 Social Networking Websites

The article represents information on developers sites/blogs from top 5 social networking websites. https://developers.google.com/ Blog: There are different blogs maintained for different google products. However, one could checkout http://googledevelopers.blogspot.in/ for latest overall updates. The developer site acts more like a portal wherein the visitor gets access to some of the following: News feed from different Google developers blogs/pages related with different Google products APIs & technologies Developers tools such as API console, OAuth playground (interesting), project hosting (http://code.google.com) etc Various different developer programs Links to important Google products Feeds from https://developers.google.com/live/ . This one is pretty interesting as it shows the live streaming event happening on different google products or information around upcoming events. My personal …

Continue reading

Posted in Software Engg. Tagged with .

10 Training Topics to Transform Rookie Developers to Good Developers

The article represents different topics on which training could be given to the rookie developers to orient them appropriately and help them become highly effective developers by writing code of great quality, doing good communication, helping fellow developers etc. If you are one who is involved in planning training programs or you are one of the rookie developers, you may want to check out following topics and do the needful. Please feel free to share your thoughts/suggestions for any other topics that could be useful. Following is a list of 10 training topics that could be covered in 25-30 hours, and that could help developers imbibe some of the characteristics …

Continue reading

Posted in Freshers, Software Engg. Tagged with .

Javascript Libraries to use for Faster Webpage Loading

The article explores the web page loading issues in relation with loading of static resources such as Javascript/CSS files and goes on to suggest Javascript libraries that could be used to enable conditional loading of JS resources thereby achieving faster webpage loading. Following are some of the common use case scenarios that, if taken care, would enhance faster web page loading: Conditional loading of Javascript files in various different pages: Many of the I-could-also-do-front-end-programming adopt the approach of putting all the resources such as Javascript & CSS files in one common file and include the file in different web pages. Some of these common JS files include jquery & other …

Continue reading

Posted in Performance Engineering, Web. Tagged with .

Tips to Load Your Webpage Faster based on Google’s Pre-* Recommendations

The article recommends 4 simple tips to load your webpage in faster manner based on Google Pre-* technology recommendations. These tips are based on suggestions by Google Engineer, Ilya Grigorik in his presentation that could be found on this page. Do note that most of these (such as pre-fetch, pre-resolve etc) are also part of their PageSpeed initiative. While I was reading the presentation, it struck me as to check out on who is leading the internet browser share in the market. Following is the plot I could come up with data based on browser usage statistics. And, the winner is Google Chrome. Thus, I found it relevant enough to …

Continue reading

Posted in Performance Engineering, Web. Tagged with , .