Vision and dreams are the blueprints of soul and achievements.
-Mohammed Ahmed F

Showing posts with label Tip. Show all posts
Showing posts with label Tip. Show all posts
10 Rules for Developers to learn English

10 Rules for Developers to learn English

Today's world is about distributed teams across the globe. A team member sitting in the Indian Silicon Valley or a software company of the financial capital of India might be reporting to a manager sitting in Microsoft Headquarters in Redmond, Washington (a suburb of Seattle, Washington, USA). This is almost as if you have traveled around the world. Hence, long-distance communication has become prominent over the last couple of years.

How it matters

But I am technically strong, so how does it matter to me?

Well, if you are really interested in moving up the career ladder then communication is the key. For instance, if you want to be promoted to be a Tech/Team Lead then good communication skills will help in the longer run.


Good communication demonstrates good leadership skills and so helps you to pave the road to new roles and responsibilities. Would you like to send a software architect to a client or listen to him on the phone when he can barely communicate; would you like to work with a team/tech lead or on-site coordinator that can barely explain what the client wants? I am sure not. 

Why English has become so important

Do I really need to explain that? If you are reading this article of mine, then you are in the same boat as I am. In other words, the software development field. English is a global language to communicate with anyone whom you don't know how to connect with. Besides, if you are planning to travel, work abroad, deal with higher management in your company and pave your road in a highly competitive society then a good command of English is like “Cherry on the Cake".

Many deserving candidates are rejected every year for a USA visa (H1B, L1B even studying abroad) in their interview because they can hardly communicate well and can't impress the consulate person who is interviewing the candidate.

Consider that, even for technical interviews, how to express that you are a good candidate and understand the technology. That time is gone when you can cram for the questions and spit them out to the interviewer. The trend of interviews has changed. For instance, now people don't really ask the difference between “Abstract class and Interfaces”. Instead, they will ask you a scenario where you choose to implement an interface instead of an abstract class or vice versa. Even, based on your project description they drag you into a totally un-imagined situation and ask for your views. Such just-in-time situations and scenarios are hard to cram for, or even prepare for. So you end up sharing your thoughts or thought processes during the interview. Do you feel little sweating in your palms or forehead?

Techniques to develop good English communication skills

So what's the technique to have good English communication skills?

The following is the Rule of Thumb as it applies to those candidates whose Mother Tongue or Native language is not English, just like me.

Don't panic about or fear English communication; rather work on it. I can share how I (a small town's boy of Hindi medium from northern India) made it possible. 

Rule #1: Focus on learning English grammar to strengthen the fundamentals. If there is a need to improvise your English grammar then work on it for some time and the remaining can be learned by listening and speaking with others. Here is a good E-Book to strengthen the fundamentals from the basics to the extreme expert level.

Rule #2: Don't focus on accent (American, British and so on) immediately; instead focus on grammar for the correct usage or words and accurate sentence formation. Accent will come automatically later when you work with people across the globe and have developed a good grasp of the language.

Rule #3: Your skills building, in other words learning, must be by using English only. For instance, I see some people prefer to learn technology in their native language. I don't understand how learning .NET or any other topic will help you better in your native language, because most of the terms are English only; C#, CLR, Framework, Language, Compile, Code, Debug and so on. So why to worry so much for some of the plumbing or the gluing together of words in the middle to make sentences.

For example, if I need to learn what is .NET then what is it you won't understand in: “.NET is a platform and framework that allows you to build applications using many .NET compliant programming languages and even deploy and run those on many non-Microsoft platform OSs”.

I am totally against the reading of novels and so on to build an English vocabulary. Instead, start a book of your choice on MVC, .NET, C#, ASP.NET, WCF and so on cover to cover. Yes, cover to cover; you read that right, from the About the Author to About the Technical Reviewer to the Acknowledgement, Dedication and so on and the chapters of your choice. I guarantee that the first few sections has much to teach you about general-purpose English communication. So your time is better invested into building your skills with books of your areas instead of reading a 1000 pages fiction novel like Harry Potter, especially for this cause.

However; if you wish to read a book other than for your technical benefits then reach out to me, I can guide you to some good books that might be helpful in various ways.

Rule #4: Listening is very important. When I was in college I heard people saying that listening to English songs will help you to learn English; well to be honest I never found time to double up my efforts to listen to English songs and then learn my study topics in English. By the way, I also don't recommend listening to English music and trying to read English material at the same time; it could turn out to be pretty messy, especially at the beginner level.

So listen to some of your favorite speakers for the topic of your choice. Listening causes great learning, especially in terms of the usage of words, sentence formation, accent, pitch, pace, sound quality and so on. My YouTube channel MyPassionForDotNet has a couple of videos from 10 minutes in length to 2+ hour-long sessions. 

In your free time, even listen to the people in your office, market, shops, conference calls, elevators, parking and so on. 

Rule #5: No slang language; say “Yes”. I have often seen people saying “yeah” “bro”, “You know after each line”, “cool” and many more terms. Well, I suggest always say “Yes”; believe me this has an impact on your way of building skills. When you are good with English communication then an occasional use of yeah is OK. Basically, this puts you into a habit of strictly respecting the core of the language and also teaching your tongue what to utter, which is very important.

Rule #6: Hang out with the right people. If you know someone that can help you to polish your communication skills then find such people if possible. Well, I was not able to find any because I grew with people like me but time has changed. I am sure you might have someone around you.

Rule #7: Think big, start small. If you are in a discussion then start whatever you can using English and see how far you can go. Anyways, in our native land we speak in a mixed mode (some English and some native language) so instead you should focus on speaking only the English part and as precisely as possible.

Rule #8: Go slow. I have observed many people think that good English communication is all about speaking fast. Actually, that's a myth. I have earned a large amount of my professional experience working outside of India with people from various English speaking continents. One thing I have found common in all of them is that they speak slow, soft and clear. 

Rule #9: Pronunciation, when speaking no matter what language you are using, the way to utter a word is very important. It becomes very important when you speak in English. Here is a great pronunciation tool to help you learn how a specific word is pronounced. 

Some examples; I would like you to try and see what you thought was and actually how these must be pronounced. For example Scythe, calcium, pronunciation.

Rule #10: Get away from your native way of pronunciation. Our native place (town, city, country) has a huge impact on how we learn how to pronounce a word; many times we continue to speak the same way, but with an associated cost with that approach. If you have been speaking incorrectly then it can take a while to practice speaking it right.

For example, most of the Indian people, even Doctors, pronounce Calcium as “Cal-Shi-um” but actually there is no “Sh” sound in it. It's just a very small example of how our native culture has an impact on our way of speaking. Many people have the tendency to add the sound of other letters when speaking something. Try again how most of the people say “Pronunciation” and compare that with the tool I referred to in Rule #9.

Such issues can be fixed with caution, awareness, and practice. There is nothing a human mind can't conquer or achieve. 

So let's summarize the rules:

Rule #1: Learn grammar for better English communication.
Rule #2: Don't focus on Accent immediately
Rule #3: Learn technology in English only; strictly books, audio, video and so on
Rule #4: Listening results in great learning.
Rule #5: No slang, use words that reflect a respect of the language.
Rule #6: Right company, connect with people who speak good English.
Rule #7: Think big, start small.
Rule #8: Speak slowly but steadily and you will win the race.
Rule #9: Pronounce correctly; this is impressive in its own way.
Rule #10: Go global; to some extent, get away from your native tongue and pronunciation.

10 Mistakes done by the developers

10 Mistakes done by the developers

Learning from the top 10 mistakes developers make

I present to you a list of a few common mistakes new devs (and sometimes even experienced) usually do. I believe that learning from these mistakes would be of some help to you. So, here is my pick of the Top 10 mistakes.


10. Trusting user’s input
Never trust the inputs provided by the end user. Also don’t blame them, mostly they do it unintentionally. We all make mistake mistakes. This might not be of great concern to them but a piece of bad data could potentially bring down the application or cause compliance-related issues. Apart from naive non-technical users we also have users with a certain level of technical know-how which they could potentially use to circumvent the system and get their work done. These are the users who pose a threat to your application and application needs to be safeguarded against the malicious activities.

The only option to save from landing into trouble at a later stage is to build a strong validation with self-explanatory and human understandable error messages. Cryptic messages hardly help the naïve user accomplish any task. Validation should be done in both user interface and database level just to be sure that even if by some means front-end validation was turned off the application still does not accept trash values.

9. Manual unit tests
Code changes that you do, needs to undergo unit testing and further rounds of Quality Assurance testing. All tests or at least a few minimum number of tests need to be done to ensure that the changes you made in one unit of code do not have side effects on the others. This is a necessary evil. Having automated unit tests and integration tests save you a lot of manual efforts in validating side effects of the changes.

