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 !