Wednesday, July 9, 2008

Cranswick Computing

Cranswick Computing is a software development house based in Joburg RSA that specializes in creating custom written applications & systems for use in and around a SYSPRO ERP (Enterprise Resource Planning) environment. For more info please visit their site.

I worked at Cranswick from May 2000 to July 2006. I joined cranswick with no experiance and only an entry level COBOL programming course from Van Zyl & Pritchard. I worked on a contract basis while receiving training until may 2001 when I was made a permanent employee.

Adrian Cranswick, the owner and MD of Cranswick Computing, can be emailed at adrian@cranswick.co.za

SYSPRO is an internationally recognized, leading provider of enterprise business solutions. Over 12,000 licensed companies across a broad spectrum of industries in more than 60 countries trust SYSPRO as the platform on which to manage their business processes. For more information on SYSPRO please see here .

At Cranswick I was responsible for managing a team of up to 2 COBOL developers and 4 C#/VB developers working on up to 5 concurrent projects.

Skills summary:

  • Agile Development - At Cranswick we followed an iterative development life cycle (similar to XP/Scrum but no pair programming). Testing played an integral part but tests where not required to be written before code. The goal was to have fairly short incremental release cycles and to get customers and users involved as much as possible to identify problems with the requirements early on.
  • Project management & quality control - Not only was I involved in all aspects of the development life cycle from analysis & design to maintenance & support but I was responsible for managing a number of projects at any given time. Activities include task scheduling and planning, cost estimations and quotations, quality assurance and control, project monitoring and status reports, document and change control, configuration management etc.
  • Database design – I have had some experience using Visio to model business requirements using ORM (Object Role Modeling) but more focus on ER Diagrams and normalization to reduce redundancy. Would try to at least achieve BCNF (Boyce-Codd Normal Form) and where possible lossless join decompositions.
  • Conceptual Modeling – In most cases models where used as design tool during meetings between developers/analysts and not so much to record the requirements. A use case diagram would possibly be used in documentation to record the systems automation boundary and the suggested system architecture would also be shown in a model in the technical documentation. (ArgoUML)
  • C# - I have a good command of the language including Object Oriented design using classes, interfaces, inheritance, encapsulation, method overloading etc.Datasets & ADO.NET – I have worked extensively with typed & untyped Datasets & XSD schemas in connected & disconnected environments, Diffgrams, Get Changes, Merge & Accept Changes, Datagrid, DataGridTableStyle, DataTable, DataColumn, DataRow, DataAdapters fill/update, DataView, SqlConnection, SqlCommand, SqlParameter objects etc. Worked with Datasets from within the dataset designer and in code.
  • XML – Reading in Datasets from XML files and exporting Datasets to XML files. Manipulating & creating XML files in code using System.Xml namespace, XSD Schemas, generating XML strings to pass into Syspro’s e.net business object interface module B2B B2C.
  • SQL Stored Procedures – I have used stored procedures and views in DataAdapter Update, Insert, Delete and Query commands and as the source for crystal reports data. I have also written stored procedures for batch database operations using cursors, temporary tables and calling other stored procedures or user functions from within a stored procedure.
  • MS SQL/MSDE – I have worked with all aspects of SQL such as installing MS SQL, creating & backing up databases, creating tables with indexes and foreign key constraints, views, stored procs, user functions and complex queries with grouping and joins from Enterprise manager and from C# code DDL DML. I have made use of replication in a few projects.
  • Web Services – I have written a number of web services including one used to post sales orders from an Imate KJam phone and to automate program deployment & version control.
  • Assemblies – Automated deployment and version control was achieved by loading assemblies at run time. Used in conjunction with web services a client side RUNNER app, automatically updates applications (e.g. On a mobile phone) remotely as new versions become available on the server.
  • Crystal Reports – I have written many complex reports making use of grouping, sections, formula fields, parameter fields etc and some of the more complex features such as including sub-reports. I have incorporated many reports into C# programs using the crystal reports viewer. I have also manipulated reports thru code using the CrystalsDecisions namespace and produced a utility program that inspects a passed in report and automatically generates a GUI front end for report parameter input.
  • Data Conversions – I have performed many data conversions and worked with many data formats such as FLAT CISAM files(COBOL), text files, CSV or comma separated files, Excel, Access, XML, tab delimited etc. In most cases the goal was to import, convert & validate data from existing systems and finally transfer the data into SQL tables (Syspro ERP).
  • ASP.NET – I have had some experience developing web apps in ASP.NET but more in Java JSF & Java Studio Creator.
  • VB.NET & VB6 – I worked on an SMS driven call center system that was written in VB6 and used MySQL as its database. I have managed VB.NET developers and upgraded programs in VB.NET but prefer C#/Java.

Types of projects and activities include:

  • Customizing Syspro to meet specific client needs using tools such as Micro Focus Net Express (COBOL) and Visual Studio .NET (C#, VB).
  • Automate repetitive tasks within Syspro, for example receipting stock into a warehouse, by importing a excel file or using a barcode scanner etc.
  • Installing and Upgrading Syspro on client & server PC’s.
  • Conversion of data from existing systems using tools such as access, excel & MS SQL and importing converted data into Syspro data tables.
  • Integrating other software such as SMS systems, barcode scanners, weighbridge systems, mobile devices (ex. Sales order posting using I-mate Kjam phone), CRM etc. in to the Syspro environment.
  • Developing stand alone systems completely separate from Syspro using C# or VB to develop client applications, web services developed in .NET and MSDE/SQL/MySQL databases.
  • Create programs to import and export XML files for use with EDI systems to allow for business to business communications B2B B2C.
  • Generate complex reports and graphs using crystal reports.

I was involved in all aspects of each project spanning the entire development life cycle such as:

  • System Analysis & Design, Meeting with end users, supervisors and system administrators to produce the initial system specifications (fact finding interviews & document analysis).
  • Produce a formal system specification, estimate development costs & quote on the proposed system.
  • Produce a project plan & task schedule, record & classify the requirements, suggest options for various suitable architectures, partition the system based on organizational boundaries - data flow & data ownership, allocate tasks to junior developers.
  • Assist, instruct, train and manage junior developers and implement quality control procedures and standards.
  • Create utility functions, software components, guidelines and processes to speed up and simplify development thereby promoting software reuse, increasing efficiency, reducing errors and ultimately increasing overall quality.
  • Write, Deploy, test and debug programs.
  • Present demos of the latest software release outlining progress made and documenting user/customer feedback as well as managing the change control process. Produce estimates of projected cost increases as a result of required changes and adjust and manage the project plan accordingly.
  • Train end users and provide ongoing system support.
  • Produce detailed user & technical manuals and program installation guides.

No comments: