Tuesday, November 4, 2008

Emotional Intelligence in SW Dev ---- 1

Yes, I must write on this topic now ... I have been planning to write on it for the last few days ... Since today I gave this blog url to Elli of JOBS-ICT, who also trains Soft Skills for IT Professionals .. now I have to write more on Soft Skills ... ;-) ...

Quotes from the notes of Ms. Elizabeth Soltis, Learning Resource Center, UNDP, New York
Emotional Intelligence is the intelligent use of emotions. It is about how people handle themselves and their relationships. It involves a set of competencies (skills, knowledge, behaviour) that enables someone to be aware of and able to manage self and others in a life-affirming way. Personal responsibility is the key in knowing that people have ownership of their emotions in making powerful choices.

The focus of "Emotional Literacy" is on regaining the natural ability to feel and use emotions wisely. This is the practice of "Human Development" from inside out !!

Personal Competencies

Self-Awareness
  • Emotional Awareness: recognizing and validating our emotions and their effects
  • Accurate Self-Assessment: knowing our strengths and limits
  • Self-Confidence: having a strong sense of self-worth and capabilities
Self-Management
  • Self-Control: managing emotions and expressing feelings appropriately
  • Trustworthiness: maintaining standards of honesty and integrity
  • Conscientiousness: taking responsibility for personal performance
  • Adapatability: thinking in constructive, balanced ways to deal with life's changes
  • Innovation: being comfortable with new ideas, approaches and information
Motivation
  • Achievement Drive: striving to improve or meet a standard of excellence
  • Commitment: aligning with the goals of the group or organization
  • Initiative: readiness to act on opportunities
  • Optimism: persistence in pursuing goals despite obstacles and set-backs
Relationship Competencies

Empathy
  • Understanding Others: sensing other's feelings and perspectives
  • Developing Others: supporting other's developmental needs and their abilities
  • Service Orientation: anticipating, recognizing and meeting client needs
  • Leveraging Diversity: creating opportunities by using different people talents and perspectives
  • Political Awareness: reading a group's emotional currents and power relationships
Social Skills
  • Influence: using effective strategies for persuasion
  • Communication: listening openly and sending clear messages
  • Conflict Management: negotiating needs and resolving disagreements
  • Leadership: inspiring and guiding individuals and groups
  • Change Catalyst: initiating and managing change
  • Building Bonds: nurturing relationships effectively
  • Collaboration: cooperatively working with others toward shared goals
  • Team Capabilities: creating group synergy while working on projects
Enhancing Our EQ Capacity

"What lies behind us and what lies before us are tiny matters compared to what lies within us."
Research shows that EQ skills are more important than IQ in determining personal effectiveness and success -- at work and beyond. This dimension of one's performance is critical to achieving any organizational goals. Daniel Goleman, the pioneer of EQ theory, states that EQ competencies are NOT innate talents, but rather learned capabilities that can be developed over time to achieve outstanding performance.

Personal Competencies: Emotional Awareness; Self-Assessment, Self-Confidence, Adaptability

Common Myths about Emotions
  • Emotions are stronger than me.
  • Others control my emotions.
  • I can't help my emotions. My emotions control me.
  • I have no control how I express my emotions.
  • All emotions must be expressed.
  • It is better to get out of my anger by venting. This relieves me of my upset.
  • Emotions are right/wrong/good/bad.
  • I'm supposed to feel in a certain way in certain situations.
  • Difficult feelings are bad and should be avoided. Emotions are my enemy.
  • It is inappropriate to express my emotions at work.
    Consider....
    • Emotions are our internal compass that points us towards actions which address our needs.
    • They serve as our barometer in letting us know how we are doing.
    • With this vital information, we are able to set healthy boundaries for ourselves.
    • Emotions help us to relate to others. They can also be alarms, motivating us to take action.
    • Emotions are fundamentally adaptive, acting as shepherds guiding us to safety and well-being.


Five Step Process in Managing Emotions Effectively : (Do NOT Skip Any Step !)
  1. Tune-In and Acknowledge
  2. Breathe and Allow
  3. Recognize and Identify
  4. Validate and Empathize
  5. Discern and Express
Common EQ Challenges / Opportunities
  1. Self-Responsibility
  2. Self-Esteem
  3. Trust
  4. Positive Attitude
  5. Dealing with Change
  6. Gentleness with self and others
  7. Patience
  8. Balance in Life
  9. Power / Control Issues
  10. Personal Commitment
  11. Discipline
  12. Letting go and forgiveness

Monday, October 27, 2008

Resume Writing Skill

Fresh Software / CSE Graduates in Bangladesh are usually "pretty weak" in Good & Focused resume Writing ... Here is a Great Resource on the Web for ALL...

Quote from the Linked Site :

""" The good news is that, with a little extra effort, you can create a resume that makes you stand out as a superior candidate for a job you are seeking. Not one resume in a hundred follows the principles that stir the interest of prospective employers. So, even if you face fierce competition, with a well written resume you should be invited to interview more often than many people more qualified than you.

The bad news is that your present resume is probably much more inadequate than you now realize. You will have to learn how to think and write in a style that will be completely new to you. ..."""

Learn More in the following URL ....

http://www.rockportinstitute.com/resumes.html


My generic (& informal) Mentoring Strategies

4 Generic Key Strategies that I usually try to implement while mentoring Fresh CSE Graduates....

A. Train to "Communicate"
("Write, Write, Write ! First Learn to communicate with your own self!")

B. Train to "Think Quality" ("Plan, Do, Check, Act ! Do Self-Planning besides the Project or Organizational Plans!")

C. Train to "Work under Pressure" ("Learn to work under "chaos" and "pressure" with "partial exposure" to real life Projects!")

D. Train to "Learn TDD in a selected Language / Technology" ("Learn to excel in design and development in a selected Language Technology with a Scientific Mindset using Test Driven Development Approach!")

Typical "Weak Spots" of SW Developers

I started my programming career with the "notion" that GUI is an "auxiliary" and "secondary" thing in any great software product. My mentor and boss was pretty "bad" in GUI and in the Look & Feel aspects :-(... And I also could successfully copy this weakness from him (I wish it implied that I copied all his great strengths ;-)..

With the legacy of a "Great Mentoring Tradition" most of my "disciples" also "inherited" that "Great Weakness" :-(... I am also surprised to see that most of our Computer Science and Engineering students also painfully lack this "User Interaction" Focus ! I often hear this statement: "I am now doing boring Forms or Reports Design!" Yes, s/he has a point: "since I am NOT a GUI designer, so I should not be doing this".

But another stronger point is, You simply can NOT ignore the importance of GUI (Graphical User Interface) and its implications. You HAVE to train yourself to have the "eye" and "skills" for consistent GUI Design and Development. So even a "one pixel error" should not miss the eye of a skilled Software Developer. And I am very convinced (from my own early-career-mistakes) that it can be learned, and it is mostly a matter of attitude and giving importance and priority like other programming and software design skills.

I have also observed that fresh developers are NOT well-oriented with practical SQL building skills for RDBMS (Relational Database Management Systems) and Database Table Designs. May be in the Universities / Colleges, the algorithm-focused Computer-Scientist Professors do not take a lot of interests in the "not-so-exciting-proven-relational-algebra thing". But it is very important for almost all practical business applications.

Performance Issues also take a back seat for most fresh software developers. Surprisingly, many business applications developing software companies in Bangladesh also do not demand it from all its beginner developers. The usual notion is: "Build something first real quick, and then we will see what we can do to improve performance later". Not a bad thing to start with ! But in this process, often the needed "measurement mind-set" gets lost :-(... We can not manage something, if we can not measure that.

Have you "really tested" your code ?
"SURE. I ran it 10 times !" ---- This is the typical answer from most Software Developers !

Can you "scientifically prove" that your code works ?
"WHAT ??. What do you mean?" ---- We might be up for a fight now :-(... The ego gets hurt here !

Quite often the Software Testability Issues are NOT addressed properly by most Software Developers, Managers, and even Users ! In most other engineering and scientific professions, there is always the concern for "proving something scientifically with data and validations" ! Software development as a nascent profession is still largely free from this obligation ! But those days are quickly passing by !

A World Class Software Development Professional MUST be able to "scientifically prove his thoughts with real data and validations". This may start with the UATCs (User Acceptance Test Cases / Criteria) and followed up by the STCs (Software / System Test Cases / Criteria), ITCs (Integration Test Cases), UTCs (Unit Test Cases). A Software Developer / Designer / Programmer must write thorough and useful Unit Test Cases to build the blocks for a thorough scientific scrutiny of the full software product.

In this constantly changing user and technology environments, a well-built Software Testing Scrutiny System (where everything can be programatically verified and validated) can act as great health checking, measuring and metering devices as found in other sound engineering disciplines. Test Driven Development (TDD) and Agile Methods are not just some fads or fashions of modern time. They are the needs of the current time, and should be used with the true spirit.

Soft Skills for Software Engineers -- 1

Soft Skills for Software Engineers are VERY CRITICAL skills to produce quality software and grow up the career ladder !! In fact, these are always essential in ANY profession, per se. But since Software is more of "Thought Product" with all "soft-ness" so Soft Skills are more important in this profession than others.

Why learn soft skills ?
Google Search Engine found 189,000 matches (on 2nd Sep, 2008) for “Soft Skills for a Software Engineer”
Employers often get biased towards “Attitude” rather than “Aptitude”
SW Engg is essentially “SOFT” :-)

Soft Topics

1. TEAM Collaboration Skills

2. Thinking Skills

3. Creative Skills (6 THT)

4. Time Management Skills
4.1. Meeting Management Skills
4.2. Write Everything !

5. Communication Skills
5.1. Interpersonal Skills
5.2. Self-Reflection / Introspection


6 soft skills for every hard-nosed professional

1. Interpersonal skills

2. Team Spirit

3. Social Grace

4. Business Etiquette

5. Negotiation Skills

6. Behavioral Traits, such as:
6.1. Attitude,
6.2. Motivation, and
6.3. Time management


Soft skills “hard-wired” ?

a. Like you learned brushing your teeth at childhood :-(…:-).
… yes, … how many of you Brushed your teeth today ? ALL ?? … right !!
I hate dirty-teeth-ugly guys / gals :-(

b. 40-days continuous practice makes it a habit :-).
…. Yes, remember … the Islamic ritual of 40-days … if you want to make something a habit .. PRACTICE IT RELIGIOUSLY for 40 days without any break ….

c. Write ! Write !! Write !!!
.. Yes … Our STRONGEST Memory is WEAKER than the WEAKEST INK … !!! Use Hard-bound fat “ruler” Notebooks

d. Use Hard-bound fat “ruler” Physical Notebooks :-).
Yes … I have researched it for about 10 years … and yes, it WORKS !!!!

e. Hear WIIFM Radio … :-).
... Yes, we ALL get TURNED ON when we CLEARLY see “What’s In It For Me” WIIFM .. We ALL love this ….FM Radio … so much

Download the PPT slides for more ....

Monday, October 13, 2008

6 RM TEAM Skills

The Six Requirements Management TEAM Skills are following:

1. AP: Analyzing the Problem
2. UUN: Understanding User Needs
3. DS: Defining the System
4. MS: Managing Scope
5. RSD: Refining the System Definition
6. BRS: Building the Right System


The Five (5) Steps in Problem Analysis are following:
1. Gain Agreement on the Problem Definition
2. Understand the root causes - the problem behind the problem
3. Identify the Stakeholders & Users
4. Define the Solution System Boundary
5. Identify the constraints to be imposed on the solution

Software is a TEAM Sport

Yes, Software is a TEAM Sport !

Well, what is NOT a "Team effort" now-a-days ? Thinking, Dreaming, Writing, Blogging are not TEAM-works ;-)...But TEAM can play a great role in these "lone-player games" !

