Best Development Solution For a Development Apprentice Like Myself



  • After almost 4 years as IT Director and SOLO IT guy, the time for me to dig in to development has come. I've gotten this place as upgraded and stable as I can and nothing much left but day to day issues and plenty of time for development.

    I've dabbled in Visual Basic .Net for years but never, truly developed anything useful for production.

    I came to my current job in March of 2011. Place was so bad, from an admin/server stance and especially on backups, which took 3 days to backup one day of data. But that's another story.

    This place is made up of Excel spreadsheets, Excel spreadsheets and more Excel spreadsheets, most of them with Macros and heavy, messy VBA code. It has been a struggle enough to know what the coders meant when they wrote these things. And I've come to realize that VBA is my friend because off all off the customization options we have for our business. I don't think VBA will be going anywhere else any time soon at my workplace.

    The main, business critical spreadsheets are for quoting and contracting metal building sales...it imports raw, text data from a very complicated metal building suite called MBS. It combines the data from the initial design template, provides a quote and also makes a contract...it then heads to engineering and finally drafting for production. The drafting spreadsheet handles a ton of calculations and then we export that data into a CSV for the machines to import and cut to specification...it is quite complex...and I do not plan on changing that any time soon.

    But, I have a vision...since we have so much data scattered about, I have envisioned an internal customer portal, a web based app where people in the company can go, enter a customers info and locate information that is stored on these spreadsheets...obviously, I know it would be good to make at least an Access back end, if not SQL...one of these does cross references SQL...

    At my disposal, I have Office 2013, Access and a SQL Server. We also have SharePoint Online. I've also completed a few Software Development Classes on MVA and I've gone through a lot of Lynda.com Excel classes that have been helpful...

    I have used LightSwitch in the past but with Silverlight perhaps being a thing of the past, it was best to steer clear of it in the future.

    I've had advice here and there in these forums but it is time to finally see what some may suggest the best route to go. I've decided to work on this customer portal first as a way to lean a new language (say ASP.NET or a durative) as I also learn what makes up these other spreadsheets and learn how to gather data from them and collaborate the data. Then perhaps one day in the future, work on getting off Excel, if possible, on many of these projects.


  • Service Provider

    I'll have a lot of thoughts here so I will try to throw them at you one at a time 🙂

    First one: ASP.NET isn't a language, it's a web extension to .NET which, itself, is a platform and not a language. The languages that you should consider on .NET are C# and F#. F# is super crazy advanced and awesome but until you are a full time developer I would not even look at it. So, if doing anything in the .NET or ASP.NET world, I would stick to C# exclusively. It is an excellent, powerful and easy to use language. It's Microsoft's flagship.


  • Service Provider

    If you do end up using ASP.NET, make sure you look into MVC. This is how most modern web application development is done. No matter what tool set you use, MVC is the standard. The most common MVC toolkit out there is Rails (from Ruby on Rails fame.)

    ServerFault and StackOverflow were pioneers on ASP.NET's MVC framework. It is very mature and robust now.


  • Service Provider

    Avoid tools like Access and LightSwitch. These are "lock in" tools meant to duplicate the mistakes of the past (locking people into expensive databases, clients, etc.) When developing your own code, don't create technical debt for no reason. Use this as a chance to make things better.



  • @scottalanmiller said:

    I'll have a lot of thoughts here so I will try to throw them at you one at a time 🙂

    First one: ASP.NET isn't a language, it's a web extension to .NET which, itself, is a platform and not a language. The languages that you should consider on .NET are C# and F#. F# is super crazy advanced and awesome but until you are a full time developer I would not even look at it. So, if doing anything in the .NET or ASP.NET world, I would stick to C# exclusively. It is an excellent, powerful and easy to use language. It's Microsoft's flagship.

    Yes, my next MVA course is C#...there is also a lot of good Channel 9 C# classes in addition to my Lynda.com...:)


  • Service Provider

    I would, when looking at fresh (green field) development of this nature, consider very, very strongly moving to neutral tooling rather than tooling that exists only for a single platform. C# and .NET are great tools, really powerful, and Visual Studio is now free and .NET is beginning to be ported to other platforms (like Mac OSX and Linux) but it is very Microsoft-centric unnecessarily and today, it is not neutral yet.

    Moving to neutral tools means cost savings and protection against future licensing changes. It means greater flexibility and less technical debt. It is protection against future changes.

    Tools to heavy consider include Python + Django, Ruby on Rails, Node.js (JavaScript) and even PHP. Also avoid SQL Server and look to PostgreSQL or even MariaDB instead.



  • Ruby on Rails has really been the industry darling for a while now. Very powerful, tons of users out there, good tools available and very easy to rapidly make applications.

    Although these days Node.js is getting a LOT of attention.



  • Ruby, Node, Python... all good choices.


  • Service Provider

    Node.js is what is used to run MangoLassi. Spiceworks is built on Ruby on Rails.



  • I tend to want to put all my eggs in one basket and learn all of this at the same time...backing up, I simply have to become pretty good at VBA...got another sheet today doing funky things...I've got to study VBA arrays and get a grasp on them too as most of these sheets have a lot of arrays and a ton of loops...


  • Service Provider

    VBA is so far removed from any other development.... it would be best to completely just consider that to be a different animal. VBA is not VB. There is no escaping VBA for Office automation, just how it is. But there is no real benefit to tying everything else that you do to that. Just going to make things horrible going forward.



  • @scottalanmiller said:

    VBA is so far removed from any other development.... it would be best to completely just consider that to be a different animal. VBA is not VB. There is no escaping VBA for Office automation, just how it is. But there is no real benefit to tying everything else that you do to that. Just going to make things horrible going forward.

    I hear ya...there may be no escaping VBA...and I want to absorb all the training I can on it because it will also help me better understand the mounds of data that goes into these from our Metal Building Software...

    But that said, I've got C# and Ruby on Rails on my list once this is done...


  • Service Provider

    I wouldn't work on C# and Ruby, I would just do one or the other. At least until you are pretty comfortable. Doing both will make things much harder.



  • @scottalanmiller said:

    I wouldn't work on C# and Ruby, I would just do one or the other. At least until you are pretty comfortable. Doing both will make things much harder.

    Right...should have said C# is next...then Ruby...may take the rest of 2015 considering even getting up at 4:30 for more study time, I still don't have much study time... 😞


  • Service Provider

    @garak0410 said:

    @scottalanmiller said:

    I wouldn't work on C# and Ruby, I would just do one or the other. At least until you are pretty comfortable. Doing both will make things much harder.

    Right...should have said C# is next...then Ruby...may take the rest of 2015 considering even getting up at 4:30 for more study time, I still don't have much study time... 😞

    I meant until you are a professional developer not doing a role in IT, you should stick to just one.


  • Service Provider

    Start here for Ruby on Rails...

    https://www.railstutorial.org/book/beginning


  • Service Provider

    I recommend using BitBucket and RubyMine too. BitBucket is my favourite hosted GIT repo. RubyMine is widely considered the best IDE for Ruby, although it is super powerful meaning that it takes a bit of work to get everything working properly.


  • Service Provider

    I should mention that it is $99 for RubyMine out of your own pocket. But a great investment if you are going to be writing a lot of Ruby.

    For free, I would use Atom which can be downloaded from Github.



  • @scottalanmiller said:

    @garak0410 said:

    @scottalanmiller said:

    I wouldn't work on C# and Ruby, I would just do one or the other. At least until you are pretty comfortable. Doing both will make things much harder.

    Right...should have said C# is next...then Ruby...may take the rest of 2015 considering even getting up at 4:30 for more study time, I still don't have much study time... 😞

    I meant until you are a professional developer not doing a role in IT, you should stick to just one.

    Got it...



  • Oh, I wont cram it in during my VBA push, but I'd love to brush up on scripting too...:)


  • Service Provider

    @garak0410 said:

    Oh, I wont cram it in during my VBA push, but I'd love to brush up on scripting too...:)

    Ruby is a scripting language.



  • Well, here I am a year later and can honestly say, no progress on this at all. Just no time to learn to shift into being a 50/50 admin/developer. Between "day to day" at work and being involved in kids activities, family, church and community, it seems impossible to try to fill this 50/50 role they want of me.

    Back to square one...95% of our "stuff" is still Excel and VBA. So, I've got to stay there for the time being. So,, can't look ahead at many of the helpful suggestions.

    I document all I do in Spiceworks and provide my open and closed tickets to my manager weekly for our short Monday meeting. They trust me and often say they they like the fact they don't have to follow up on me since I do my job and provide updates.

    But I've reached a point where I am going to have to admit my struggles with this. It isn't so much as learning this stuff is hard but the fact this VBA code is so messy and with very little comments and hard to to understand the logic.

    On top of that...they now are asking about putting Excel data on web based options, including the cloud.

    So this wasn't so much a rant or a call for help than it is sharing struggles we in SOLO IT shops face. I wouldn't trade this job right now for anything, but I also don't want to lose value in their eyes.



  • The only thing I can think of is asking management for a dedicated 4 hours a week where you turn off your phone and just work on some study type thing. If the company values you knowing these things, and being able to support them internally, I don't know how else you are to get there.

    Of course matching that with 4 of your own outside of work time (tell the wife and kids, sorry, I can't talk to you Tuesdays from 6 to 10 PM - period). This would be no different going back to school and the family knowing they have to give you up while you study.



  • Like @Dashrender is referencing, see if your company will give you credit for hours spent studying development. My company does this and allows me to log it as Professional Development time. I usually have 90% of this time logged away from the office, at home, where I can sit and read/practice without interruption.



  • @RamblingBiped said in Best Development Solution For a Development Apprentice Like Myself:

    Like @Dashrender is referencing, see if your company will give you credit for hours spent studying development. My company does this and allows me to log it as Professional Development time. I usually have 90% of this time logged away from the office, at home, where I can sit and read/practice without interruption.

    I'm not sure what this would really gain him?

    My point was that hopefully he could get his office to give him some professional growth time, but he really needs to give himself professional growth time as well. It's not only up to the company to provide this, heck it's even more important when they aren't willing to keep you from atrophying, and gaining new skills for the next job.


  • Service Provider

    @garak0410 said in Best Development Solution For a Development Apprentice Like Myself:

    So this wasn't so much a rant or a call for help than it is sharing struggles we in SOLO IT shops face. I wouldn't trade this job right now for anything, but I also don't want to lose value in their eyes.

    Basically what they are wanting you to do is to mix an engineering and an admin role together. These two aspects of IT work are not compatible, not really. An Admin is all about being on call, it's an availability based job. Engineering is all about getting work done, it is a productivity based job. Admin work is event driven, Engineering work cannot be interrupted. It's like oil and water. Any given human might be good at either, but never at the same time. Each one precludes the other.

    Having you do 50/50 doesn't work. Not with these two types of roles. Studies show that a single interrupt takes a minimum of fifteen minutes for someone to return to engineering work. That means, at best, if you set aside one hour to do engineering work (programming here) and you have to deal with a call, IM, ticket, etc. you will lose that time plus fifteen minutes of "reloading your engineering work" into your brain. This also holds off your ability to "get into the zone" by that set of time which means that any interruptions within, say, a three hour time slot would stop you from ever getting into the zone.

    In reality, for this kind of thing, there is no reasonable way for you to do more than the work of say 1-2% of an entry level programmer just because you are not given an opportunity to be productive.


  • Service Provider

    This is why I often work after my family has gone to bed. Get my kids all tucked in and my wife always goes to bed before the kids do anyway and then I can focus on things.



  • @scottalanmiller said in Best Development Solution For a Development Apprentice Like Myself:

    This is why I often work after my family has gone to bed. Get my kids all tucked in and my wife always goes to bed before the kids do anyway and then I can focus on things.

    I try that but it always ends up with me asleep on the sofa with a bottle of bourbon and some crap drama on Netflix that I don't even like.

    I've had more success with changing my hours so that I start work an hour before most staff at 7.30am. It's only an hour, but I get loads done as it's so quiet (and I'm more of a morning person anyway).

    But generally, @garak0410's dilmena is extremely common. As John Lennon said, life is what happens to you while you're busy making other plans.



  • @scottalanmiller said in Best Development Solution For a Development Apprentice Like Myself:

    @garak0410 said in Best Development Solution For a Development Apprentice Like Myself:

    So this wasn't so much a rant or a call for help than it is sharing struggles we in SOLO IT shops face. I wouldn't trade this job right now for anything, but I also don't want to lose value in their eyes.

    Basically what they are wanting you to do is to mix an engineering and an admin role together. These two aspects of IT work are not compatible, not really. An Admin is all about being on call, it's an availability based job. Engineering is all about getting work done, it is a productivity based job. Admin work is event driven, Engineering work cannot be interrupted. It's like oil and water. Any given human might be good at either, but never at the same time. Each one precludes the other.

    Having you do 50/50 doesn't work. Not with these two types of roles. Studies show that a single interrupt takes a minimum of fifteen minutes for someone to return to engineering work. That means, at best, if you set aside one hour to do engineering work (programming here) and you have to deal with a call, IM, ticket, etc. you will lose that time plus fifteen minutes of "reloading your engineering work" into your brain. This also holds off your ability to "get into the zone" by that set of time which means that any interruptions within, say, a three hour time slot would stop you from ever getting into the zone.

    In reality, for this kind of thing, there is no reasonable way for you to do more than the work of say 1-2% of an entry level programmer just because you are not given an opportunity to be productive.

    Agreed but for now, my job "is what it is" and it is the best salary I've had with regular bonuses and geek benefits (just got a high end SurfaceBook).

    I may try the closing door 2-3 hours a day to just focus on VBA projects. It isn't like some days I am all Admin...I can often be caught up on Admin issues where I have ample time for this...but interruptions, when working on these projects, are brutal. I just love how our non-techie plant managers just storm into my office, thinking I can drop what I'm doing to meet their need. But, I always have a good attitude about it and help them.



  • @Dashrender said in Best Development Solution For a Development Apprentice Like Myself:

    The only thing I can think of is asking management for a dedicated 4 hours a week where you turn off your phone and just work on some study type thing. If the company values you knowing these things, and being able to support them internally, I don't know how else you are to get there.

    Of course matching that with 4 of your own outside of work time (tell the wife and kids, sorry, I can't talk to you Tuesdays from 6 to 10 PM - period). This would be no different going back to school and the family knowing they have to give you up while you study.

    Good advice...my daughter plays Flag Football time time of year (yes, daughter and she LOVES it...) and I try to study during the 90 minute practices but blasted sun glare off all my devices makes it hard to focus on the screen for serious study. So I waste it reading Feedly or Mango posts. LOL

    I may try the study nights...may take some self discipline to not get distracted by things.