Vanguard Coder

Simple Life of a Keen Developer

What’s Wrong with Coding Challenges

leave a comment

I’ve had a handful of coding challenges to do in short space of a week and have seen a lot of variability. Some employers as you to write a program that does something like converting numbers to words – this is a short algorithm and could be done in under 100 lines. I’ve been praised for a good clear design and readability, but at other times have been rejected because they wanted to see design patterns and more “OO principles” applied. However, in the development industry – all unnecessary “overkill” code is a waste and should not be done without a good reason.

I’ve had other challenges asking for console input/output, which didn’t emphasis on if they wanted TDD (which should be the case by default).

A good problem gives a business situation rather than asking to write a program that does something. A shopping cart with an addition issue of applying offers – buy X and get X or Y at a discount or free. Z% discount on a product or a category, etc… seems to be one of the most common challenges.

 

 

Written by zkashan

January 31st, 2014 at 8:44 pm

Posted in Uncategorized

What is the Most Complex Piece of Software You’ve Worked On?

leave a comment

I get asked this question a lot in interviews, and it’s one of those wooly type questions that people like to ask and get a predictable rehearsed response back.

Until very recently, I didn’t know what the response should be, after all, isn’t everything complex until you understand it?

The interviewers are probably reflecting on their own systems which may look simple, but may have grown over time. The best response is to take any project you’ve worked on, and talk about the number of different sub-components that were there, how you looked at it from a high level view from a clients perspective, and the low level from a developers perspective.

 

Written by zkashan

January 22nd, 2014 at 9:05 am

Posted in Uncategorized

Marketing new Framworks

leave a comment

Written by zkashan

January 17th, 2014 at 6:27 am

Posted in Uncategorized

Is Microsoft Certification (MCSD: Web Apps) worth it?

leave a comment

A few month ago, I decided to update my certification and sit for MCSD: Web Apps exams.

In UK, it’s not a must have. There are a lot of great developers that are not certified. However, any candidate that goes
through the recruitment process has to prove to non-devs (HR, recruiters and hiring managers) that he is worth the time and effort to be considered as an added advantage (rather than a filter) for an interview.

Job seekers that go to meetups, events and talk don’t necessarily have to flash their MCSD certificate for the added advantage.

Overall, I think if you’ve got the time, it’s a nice challenge to do.

In order to prepare for the exams these are the PluralSight courses I did:

070-480 (Programming in HTML5 with JavaScript and CSS3):

070-486 (Developing ASP.NET MVC 4 Web Applications):

070-487 (Developing Windows Azure and Web Services):

 

Written by zkashan

January 15th, 2014 at 10:43 am

Posted in Uncategorized

Infinite Scrolling in SPA w/ Durandal

leave a comment

Working with Single Page Apps (SPA), and listening to how John Papa explains it, I’ve become a huge fan of Durandal, and whole-heartedly feel it’s the future. It’s inevitable, that infinite scrolling will have to be implemented.

This means.

1. Skipping what’s already been loaded, and load new items,

2. Ensuring the correct data is loaded, (e.g. if it’s sorted by name, price, etc…)

3. If the infinite scroll is no longer infinite, to not to raise events.

Interestingly, the two variants of I’ve seen are loading based on page – where a page contains a fixed number of items, However, it’s counter intuitive to define a page, as a page no longer exists in infinite scroll, but rather number of elements the user is able to see, thus, an item based scroll seems more intuitive.

Another common issue I’ve seen is working with percentage.

Let’s say a screen displays 20 items, and the window holds 100 items. Each time the person scrolls 80% we load a 100 more. It works fine for the first few scrolls, however, lets say the user is viewing 1000 more, and has reached 800, loading a 100 more might be unnecessary as he is not entirely near the end.

Scrolling is not too daunting to build – esp with Breeze as it is aware of line and we can write skip(numberOfItemsLoaded).Take(numberOfItemsToLoad)

My implementation involved letting Durandal add scroll event on document load, which unbound the scroll event, load more information and attach the event again. This is necessary as the event could be raised when the user is scrolling through the lower parts of the page causing a few multiples of item sets to be loaded.

Written by zkashan

July 11th, 2013 at 7:04 pm

Posted in Uncategorized

Agile Development Practices by Country

leave a comment

Agile development processes are practiced either at grassroots where all people in the organization or sub-group play an active part in improving, following practices, and contributing to the processes. The alternative is to do what everyone else is doing (Drone-driven-development), or resisting change and sticking with age old practices, tools, and thus development speed, and user feedback and cycles.

Using job aggregation websites and forums, I analysed the quality of jobs, and requirements in UK, UAE, India – primarily because I know people working in these countries and the time spent to research each country  is large. If anyone want to help me in refining the criteria and and expand the list of countries, I’m more than happy to work together.

The criteria is:

