Total Pageviews

Sunday, April 24, 2011

Five skills that can help software engineers stand out from the pack

Career Management

Five skills that can help software engineers stand out from the pack

Takeaway: Here are five core skills that can help you build critical competencies as a software engineer and help you stand out from the pack.

Last week I blogged about a CareerCast report that said Software Engineer was the hottest job for 2011. Many readers chose to blast me and TR for associating this job with low stress and I’d just like to say that it’s not like CareerCast came to me and asked me about the stress level. I was merely reporting what they stated as the credentials for the determination. But if CareerCast ever DOES ask me, I’ll tell them that they’re wrong. Judging by the reaction that blog got, I’d have to say that software engineers are fairly overwrought.

But back to business. If you read that blog and would still like to pursue a career as a software engineer or if you’re a software engineer who would like to know how to stand out from the pack, here are some tips.

Bruce Douglass, Chief Evangelist from IBM Rational suggests these five core skills to help build critical
competencies:

Electric Vehicle Mechanics: According to SBI Energy and J.D. Power & Associates, the electric vehicle market in the U.S. will double by 2020. As automakers upgrade the features in electric, so will the amount of software code in each vehicle. Students with knowledge and fundamentals on electric vehicles will be in better position to create complex battery systems, electric drive units and cabin electronics.

Probability and Statistics: Collecting, processing, analyzing and interpreting numerical data is key. These skills can be used to calculate the average downtime of a computer, evaluating the effectiveness of commercial products, predicting the reliability of a rocket or studying the vibrations of airplane wings.

Environmental Engineering: The green movement will remain a hot button issue for future engineers. Finding new ways to improve the environment, provide healthy water, air, and land for human habitation, and to remediate polluted sites are all important areas of expertise for students.

Engineering Economics: This skill is for any student with aspirations of one day managing a project. It is used to answer many likely scenarios, like: Which engineering projects are worthwhile? Which engineering projects should have a higher priority? How should the engineering project be designed? Etc.

Ethics: This skill goes along with well established fields such as medical, business and legal ethics. Amid pressure from recent events like the levies failing in New Orleans during Hurricane Katrina, universities are putting a higher emphasis for students to have a better understanding of ethical and quantitative concepts, as opposed to solely focusing on data and numbers.

Thursday, April 7, 2011

How to use LinkedIn strategically

How to use LinkedIn strategically















January 24, 2011, 4:07 AM PST

Takeaway: LinkedIn is a great tool for getting your profile out in front of potential employers. And with the addition of some new apps, it just got better.

I think a lot of people think of LinkedIn as just a more staid version of social networking. And I think the gainfully employed often neglect their LinkedIn pages in favor of its more scintillating cousin, Facebook. After all, would you rather hear who a former colleague is now connected to or read trash-talking among your Facebook friends?

Okay, maybe that’s just me.

The fact is, LinkedIn is a great tool for what are perhaps the most important aspects of searching for a job-networking and online presence. And with the addition of some new LinkedIn apps, these have become tasks have become even easier to do.

First of all, you can put your work profile up there for the world to see. While you still should send targeted resumes for positions you want to apply for, LinkedIn gives everyone a snapshot of your capabilities. So if a potential employer is just looking around before he or she even posts an opening, you’re out there. Here are some tips for using LinkedIn to its greatest advantage:

Avoid overused keywords just as you would on a resume

LinkedIn late last year released its top 10 overused buzzwords used in U.S. member-profiles. Avoid:
  • extensive experience
  • innovative
  • motivated
  • results-oriented
  • dynamic
  • proven track record
  • team-player
  • fast-paced
  • problem-solver
  • entrepreneurial

Take advantage of new LinkedIn apps

I found three apps that I think are invaluable:

WordPress

This app will synch your WordPress blog posts automatically with your profile. It offers a filtering option if you don’t want to share every entry with your LinkedIn connections-you can just use a special LinkedIn tag.

Events

The Events application adds a box to your profile that shows what events people in your network are attending. This helps you find events based on your industry and job function. You can sort by most popular events, search for events, and create new ones.

SlideShare Presentations

With this app, you can share presentations and documents with your LinkedIn network and upload portfolios, resume, conference talks, PDFs, marketing/sales presentations. If you’re really adventuresome, you can upload a video of yourself.

Wednesday, April 6, 2011

Mobile design and developement (free online book)

Data Structures and Algorithms with Object-Oriented Design Patterns in C#

Data Structures and Algorithms
with Object-Oriented Design Patterns in C#


http://www.brpreiss.com/books/opus6/

Building a Windows Phone 7 Application from Start to Finish

Building a Windows Phone 7 Application from Start to Finish

March 15, 2011

This documentation and accompanying sample application will get you started building a complete application for Windows Phone 7. You will learn about common developer issues in the context of a simple fuel-tracking application for your car named Fuel Tracker. This topic describes things you should know before you start creating your Windows Phone application.

Some of the tasks that you will learn include the following:

Audience

This documentation and accompanying sample application is best suited for developers with the following experience levels.

Some experience with:

  • .NET
  • C#

Little or no experience with:

  • Silverlight
  • Windows Phone

Avoiding Code Smells

Unless you are careful, a software application quickly becomes difficult to change. We all have had the experience of inheriting an application that someone else has written and being asked to modify it. Think of the fear that strikes your heart just before you make your first change.

