Hello techxperts, mind your choice

 

This post is about an important aspect which ‘techxperts‘ – the ‘technology experts’, or  ‘Architects’ do sometimes purposefully, but without the intention to harm anyone. I am also an architect, so yes – I did not mean any sarcasm here.

To survive in any industry, in this ever evolving, globalized world, it is important we make sure we are always up-to-date in our field of job. Thankfully, with the help of Internet, especially through social media we get information about any amendment or introduction of a tool or technology within a matter of seconds, from the vendor, neighbourhood watch portals or friends’ tweets.

  • Some experts Read, then blabber
  • Some experts Read and Experiment, then Suggest
  • Some experts Read, Experiment and Analyze, then Guide

I usually get design review requests and it is always shocking for me when developers say the reason for a particular decision to follow an approach or use technology. Let me give you a sample conversation:

Developer: “Mr. ABC asked me to use it… and when I Googled and found this is a best fit”
Me: “Sure I agree, but the library is still in “preview” mode.”
Developer: “hmm… so what? that is from Microsoft! and Mr. ABC is a senior, he cannot be wrong”
Me: {explaining the drawbacks of ‘preview’…}

Considering this scenario, let me list some important points on decision making in a software development scenario:

Do not ever play with a customer’s project

Some people love to apply what they learned somewhere so that they can can tell the world that “I am an expert” and the tool is an addition to the resume. The proverb “A little knowledge is a dangerous thing” here. You can read about the same in book O’Relly’s 97 Things Every Software Architect Should Know1st point by Nitin Borwankar.

Beware of anti-patterns

“An AntiPattern is a literary form that describes a commonly occurring solution to a problem that generates decidedly negative consequences.” You might find your decision fit perfectly at first look, but in reality it may be good only for a short term or limited scope. Think from a long term and broad perspective. You might leave the project one day, but don’t let the next person suffer because of your expert design. Example, you might find SQL Sever an easy approach to handle a data analysis problem which will be efficient for couple of Giga Bytes of data which is the current availability. But some Peta Bytes tsunami of data flow might be flowing into the system after some months or years then your architecture breaks in production.  That time you might be working for some other company while your previous company who spent for your daily bread might be suffering.

Use only stable versions of libraries and technologies

A big NO for unstable versions like Alpha, Beta and CTP. These versions might contain bugs, and features that might change or get removed when a stable version is out. These versions usually comes with no support and vendor wont take any responsibility of your loses.

Beware of Open Source

Do more research in the case of open source technologies and tools. There are properly maintained open source projects, as well as poor ones. Do a thorough study whether the project is backed by a strong development and support team. Read their EULA – most Open Source licenses comes with special clauses for use with commercial applications.

Understand requirements

I have seen some architects give instant pain relievers on-the-spot up on hearing the limited scope context on-the-spot. There will be much better solutions you can suggest if you go in detail in requirements. Recently, there was a requirement for one project team to schedule jobs in Azure. One person up on hearing the words – “Azure” and “job” suggested to go with WebJobs (an Azure feature). But in reality, the project uses a DataFactory (another Azure feature) which already includes a facility to schedule jobs. May be this person could have suggested the same if he was patient enough to hear one more word “DataFactory”.

Thank you for reading.

Are you just a ‘resource’?

 

In Project Management terminology, companies usually call an employee a ‘resource’ and hardly they consider the person a human being because at end of a business day it is not about charity, but is all about ‘money’. Since ‘resource’ is a relative term, it is often considered by companies as a volatile category and after many years of services this ‘resource’ will be marked ‘saturated’ hence either a replacement is required, or wait till it gets ‘expired’.

Small to Medium companies are usually selective when they hire people. They not only do technical interviews but also analyze the candidate’s attitude towards ‘art of learning’. Especially in the case of technology, it is getting improved and deprecated every day, every hour. Small companies cannot afford spending money after the project gets finished and person becomes unusable so they usually hire multi-skilled people or those who really put effort in continuous learning.

But the case is different in the case of Medium-to-Large companies. I know many people who got rejected by companies just because they do not have a graduation. Even after we have sufficient examples of billionaire establishments started by ‘drop-outs’, our corporates do not believe in skills over qualifications. They hire ‘highly qualified’ people and ‘wrongly nurture them’ to make them ‘IT Coolies’ (In Indian context).

It was just another day like any other day when one of my colleague, after two hours of his day’s work stood up with a depressed face and rushed into CEO cabin. I saw through the glass walls there both talking, then smiling and finally laughing. After some 15 minutes he is back to his cubicle with a pleasant face but did not sit, instead he took his bike keys and went out smiling. He never returned. From the CEO we came to know that ‘he did not enjoy his job but wants to help his family business’.

One of my colleague took a half an hour talk on ‘positive thinking’ where he stressed a quote “Do What You Love, Love What You Do”. Intention was to motivate people but one of the person got double motivated and confused the company ‘I want to start my own business. I quit!’

From couple of casual coffee chit chats with some employees I got that the reason for at least 3-4 resignations were because they were put in a job where they are not interested in.

First and second category people wanted to do something which they love. But the third category?

Horrible! Unfortunately, this is true. This scenario usually happens in companies where there some ‘process’ exists, which they claim.

