Today we were joined by two guest presenters: Mr. Joseph McClean and Mr. Alan Emtage who spoke on software design patterns and solving problems with code.
Mr. Joseph McClean, also a Barbadian attended the UWI. Joseph is a C# specialist with over five years experience in enterprise software development specifically in the financial services sector. He is currently a developer at Openlink Financial based in Houston Texas, where he develops software for the Oil & Gas Industry.
The Road to Archie – with Alan
Alan was a young systems administrator working at McGill University’s School of ComputerScience when he created Archie. Here he was responsible for locating software across the internet which was stored across the network in FTP archive sites.
Upon realizing that he could perform this task in an automated fashion, he wrote C shell scripts which would execute his searching for him. After performing a rather fast search for his boss, they then discovered that a service like the program Alan created was in high demand and there was no point in having a human perform this task themselves. They then put together a database and allowed people to search it for themselves.To there surprise, this venture became an overnight sensation.Over the next four to five years Alan worked on internet standards with an organization called the Internet Engineering Task Force (IETF).
With assistance from world renown Tim Berners – Lee and others,Alan worked in a small group to standardize the URLs and other internet protocols we use today. In the years to follow search engines became a much larger thing to everyone with the birth of Google. At present, Alan has a small company which invests technology into start-ups. With him and his team having multiple years of experience they use their technological know – how to create investments in the start – ups.
In closing, Alan also mentioned big data and machine learning as the two areas of computer science that have explosive growth in technology. He alluded to the fact that these areas are not hitting their stride.
How did YOU solve the problem ? – With Joseph
Joseph was a young, budding software designer in Barbados before a senior developer began to train him. He commended the implementation of the Computer Science Society and stressed on the importance he sees in mentorship programs.
Joseph’s segment on problem solving began and he got right to the meat of the matter – problem solving and specifically, how to solve the problem given in the assignment. A few of the skills he thinks are necessary in the process are mentioned below.
Problem solving skills that are required:
- Clear communication – If you’re stuck and need help, you will need to be able to communicate effectively the problem you’re facing to them, that’s the reason for needing this skill.
- Attention to detail
- Abstract thinking
- Investigation and research – Find out how others solve problems and how their method can assist you. Person x may have a part of the solution, person y another, put those together, build on them and arrive at a final solutions.
- Critical thinking
- Technical skills – Understanding the language , he referenced Alan’s presentation when he spoke about COBOL. You need to understand that not all languages have the capability of solving the same problem. Picking up a new language isn’t difficult, it’s the problem solving ability that aspiring developers lack.
- Design and Analysis of Algorithms – special mention was made to this course. He implored the members in attendance to run towards it and not away ( as is the common trend here at the University of the West Indies) regardless of your interest ( whether you wish to be a developer or not). As it is essential for optimizing your program.
- Debug and test – Lots of developers lack proper debug and testing techniques.
He listed his problem solving by programming steps :
- Don’t touch the keyboard, first thing to do is to analyse and understand the problem.
- Take the problem and break it down into its basic steps, use pen and paper/whiteboard but write it down.
- Write out the algorithm and apply test cases to the algorithm. Question yourself, is it yielding the expected results ?
- After you’ve written it, write it more efficiently. Consider CPU and memory usage as well. This is an area where most developers fall down. Although the hardware is there, it has a limit.
- Test the solution using test data.
Joseph then moved onto discussing the exercise that was given. If you haven’t seen it, here’s your chance : http://cssuwi.org/event/session-6-can-you-c/
The breakdown was as follows :
- What are the inputs – .csv file with trade data
- The Processing that needs to be done – process and analyze trades in accordance to business rules
- What are the outputs? – .csv with analysed trade data
- What are the requirements ?
- Output .csv file must be sorted b ticker
Joseph asked for a volunteer to share their thought process with the group. Rashawn volunteered to explain his thought process in solving the problem.
He stated that he first read the problem and figured out the requirements. That included :
- looking at structure of the info source
- Looking at the output
- Then he thought of a means/way to get the info relative to the symbols and storing the calculations. E.g how would i calculate the average?
Joseph then took full control of the session, showing us his C# implementation of the solution to the problem over the Skype call. Periodically, he quizzed Rashawn to get an understanding of what his thought process was like at that point in time.
Tips offered by Joseph :
- Understand deadlines and the importance of submitting your deliverables on time.
- Be able to work alone and in isolation – Companies will not necessary send for you to join them physically, so it is important that you as an individual are able to alienate yourself from the crowd to get the job done.
- Be self motivated – No one will be over your shoulder checking to see how you’re progressing. You have to be your own supervisor.