8. Skipping documentation
The evilest thing that you can do is skipping documentation. Off course you can read the source code and try to understand the functionality. Reverse engineering the functionality from the code is a daunting task. This is good enough for a tiny functionality but definitely not a go for the entire application.

"Requirement changes, code changes and more frequent - members of development team change."

Knowledge about the application might not be transferred 100%. Sometimes people just forget. You need not create dozens of documents, create only a few like requirement specification and technical document and make sure to keep them updated, this should be a part of a stringent process which needs to be followed at any cost and must be accommodated in the project planning. This would help at later stages when the application is in support/maintenance phase.

7. Forgetting about Audit and Error logging
Not all end user/stakeholder would be bothered about cross-cutting concerns like audit logs and error logging. A stakeholder would simply come with a one-liner requirement which you would have to drill down till it becomes good enough to work on and deliver a solution addressing the stakeholder’s problem.

Data change audit and error logging might never be a part of user’s requirement but is implicit that it needs to be maintained. One fine day user would simply approach support team and ask them to provide data related to access and roles or some business critical data required for compliance or audit purpose and then you would have nothing to share.

Error logging is also crucial, you might do defensive coding but you never know what might fail in such cases effective error logging comes in handy. Monitoring error logs and trying to work on resolving recurring error would help in making your application more stable.

6. Careless use of privileged access
First and foremost, full control and access should never be provided. The system cannot protect itself from malicious activities if you leak the superuser or privileged account passwords. Risks involved in the reckless usage of privileged access should be a part of learning for inexperienced new members of development or support team. There might be times when you would have to make a modification to production database and having privileged access can lead to many issues.

“With great power comes great responsibility”

I remember once unintentionally deleting data from the master table and the query was auto-committed. I went cold but soon realized I had taken backup of the data, phew! It is always good to provide limited access for data modification via an interface which keeps data backup. One should also note that this tool should also be capable of doing bulk operations, else you will find yourself doing manual updates for a very long time.

5. Configuration menace
Scattered configurations in different files and database is a menace. Change in a configuration which affects multiple applications would have to be replicated in many files and databases. This probably is not much of an issue if you have a handful of applications but would soon become an overwhelming task when you have hundreds of application in an enterprise environment. Moreover, naked passwords in config files are yet another threat. If configurations are database driven then it reduces the later hazels also safeguards sensitive configuration entries.

4. Hard-coded time bomb
Hard coding values in the program are definitely a bad practice. Strange issues could occur because of the hardcoded value which silently sits there in your source code. One such incident is when you make use of hard-coded values for some maximum number, assuming that the maximum will not be hit. Such cases could take months or years to raise an error. Combined with no error logging and you will be in a very bad situation. Try to avoid hard-coded values. Move them to configuration variables if needed or try to completely avoid situations which would require them.

3. Prevent Burnouts
Working continuously without any breaks will just lead to burnouts. You should always take breaks at regular intervals. When you are overworked even doing simple things take a whole lot of time.

Set small achievable milestones for yourself and don’t forget to reward yourself for it. Chocolates, cakes, quick games just about anything that makes you happy and feel free. Learning how to prevent burnouts will make you more productive.

2. Code / Suggest for building resume
Having a strong resume with a listing of all new technologies is great but don’t just do it for inflating the resume. Learn them but use them only if you see the benefit and high maintainability over the existing things. Sometimes adding new tech options would not even be required.

Increasing the complexity should at least pay off in providing ease of maintainability. So I strongly believe that when you suggest some solution, check if it makes the application easy to maintain and makes everybody’s life easy.

1. Finding comfort zone in just one technology
Being a ninja in one technology is awesome and is always beneficial. But don’t stay limited to one technology. Try to expand your knowledge, sure there is a learning curve but challenging yourself helps you become a better technologist – a person who uses various technologies as effective tools and provides business enabling solution.

Times change, technology may become obsolete but your learning should never stop. Always try to explore new technologies and try weighing the pros and cons before using it as a solution for solving a problem.

I would like to hear about your views on these points. If you have any experiences to share, go ahead and post a comment. Remember…

The only real mistake is the one from which we learn nothing. ~ John Powell

This article was originally published on Skill Hive Blog
Free Aptitude Test Practice resource

Free Aptitude Test Practice resource

Folks,

It was a pleasure to add PracticeReasoningTests to our Aptitude Practice Website List upon request to add, from Mr. Edward Mellett, Founder & CEO of PracticeReasoningTests.com






It is always our pleasure to add and recommend free resources for the betterment of the student's fraternity.

PracticeReasoningTests.com

-Admin.