Just after they graduate, they are very energetic and ambitious. They join companies to fulfil their dreams. What they expect is someone who can support to chase their dreams. They came through textbooks, hands on experiments, the motivation they got from their entrepreneurship cell, the success stories of Elon Musk and Steve Jobs. Their adrenaline rush is at the peak that it is the job of their first employer to support them. But… some companies give ‘some’ training, most probably what is relevant for the ‘job to be done’ which we call fancy – “on the job training”.

Many companies give them first an ‘internal’ project after letting them sit on a ‘bench’. When some client project comes? Yeah, ‘assign’ them to the project. There starts the person’s first technology. He continues with the project and technology until they find another cost-effective method to execute it.

When a new project comes, those ‘resource managers’ from Project Management Offices, they have the task of allocating resources ‘effectively’ as per the requirements so that they can bill the customer. They don’t bother whether you like the work but they will put you there. There starts the demotivation of job but you will survive as there is a motivation of salary.

What really is the point of living such a life? You live only once. Do What You Love, Love What You Do.

Below are some points which I think you can avoid such problems when you are an ‘employee’.

  • Increase visibility Let the world know what you know. Don’t let your company assume your skills. Start a blog, write articles, publish whitepapers, join open source projects.
  • Bring power to your voice Resource Managers will think twice before they put you in a job because you are an influencer. At times, you will be the one guiding those PMOs.
  • Sharpen your Axe – Continuous Learning Just for the sake of your survival, we can say ‘I love my company’ but one day you will realize ‘company loves money more than me’. If you are caught with a situation you have to quit then this is the area where you get confidence to try something new.
  • Let your colleagues speak for you Guide them. Speak for them. In return they will also do the same to you. Befriend professionally with the colleagues of your same level or above, both inside and outside your company.
  • Initiate & Innovate Tell the company indirectly that you are very ‘proactive’. Find the areas for improvement and try to make it. Even if the company is not supportive due to bureaucracy, your efforts will be remembered when needed.
  • Soft Skills Improve your communication, leadership and interpersonal skills. Join some institute if required.

    Above are just my views and there will be much more you can add from your experience. Thank you for reading.

    This is a copy of the article I posted on MobConf Outlook.

  • How to backup/tar a folder and upload/ftp to another server?

     

    The server which I have hosted my blog is not a reliable one and due to its ‘cheap’ nature it comes with no features such as backup. After a dozen of unpredicted downtime and agony, I have wrote a small bash script to use with cron jobs until I find an economic, but quality hosting. Additionally I turn off MySQL daemon so that any database read/write operation will not get ignored by tar.

    Find the quick backup script I am using in this website:

     

    Learning path for Azure Data Factory

     

    Data Factory is a cloud-based data integration service that orchestrates and automates the movement and transformation of data. Follow the guidance on this page for an effective learning path through Data Factory content.

    Find the interactive learning chart here.

    Must-read books for developers

     

    I took this list from Steve Smith’s post in LinkedIn. Most are my favorite books which I strongly recommend you also should read.

    1. Clean Code
    2. Agile Principles, Patterns, and Practices in C#
    3. Working Effectively with Legacy Code
    4. Code Complete
    5. Domain-Driven Design
    6. Applying Domain-Driven Design and Patterns
    7. Lean Software Development: An Agile Toolkit
    8. Extreme Programming Explained
    9. Kanban: Successful Evolutionary Change for Your Tech Business
    10. The Agile Samurai
    11. The Art of Agile Development
    12. The Mythical Man-Month
    13. 97 Things Every Programmer Should Know
    14. Test-Driven Development: By Example
    15. The Art of Unit Testing
    16. Growing Object-Oriented Software, Guided by Tests
    17. Head First Design Patterns
    18. Patterns of Enterprise Application Architecture
    19. HTML Dog
    20. Don’t Make Me Think
    21. Slack
    22. The Clean Coder
    23. The Pragmatic Programmer

    K-MUG DevConfluence 2017 @ Trivandrum on 25 Feb 2017

     

    Agenda:

    08:45 AM – 09:30 AM

    Registration, Community Updates, Networking

    09:30 AM – 10:00 AM

    Inauguration Ceremony

    10:00 AM – 11:00 AM

    Keynote Address

    Annie Mathew, Director, Audience Marketing, Microsoft

    11:00 AM – 11:15 AM

    Coffee Break

    11:15 AM – 12:15 PM

    Session on Cognitive Services

    TBD

    12:15 PM – 01:15 PM

    Why is the Javascript language the way it is ?

    Praseed Pai

    01:15 PM – 02:00 PM

    Lunch Break

    02:00 PM – 03:00 PM

    HoloLens – Get Mixed with Reality

    Abhilash Ashok

    03:00 PM – 03:30 PM

    Introduction to Xamarin

    Safil Sunny

    03:30 PM – 04:15 PM

    Getting Started With ASP.NET Core – Hands on Session -Part 1

    Amal Dev

    04:15 PM – 04:30 PM

    Coffee Break

    04:30 PM – 05:30 PM

    Getting Started With ASP.NET Core – Hands on Session – Part 2

    Amal Dev

    05:30 PM – 05:45 PM

    Closing Ceremony

    More details and registration: http://devconf2017.k-mug.net/