Welcome to MSDN Blogs Sign in | Join | Help

Africans @ Microsoft

Sharing our passion for technology
The Life of a Software developer at Microsoft

You wake up late in the day and rush into a scrum developer meeting to update your status on the current project to your team members often arriving late and surprising others that you just made it at last. A developer (SDE) friend will then ask about the LINQ code that you wrote last time, a tester (SDET) asking what changes you last made that broke the UI automation code, a Program manager(PM) asking you how much the risk is in meeting the deadline you committed before, your developer lead talking about the amazing project and actively watching how he could cut out newly arriving requirements to avoid an ever changing design. Jumping from one meeting to another meeting, trying to deliver the design documentation and arguing about which technology to use for the project, going through a bunch of code reviews in late afternoons and squashing active bugs with focus after flying around the kitchen area (to stimulate the self with a Starbucks caffeine) are the day to day activities of most developers at Microsoft.

Microsoft has so far been a place where one could say with a full mouth that they have had a United Nations meeting; thanks to the great diversity with colleagues coming from all walks of life and culture. If you pick one team randomly, it is highly likely that it has people coming from all continents. It is possible that an African developer works with a Chinese tester on a project that is being managed by an Indian whose code review is being done by an Australian and whose manager is from Europe and all reporting to a group manager from Latin America. That is the composition of most teams at Microsoft in different order. This diversity makes it fun to work here and enables everyone to feel at home at anytime, either in the team meeting or during lunch time. Despite such cultural differences and all kind of differences in the work place, one thing that glues teams together is the desire to solve problems and come up with a solution that satisfies the basic requirements of our customers.

Basically the life of a developer starts with a problem for a new project and/or a list of active bugs and new feature requests to an existing project. Developers usually prefer to work on a new project for it brings with it the flexibility of using new technologies and the possibility of knowing the details of the whole project first hand. The start of the project is where the fun is with so many new ideas flying around, going through a list of ideal designs to be downgraded to workable pieces as time goes on. Once the design starts, the managers will be hitting hard to get the developer estimates of the whole project. For the developer, the costing is an art for it is hard to determine the complexity of the whole piece and requires at least a draft design documentation showing the various pieces along with their level of complexity.  With small to medium sized projects, it is even tempting to forgo the design piece and start coding from scratch and write the design documentation on the go.

Once the project is in development mode and the focus is on, it is tempting to finish the whole thing and get over with it even though it is unrealistic. That is when developers start staying late in the office and arriving late in the morning scratching their head and thinking about the problem they could not fix last night. The focus to work on the new features almost consumes the whole time, and sometimes forces the developer to bypass some of the key deliverables in software development cycle, one of the most famous being "Unit Testing". A very good and experienced developer who thinks about having less trouble fixing bugs in future always starts working on his unit tests along with the main code base despite the overload. The payoff for this approach starts to come when lots of change in design starts to be introduced and all the unit tests start to fail signifying pieces of code that require developer’s attention. Had it not been for the Unit Tests, changes introduced late in the development cycle might create a lot of semantic bugs that could not be caught by the compiler or the human eye for that matter, and are very hard to find easily.

No matter how big a project is, the code base of the first iteration is usually a throwaway. It is from this throwaway code that the developer will learn a great deal about the system under development, it is from this throwaway code that the current design will be reassessed to come up with a better one with good and “lasting” modifications, it is from this throwaway code that some unclear requirements will start being more clearer. It is at this stage when the developer feels at ease and has an idea on how to approach the problem and when it is possible to deliver the basic deliverables.

Once the software is developed and all feature requests are implemented, it seems like the work is over for the developer, "the beginner developer". However, having all features working is the first deliverable. At the same time, more deliverables are expected to be worked on at the same time and be delivered. Developers are expected to produce an extensive unit test that has a very good code coverage (around 70%) which by itself is a big code base comparable to the main code under testing and is easily runnable in one box despite the complexity of the system. An automated deployment MSI (engine for software installation) for deploying the solution is another deliverable that is expected as part of code complete. A solution without a means for monitoring the health of the application once in use is not a complete solution hence developers are expected to provide SCOM (System Center Operations Manager) packs (or MOM (Microsoft Operations Manager) packs) that will alert the users of the application when something goes wrong.

So the work of a developer is as much stressful as it is fun, it is as much joyful as it is frustrating when a though out solution to a problem does not work out forcing the developer to go into thinking mode the whole time before and after work. Development as described above is more than providing a solution, it is about providing a very good solution, that is easily testable, predictable, monitorable, and deployable. This has been my observation so far in my short stay at Microsoft and I continue to learn new processes.

Pursuing an MBA

image

 

 

 

 

 

MBA Speaker Panel hosted on Campus - Spearheaded by our VP for Membership Development, Chika Ekeji, Africans at Microsoft recently sponsored a speaker panel on our corporate campus entitled, "Pursuing an MBA – Motives, Value, and Opportunities." It was designed to be a candid discussion with business school admissions and career services people, current students and MBA graduates on a range of topics, including:

  • What it really takes to get into business school;
  • How to best employ time as a student to position oneself for the right job;
  • What opportunities exist at Microsoft for MBA graduates;
  • How experienced business leaders view & value the direct impact of the MBA on their careers;
  • The real tradeoffs/considerations one should be ready to make in pursuit of an MBA; and
  • The importance of professional networking.

imageThe event was well attended, with over 150 people in the room and another 50 or so dialed in from remote locations. Many of our diverse communities were represented, with members of our Blacks at Microsoft, Indians at Microsoft and Chinese Employees at Microsoft diversity groups joining us to learn about business school options.

We had representatives from some of the best schools in the country, including Harvard Business School; Sloan School of Management at MIT; UC Berkeley; University of Washington; Kellogg School of Management at Northwestern and Wharton, among others.

Speakers included business school representatives as well as Microsoft employees who had, or were studying an MBA - one of our panelists, Shola Aluko, discovered a new career path through his MBA. You can see a video of him here, as one of our Senior Product Managers for Internet Explorer.

imageSee the attachment to download a PDF file containing the full transcript and panelist information:

After the panel, attendees practiced a core MBA skill - networking - getting to know people from different business groups and inundating panelists with offline questions. All in all, it was a successful event and much value was derived by all who attended - thanks to all who volunteered, attended and participated!

image      image

Choice and Impact: Going Red

Did you know that your choice of a PC can dramatically improve the lives of people living with AIDS in Africa?

Windows® has partnered with Dell™ and (RED) ™ and the result—(PRODUCT) RED is one way you can help people living with AIDS in Ghana, Swaziland and Rwanda.

The purchase of any (PRODUCT) RED branded item means the company selling that item makes a contribution to The Global Fund to help eliminate AIDS in Africa. By choosing a (PRODUCT) RED PC running Windows Vista Ultimate (PRODUCT) RED, you are driving a contribution of between $50 and $80 (depending on which PC you buy) to The Global Fund. That money goes towards fighting AIDS. Put in perspective: $80 is 6 months of antiretroviral drugs for someone suffering from AIDS.

DELL AND WINDOWS ARE PROUD PARTNERS OF (PRODUCT) RED.

Performance Testing

 

The thing about performance, even if it's only an illusion, is that it is a celebration of the fact that we do contain within ourselves infinite possibilities.” By Sydney Smith

Software performance has been one of the challenging topics that I am continually expressing interest in; that is why I was very excited joining the CLR Performance Team at Microsoft Corporation.

So what is so interesting about software performance? I find it challenging because of the different breadth and depth levels you have to touch in order to understand and define the performance characteristics of a system. Needless to say that what is even more challenging in performance is the ultimate feeling of success when you see your own application loading / running faster, consuming less memory, and more responsive

Perhaps it is a human nature to explore and push the limits of the system, like designing supersonic airplanes or “disappear before blink” carsJ. I think designing high performance applications is the beast that lies within each software developer of us.

This blog will be an effort to free that beast out, it will be a modest effort to touch on performance engineering topics and how to explore, test and enhance the performance of .NET applications.

The success of this blog will be really based on the readers’ feedback, I will try to capture the feedback and touch on their interesting topics. I would be more than happy to provide assistance and recommendations for any customer scenario. Just feel free to ping me and use my processing cycles

Today’s blog will be addressing the general performance metrics that most of us should think about before evaluating the performance of the system.

So let me ask you the following question, what are the performance metrics you are tracking and measuring in your application?

The answer to this question is not as easy as it seems, the answer will always be: it depends on your application and what it is intended to do.

For example if your application is a server side component you would be more interested to track different metrics than for a client side WinForms application.

But software components share certain performance characteristics like:

1- Startup time performance: The time your application takes to completely load into memory and starts executing the Main Method.

2- Working set: Defined as the amount of memory your application consumes. This memory is code / data. Data could be static or dynamic.

3- Throughput: number of iterations / operations per time unit, the more the better.

Basically performance investigation will fall on one of these three factors.

During the next posts, we will discuss each one of these factors, how to optimize them and more importantly, how to troubleshoot and investigate performance problems in these areas.

Well, enough for now (considering this is the first post ) and will see ya really soon with more posts.


Cairo Microsoft Innovation Center (CMIC)

Recently, I attended a session about CMIC

At first I was very happy about the fact that Microsoft is making serious efforts in the Middle East regarding research, so I went to know more about it.

Dr Tarek el Abaddy (CMIC director) was our host during the session; he walked us through the main objective for the research center, currently active projects, and CMIC vision.

One interesting thing I learned in this session is the difference between Research, Applied research and product development, basically they resemble the following triangular diagram

                                                             Research Triangle                     

In my opinion The essential difference between applied research and academic research is that, while academic research is very focused on theories , applied research is focused on the application of theories through technologies, or like what I prefer to call “Making science and the market meet”

Applied research seems to be a very logical choice to begin with in the Middle East for two reasons.

                First, we are in need to bridge the gap between science and the market. Though we have a very good software engineers in the Middle East and Africa we lack true research activities as those found in Microsoft research centers.

                Secondly, applied research is easier to manage and to make successful given the fact that we do not have renowned universities like Berkeley and MIT. However, with applied research,  a new horizon is open to compete with such great universities.

I am very excited about this opening and hoping for great success and potential added values to the Middle East and Africa through this center.

More innovation, more creation, more challenges …

For more information please have a look at the following link J

http://www.miscrosoft.com/middleeast/Egypt/CMIC/

 


Our mission

The Africans at Microsoft group (a.k.a. Diversity Advisory Council for Africans at Microsoft) is an association of full time Microsoft employees who are of African origin or have an interest in Africa. This organization is dedicated to supporting the African community at Microsoft by providing initiatives related to technology that advance African prospects through promoting our cultural diversity and providing a medium to communicate within and outside Microsoft.  We strive to uphold Microsoft’s mission to enable people and businesses to realize their full potential in the African community at large.  

Page view tracker