So possibly anything useful in these crazy constantly changing days needs to be a TEAM-work ! And what is the essence of a TEAM ?

T: Together
E: Everyone
A: Achieves
M: More

Yes, In a TEAM, Togther Every Single Person Achieves more than what s/he could do alone. That is the bottom-line of any TEAM-spirit ! If any person feels his value or ROI (Return On Investment) gets hurt or lowered after joining a TEAM, s/he immediately withdraws himself (or herself) mentally from the TEAM ! Bcz, all our popular FM Radio Channel is WIIFM (What's In It For Me) :-). And without the hot WIIFM music, we soon turn cold :-(.. Any TEAM hardly enjoys a "cold-body" without a "warm-heart" ;-)...

The old heroic-Herculean days in Software are gone ! Yes, SUN's Chief Scientist Bill Joy wrote the first VI editor in one night ! And that was a great heroic effort ! But surely it was Great TEAM-work which made the later VI editor versions ! And also the evolution of Open Source TEAMs / Communities contributing to Great Software Products like Linux, TomCat, JBoss, and so on ...

In almost all useful software products, the combined Thought-Works of all the Developers, Marketers, Testers, Users, Customers, and all related Stakeholders play the pivotal role. And they MUST work as a TEAM ! And only those software products really excel, in which all these TEAMs took those as Great TEAM Sports !!

So, I call a Software (a really good one) a Great TEAM Sport !

Software is a Thought Product

Yes, Software is a Thought Product !

Then what is NOT a Thought Product ? Can you name one ?

NO .

Everything that we can create, MUST exist in our Thinking Space first, then ONLY we create that, even centuries later ;-) ... Look at Leonardo Da Vinci's Great Thoughts and Imaginations !!

Yet, I call Software a Thought Product emphatically and want to characterise IT as more of a Thought Product than any other human artifacts ! Essentially what happens so frequently in most software development projects and its associated digital space that any software is greatly shaped and reshaped, (... re-shaped, again .. and again..) by the Mutual Thoughts (and lack-of-thoughts ;-) of the Developers, Users, Customers, and Stakeholders ...

So I call it a Thought Product !