1. Number of development (C#/Java) jobs posted requiring Agile developmental skills.

2. I also include how many SAP jobs exist to see industry focus.

I’ll exclude personal feedback from developers as maintaining some manual systems e.g. zipfiles instead of SVN, and QAs that only do manual testing.

Normalised Agile ranking:

UK – 100          (40% of all jobs are agile), C#/Java market share – 70% vs SAP. C#/Java are equally spread.

UAE – 12          (5% jobs are agile), C#/Java market share – 10%  vs SAP.

India –  37      (15% jobs are agile), Java/C# market share 70% vs SAP. Heavy skew towards Java

Conclusions:

UK is in an ideal position to focus on true  innovation and development and lead the way for others to follow. Not being platform specific they can exploit newer innovations rather than rely on vendor to supply approve supported modules and changes.

UAE is a SAP based economy. With C#/Java holding a very small proportion of the economy compared with SAP, and of the C#/Java jobs, a miniscule have agile listed as their requirements. UAE is likely to rely entirely on vendor products and development abroad rather than innovate and develop locally. This is likely to be the more expensive way in the long run, but the premium is noticeable.

India, like UK has a high number of C#/Java jobs as compared to SAP. However, Java holds a significant market share.

My thoughts:

I’ve generally seen companies eventually isolate and remove SAP, and other large systems as it’s expensive and fewer developers are are available, and consultants are required to maintain them which become more expensive as the technology gets out of date. There has been some effort to enhance SAP, however, it is a follower rather than a leader when it comes to innovation.

 

Written by zkashan

March 24th, 2013 at 4:34 pm

Posted in Uncategorized

The Kashans Test

leave a comment

Joel did some excellent work in helping evaluate if we’re quiet there yet or not in terms of the inefficiencies we face during development and how much hair pulling needs to be done to just write code. Twelve years on with “Agile” being attempted it’s worth a review.

Working as a consultant, and talking with other developers,the attitude to development is “You can’t make an Omelette without killing a few people”, so the general approach many developers follow is just follow the process and get on with it. But it’s worth checking where you stand. It’s definitely more concrete than the Drake Equation.

Kashans Test

1. Source Control (+1 if you have one, -1 if you zip and merge, or use excel to track changes, 0 otherwise).

2. How long do stand-ups take (+1 if 1 min/person, 0 if more, -1 for what standup?)

3. Are there automated UI tests (+1 for yes or if not needed, -1 for none).

4. How long does the build take (+1 for <15 mins, -1 for more).

5. Do you get the “talk” if you break the build (-1 if you do, +1 if you don’t) – team spirit is important, but the underlying cause needs to be checked if it breaks a lot.

6. Do you have requirements to work against (-2 if you don’t, -1 if you have access to people that do, 0 for some document, +1 if there are stories).

7. As a developer are you required to be “well rounded” in large projects – i.e. is the project missing a PM, BA, QA, User (-2 if missing some, -1 if missing one, +2 if all are available).

8. When developing do you get OutOfMemoryExceptions, dribble your fingers on the table for build to happens, tests to run, etc… (-1 if you do, +1 otherwise).

9. Do you have 55 hours weeks outside release cycles (-1 if you do, +1 otherwise).

10. Does your company host developer social events? (-1 for no, +1 for yes).

11. Do all Devs have local test databases and are able to check in database changes using delta scripts? (-1 for no, +1 for yes).

I wouldn’t be surprised if this needs review in a few years with practices being adopted and standardized depending on the size of the company and the developer community in that area.

Written by zkashan

March 9th, 2013 at 5:52 pm

The Need For Good Real Data

leave a comment

Data is a vital aspect of testing that we do, be it functional tests or unit tests. However, a lot of times in software development the data is “estimated” and not necessarily well defined. Eventually when going to deployment and the existing data which needs to be migrated is about to be  transferred, the team discovered to the horror that the data is slightly different – this could range from missing data to repeating of key columns. As a result last minute modifications are made and minimally tested before being deployed and hoping for the best.

So if it works, that’s great! But an earlier test deployment generally helps avoid this risk, or delaying the release until the data is ready (the system can’t be used if there is no data after all).

Written by zkashan

March 2nd, 2013 at 10:19 am

Biztalk – Adopt and Remove

leave a comment

Biztalk is perhaps the most interesting product implemented by Microsoft. I’ve personally worked on many projects involving Biztalk. In many, I introduced and integrated Biztalk, in others, I implemented replacement for parts of it.

Problems primarily range from stability, finding people who know it at least to the level where Biztalk databases is corrupt, or loosing messages, and trying to look at the deep dark internals to find out where things went wrong.

Companies are sold Biztalk through slick offerings and presentations showing how simple and great it is from the business perspective, along with success stories such as in Thetrainline.com by Cap Gemini and Pershing by Microsoft . However, there are no follow-up stories if Biztalk is continued to be used, expanded, frozen or decommissioned after a few months or a few years of use.

Some companies eventually find less value, however, others fight to keep it in by looking for Biztalk experts that know how to firefight, or create roles such as Biztalk Lead (so leading a team of Biztalk developers?) – which might be trying to patch issues with the software rather than fixing them. This generally happens in large public bodies in small countries where the HR is centralized, but is not necessarily limited to it.

Biztalk is considered as a bloatware by a lot of Developers (not all), and there isn’t a shortage of companies adopting and removing Biztalk, and looking for viable alternatives. A blog by Biztalk MVP is an interesting read, and if adopting Biztalk, or getting rid of it, a question asked on stackoverflow was interesting as well.

Biztalk isn’t the only product going down this route. If the product offers drag and drop development to a certain extent, it’s worth having a second look.

Written by zkashan

October 28th, 2012 at 11:32 am

Posted in Uncategorized

The Truth about Development

leave a comment

If we’re being honest, I think a lot of us would like to continue to be developers, learn and invest ways in making coding efficient, quick, maintainable, and flexible. In essence, we’d like to remain forever young. However, time flows in one direction. And the tracks we leave behind get etched in what we do and write. I still remember the first team I worked with, the first interview, the first code review. They’ve left their mark.

As a Developer, I’ve always believed in the power of technology. But it’s a mean and not and end in itself. And coding and automation may not always be the only solution. A strong skills in analysis, project management, and being able to research the best solution and architect-ing a solid design are all just as vital but are sadly left out in most of the evaluation processes.

As a consultant it always puts things in perspective to deliver a working evolving system whether it is a throw-away application to be used for a year, or something that will remain a core part of the system 20 years later, it is the question of what is the best system and solution to what I’m being asked to deliver.

 

Written by zkashan

July 24th, 2012 at 8:46 pm