Personal statement

Hello. My name is Mohammad Ali. I was born in Tehran, the capital city of Iran. Commodore 64 programs and games sparked my interest in programming when I was seven years old. I started computer programming more seriously with Visual Basic 4 in 1997 when I was thirteen years old. I started web development in 2005 using C# and ASP.NET. I also learned using many programming languages such as Java, JavaScript, TypeScript, C++, Python, ... I have developed many desktop and web applications. I would like to work in companies that have positive impact on people's life.

Mohammad Ali Ghaderi


Professional Experiences

Software Engineer (internship)

Pioneering Programmers Inc.

Jul 2016 – Aug 2016

(2 months)

Summary
  • Developed a new framework using Entity Framework, TypeScript, Knockout and Azure (reduced %70 of their code)

"No technical interview is necessary," the manager said, "You will get paid based on your performance.” I thought, "I am a Rockstar! Challenge accepted!"

When I saw their current code, I realized that it could be improved significantly. In less than a week, I learned everything about their current platform, and I fixed two major bugs. I also had to learn TypeScript, KnockoutJS and MS Azure as their framework was heavily based on these technologies. In less than a month, I cleaned the whole code, added many new modules, and I reduced their 16-step development procedure to a simple 5-step procedure by automating many parts of it.

Result:

According to the manager, I delivered more value in a month than his previous team of four in eight months. He even threw the code written for another project away (seven months of work) and started from scratch based on my new framework. He could also hire a junior developer to continue their projects. I exceeded the manager's expectations overall.


Software Engineer (internship)

AMI Monitoring Inc.

Aug 2015–Jan 2016

(6 months)

Summary
  • Designed and developed a scalable database schema and data access layer in C# (using Dapper .NET) for storing and accessing Terabytes of ECG data in SQL Server
  • Provided three project work breakdown structure and time estimation
  • Prepared more than 200 pages of various software documents (Vision, Requirements, ...)

I got hired as a .NET developer in AMI Monitoring Inc. Their goal was to develop an ECG monitoring platform.

The management insisted on using SQL Server and C# for storing the ECG (time series) data. It was challenging because SQL Server is not designed for this purpose. I ended up designing three solutions that can scale well with terabytes of ECG data, and I implemented one of them.

They had a proprietary ECG interpretation algorithm in Matlab. They needed the FDA approval for this part. I worked with an FDA consultant to prepare the required software engineering documents. In addition, we needed to run the algorithm on both Android and C#. So, I suggested Atlassian products that work well in both MS stack and open-source stack. It was challenging because I had to learn BitBucket, Git, Confluence, JIRA,... Afterward, I prepared Android and C# development environments for all other developers. I also trained current employees and put the standard procedures in Confluence for future developers.

Testing of the algorithm was very challenging. Test data was more than 10 GB, and we should have it in both Visual Studio and Android Studio environments. In addition, the algorithm should get the same testing in both C# and Java. So, I put the data on a separate server and developed required libraries to simplify the work of test developers. I designed a test plan to make sure that the algorithm will get sufficient testing and will be identical to its Matlab counterpart. I also put an automated process to convert the algorithm and test cases from Java to C# and generate the required FDA documentation using Sandcastle.

During the design reviews and code reviews, I noticed that our Android team is not experienced enough for such a critical app. Thus, I learned native Android development after work hours every day, and I designed and developed the required architecture for data storage in Android. I also defined the required procedures for automated testing of the Android app.


Teaching Assistant (Ph.D. Student)

The University of Texas at Dallas

Aug 2012- Dec 2016

  • Designed, developed and deployed a Telemedicine disease management platform from scratch
  • Utilized various technologies such as ASP.NET MVC, Web API, OAuth 2.0, AngularJS, Bootstrap UI, NHibernate, Web Sockets, WebRTC, Cordova, Native Android, OpenCV, HL7, Amazon AWS and more
  • Prepared documents for installing Hadoop and developing Map Reduce and Apache Spark projects

I reached a point in my country that I considered as a ceiling; I worked in the biggest companies, and I contributed to several nationwide projects. My frameworks were used by major companies and were very successful, but I desired more. Therefore, I decided to continue my education in the US. I received a full financial support (TAship) from UTD for Ph.D. studies.

broadened and deepened my knowledge about Software Engineering and Computer Science during this time. I also picked a dissertation topic to become familiar with many new technologies and learn ways to speed up development of the software applications.