In the game of Pick-Up Sticks, you must remove stick after stick from a pile of sticks without disturbing the other sticks. The slightest mistake and the whole pile of sticks might scatter.

Modifying an existing software application is similar to the game of Pick-Up Sticks. You bump the wrong piece of code and you introduce a bug.

Bad software is software that is difficult to change. Robert and Micah Martin describe the markers of bad software as code smells. The following code smells indicate that software is badly written:

  • Rigidity—Rigid software is software that requires a cascade of changes when you make a change in one place.
  • Fragility—Fragile software is software that breaks in multiple places when you make a change.
  • Needless complexity—Needlessly complex software is software that is overdesignedto handle any possible change.
  • Needless repetition—Needlessly repetitious software contains duplicate code.
  • Opacity—Opaque software is difficult to understand.

* Notice that these code smells are all related to change. Each of these code smells is a barrier to change.

Note

These code smells are described by Micah and Robert Martin in their book Agile Principles, Patterns, and Practices in C# on page 104. This book is strongly recommended!

Useful Facebook Keyboard Shortcuts

Here is the list of Keyboard Shortcut combinations which you could try in Facebook by using Firefox.

Shift+Alt+1 : Return to Home

Shift+Alt+2 : To view the Wall tab

Shift+Alt+3 : To pull down the Friends Requests list

Shift+Alt+4 : To retrieve the Messages list

Shift+Alt+5 : To call out the Notification list

Shift+Alt+6 : Account setting page

Shift+Alt+7 : Account privacy configuration.

Shift+Alt+8 : Facebook fans group page

Shift+Alt+9 : Facebook?s Statement of Rights and Responsibilities

Shift+Alt+0 : Facebook Help Center

Shift+Alt+m : Create new message

Shift+Alt+? : Cursor in the Search Box

Here is the list of Keyboard Shortcut combinations which you could try in Facebook by using Google Chrome.

Alt+1 : Return to Home

Alt+2 : To view the Wall tab

Alt+3 : To pull down the Friends Requests list

Alt+4 : To retrieve the Messages list

Alt+5 : To call out the Notification list

Alt+6 : Account setting page

Alt+7 : Account privacy configuration.

Alt+8 : Facebook fans group page

Alt+9 : Facebook?s Statement of Rights and Responsibilities

Alt+0 : Facebook Help Center

Alt+m : Create new message

Alt+? : Cursor in the Search Box

Tuesday, April 5, 2011

Pledge to QA

Pledge to QA :

I recently took some time to review the list of bugs we completed in the last year. I noticed that the majority of bugs found during development and entered into our tracking system were similar to this list:

  • “Change the dropdown list to be sorted…”
  • “Change the fields on the form to have the correct tab order…”
  • “Change the fields on the form to move and resize appropriately if the form is resized”
  • “Change this to be spelled correctly…”
  • “Change … to be consistent…”

Each of these items takes time away from our development in many ways:

  • for a tester/QA to recognize it,
  • for a tester/QA person to record it,
  • for a development team member to confirm it,
  • for a development team member to assign it a priority,
  • for a development team member to assign it to a person to fix it,
  • for the assigned person to make the change,
  • for the assigned person to mark it complete in the tracking system,
  • for a tester/QA to retest it after the next build  for a tester/QA to mark the item as done.

That is a lot of Project Management for items that are just the result of sloppy programming.  We should strive to reduce these cosmetic “bugs” from ever being included in code that is “ready to test”.

Here is my idea.  Create a pledge that a programmer makes to QA because these are not the kind of “bugs” that QA should need to waste time on testing and tracking. I don’t think this pledge should be formalized and signed by each developer. I hope that it motivates programmers to pass code along to QA only after it is free of cosmetic bugs.

Our team held a meeting to discuss the items on this list. I was surprised that there was little agreement about any items, even items I thought would be non-controversial such as sorting listboxes alphabetically by default. I only led the discussion, I did not try to dictate or persuade, and in the end, after much arguing back and forth, most our of programmers did come to accept most of the items on the list as best practices. I provide our list as a starting point. I hope you can suggest other items to add to it. I realize that this list is very similar to coding standards, but by phrasing it as a pledge, I hope to increase the adoption of these tenets.

Expectations from developer (I pledge to):  (This is a pledge a programmer makes to QA because these are not the kind of “bugs” that QA should need to waste time on testing and tracking)

  1. The code will not error right away for all users when they try to run it
  2. The messages visible to users will not have any misspellings
  3. The tab order on forms will be correct (reasonable)
  4. The first field to receive focus on forms will make sense (be optimal)
  5. When a form is resized, controls should move or resize appropriately
  6. Form colors should be consistent across forms.
  7. Form elements (button captions and placement) should be consistent across forms.
  8. Keyboard shortcuts should be consistent per policy
  9. Form icons and captions, including popup messages should be consistent.
  10. Don’t ask testers to start testing until all these above items are correct.
  11. Captions will fit on buttons, text won’t get truncated on screen.
  12. Code runs fast
  13. When you run my code, I would be surprised if you can find any “syntax” errors such as cases where null values were not handled
  14. If an error does occur, it will be gracefully handled with a user friendly message and helpful debugging details will be logged.
  15. If there are any conditions/scenarios I have not tested, I will let you know what those are. (I didn’t test on Vista, or against Oracle db)
  16. Error messages will be complete sentences.
  17. All data in lists will be in alpha order