First Programming Experience
My first programming experience came about 3 months into my first job as an IT Intern working for my local school district on a paid internship role. I had never worked with programming or even though to become a developer until this point.
The school district that I attended and landed a year long paid internship was comprised of 23 schools and 2 district buildings. I worked at the IT and Transportation building working in various IT departments on a variety of projects on a rotating basis. During my rotation with the Help Desk department I identified an issue affecting district employees who travelled with company laptops to the various schools and district buildings. When they were at their home office they had a printer on their desk or not far from it. When they travelled, they needed to add a printer at the front office of the particular school they were at that day and only needed it temporarily. When they needed to print, they would phone our help desk and need immediate help to add a printer for the school they were at to be able to print something. This would happen multiple times per week, and sometimes more than once in a day. I saw this as a repetitive task where time was not well spent by Help Desk. The district staff had access to opening up the printer directory, and scrolling through a list of over 400 printers and trying to find the correct one, but very few would take on this task or get the correct one. I had this idea of automating or scripting the printer addition when the district employee logged in at a new location and setting it as their default and it would happen like magic without any action from the user.
I was now hungry for a solution on my idea and not sure where to go. Thankfully I worked in a IT department with several people of different IT backgrounds and specialties and they allowed me to brainstorm ideas with them. One colleague suggested I look at a way of scripting and programming languages. I was concerned this was outside of my scope and too difficult to learn programming to solve my problem. This same colleague pointed me towards a language he had used briefly called AUTOIT which is a BASIC-like programming language used for automation and scripting in Windows. At first glance I was sure that I was in too deep. Thankfully this colleague was willing to help me get started in the language and the basics of Hello World and from there I was ready to start playing and seeing what I could do with AutoIt.
I worked with our Network and System Admin team to understand how the network and printer setup was designed. From there I could devise how best I could implement my idea and script it. Thankfully our IT team setup print servers with descriptive naming schemes and separated each school to it's own subnet for IP addressing. At the time we were using Server 2003 and Windows XP across all devices which helped by knowing that if it worked on one computer it would work on all of them. Each building was easy to identify, and most district employees would use the front office when they came to the schools so I know my desired printer for each school. Each school had the same printer in the front office with a slightly different name to identify each school.
Using this information I was able to put together a login script. This script would look at the user's IP address. If the IP address was their district building then it would quit since they didn't need a new printer. If their IP was not their district building it would then get their IP address, then lookup which school this IP belong to, then it would look up the front office printer by name and get the IP address. I would then ping the front office printer to ensure it was online, and then connect to the printer and set it as default. I was able to demonstrate my program to the IT Director and he agreed to have the domain admins implement using Group Policy to run at login for anyone in the District Staff active directory container.
When a district staff member travelled to another school or building and logged in, they would immediately have the front office printer mapped to their laptop and set as default so they no longer had to call Help Desk for assistance adding printers, and were able to print when needed. They no longer had to think about printing, they just had to print. This saved countless hours for our Help Desk team walking users through mapping printers every time they went to a new school.
Sometimes it takes the perspective of an outsider to identify an issue and come up with a solution. I was able to see the issue of our Help Desk constantly having to help district staff members setup printers on their laptops. I saw this as a waste of resources that our Help Desk could be better spent helping other users with actual problems rather than mapping printers for district staff members who happened to be at a different school multiple times a week, or sometimes in the same day and wanted to be able to print.