Software Developer (C#, ASP.NET)

Rayan Pardaz Kavosh

Sep 2009– Jul 2012

(3 years)

Summary
  • Coached a team of seven developers
  • Developed a RAD framework (C#, ASP.Net, and Ext.NET) with many features including a CRUD code generator, Role-based security engine, BI dashboard, Manual workflow engine based on Windows Workflow Foundation (WWF4), Report generator engine (StimulReport), exception handling, logging, transaction management and more
  • Optimized bottleneck SQL Server stored procedures for large reports
  • Contributed to design and development of several Management Information Systems (500+ tables, 10,000+ users)

I joined Rayan Pardaz in 2009. The clients of this company were several large organizations such as banks or telecommunication companies. They had a 3-tier architecture based on C# and Telerik ASP.NET components. I helped them to maintain their current projects. I found a beta version of Coolite (Ext.NET) library, I recommended using it for future projects. I worked closely with their architect to redesign and redevelop their framework from scratch with Ext.NET components. I also added many features such as a role-based security, BI dashboards, manual workflow management, etc.

The new framework was 10 times faster in many use cases and three times easier to maintain. Therefore, the management decided to migrate existing projects to the new framework. Interestingly, one of their clients canceled their current contract and signed a new contract to re-develop everything from scratch with the new framework.

In addition, I helped our junior to mid-level developers with debugging and optimizing their code. I obtained some management experiences here, too. I also helped the business analysis team with simplifying and designing complex parts. Furthermore, I presented our company products in several other companies for future contracts.

Result

As a result, not only the company saved thousands of dollars, it could get several new projects. The company also sold licenses of this framework to other companies and this became another source of revenue for it.


Software Developer

Raahbar Information Co.,

Apr 2007- Oct 2007

(7 months)

  • Contributed to development of a nationwide ASP.NET web for Iran Ministry of Commerce
  • Developed a SMS sender application to make a user-friendly notification of workflow states

Freelance – Contractor

Mohsoft

Sep 2001– Sep 2009

  • Designed and developed several web applications and a CMS used by several organizations
  • Consulted in developing a Document Management System
  • Consulted in database design for a Computerized Maintenance Management System(CMMS)

I started Mohsoft when I was a kid! My goal was to create a great software brand in my country. Mohsoft has many stories of failure, but it gave me a unique experience that I couldn’t get anywhere else.

In the beginning (2001), I prepared several CD packages and tried to sell it. I developed the first training CD for playing online games. I also developed a dictionary that became very popular among all my friends as it was very easy-to-use and could work well with the internet browsers. The CD Business was not successful as people could copy CDs easily and were not willing to pay for it. I developed a lock mechanism for CDs, but it didn’t help my business because the distributors were going to take %70 of the price. Selling the lock mechanism didn’t work as well because there were several companies that already dominated the market and had a good relationship with those large distributors mafia!

I started to make money by giving custom software development services. I developed several windows desktop applications using VB6, and I sold several copies of them, but the revenue was not satisfactory. Many customers were willing to buy a cracked version of similar packages, and it was very hard to compete with those free copies.

This motivated me to think bigger. I also started an online business to access the international market. I developed some shareware software packages and sold it through my website. I learned a lot of things about marketing, SEO, support,… in this business. It was a great experience as my applications downloaded more than hundred thousand times, and I had customers all over the world. However, the US sanctions ruined this business.

Afterward, I found websites are more attractive to customers. In addition, since they were able to copy the source code of web applications, they are willing to pay for it. I developed a content management system, and I got a partner to design web pages and sell websites to several companies. Some customers didn’t pay the cost in full, and the revenue was not reliable at all. The business was not scalable as I had to spend a lot of time preparing one website. Because of all these reasons, I decided to stop this business, and I started working as a full-time employee in other companies. I only gave consulting services after that.


Education & Certification

Ph.D. in Software Engineering

THE UNIVERSITY OF TEXAS AT DALLAS

Dissertation: A flexible software platform for disease management

Aug 2012 - Nov 2016


Master of Information Technology Engineering

UNIVERSITY OF TEHRAN

Thesis: A meta-search engine based on user pattern and feature fusion

Sep 2008 - Sep 2011


Bachelor of Scientific Applied Computer Software

Shiraz Islamic Azad University

Project: Designing and implementing a management information system for university labs

Sep 2002 - Feb 2008


C#, ASP.NET, JavaScript, Java

90% Complete (success)

TDD, MS Test

85% Complete

Amazon AWS, MS Azure

60% Complete (warning)

OOA/D, Agile (Scrum), RUP

70% Complete (danger)

Honors

Participation in the international RoboCup competitions

Graz, Austria - 2009

Ranking 7th in the Iranian university entrance exam of master educations

Tehran, Iran - 2008

Participation in the international RoboCup competitions

Bremen, Germany - 2006

Participation in Hellicup RoboCup competitions

Tehran, Iran - 2005

First place in Tehran student chess competitions

Tehran, Iran - 1999