A Geek's Cogitations, Conjectures and other Cortical Experiences

Tag: software development Page 1 of 4

Biggs 2018 New Years Intentions

A new year means new goals (remember, I don’t make “New Years resolutions”). As we look forward to my 2018 New Years intentions, I am also going to review my 2017 intentions. I focused on four areas for 2017; Home Automation projects, Reading Challenge, Fitness and Health and Professional Skills Development. In the spirit of full disclosure and accountability, I was about 50% successful. Therefore, I guess as the first goal for the new year I plan to be more successful accomplishing the goals I set.

Biggs Labs – Smart Home

I completed nothing for my home automation project! I was hoping to have installed the dimmer switches and the Siri integration and none of that happened. If I can get my wife on board to help encourage me to work on it this year I think I should get this done in 2018. A potential roadblock is a broken SD card and lack of access to an SD card reader. I really want to get Siri working with our home automation. As I said last time, I just need to sit down and really focus on this task.

 2018 Goodreads Reading Challenge

I already went into more detail about my reading challenge results from last year; suffice it to say I was 14/15 despite what Goodreads said. The reading challenge goals for this year will be a legitimate 15 books, starting with reading Ready Player One again (in anticipation for the movie). I also have quite the list of Star Wars books to read (which begins with Thrawn), the Extracted trilogy and, of course, more Dresden Files.

As I complete books I will often post a book review. All my book reviews will be posts here but I will also post them on Goodreads and Amazon

 Fitness and Health

I was marginally successful with my wellness goals last year. The biggest accomplishment was actually running in my first 5K; last year I said if I miss all my other goals, completing a 5K would not be one of them. Mission accomplished! I will be running the Flying Pig 5K again this year and my goal this time will be to finish it faster.

As I have done every year since 2013, I completed the Walk to Mordor Nerd Fitness challenge. This year I’m sure to complete it again but I do need to start working my way through the second half of the challenge. If my math is correct I would need to start reaching an average daily step goal of 16,000 step. It is quite a lofty step goal considering I only average about 11-12k now.

Professional Skills Development

If it wasn’t my home automation projects where I dropped the ball in 2017 then it was in this category. I will admit that with all the changes that happened last year, job wise, I didn’t have many opportunities to focus on new skills. Last year I chose Swift and Angular 2 as potential new skills to pursue. This year my focus will more closely match what is needed for my career at my new job. The fact that time for innovation is supposed to be part of our weekly work routine will be wonderful help!

My 2018 goals do not seem as ambitious as they were in 2017 but perhaps its better that way. Maybe I wasn’t successful because I tried to accomplish too much. This year I am going to keep my goals a bit more reasonable. Also, I think I’ve said enough about the New Year, time to return to your regularly scheduled programming.

/MTFBWY

minions_icon

I could accomplish so much more if I only had minions!

 

IT Consulting is Great for Building Your Career

IT Consulting is Great Building Your CareerI was only out of college for three years before I started working as a consultant. It wasn’t your typical consulting work; I joined a firm that paid you a salary and they found the clients. It has been over nine years now. I have learned a lot in the industry in those nine years but the most important takeaway I have discovered is that consulting is great for building your career. This is especially true if you are at the beginning of your career. The experience you have may only be what you obtained from college, and perhaps from a summer internship. The IT industry is vast and its constantly changing so it’s up to you, in most cases, to stay on the bleeding edge.

Consulting On The Bleeding Edge

When you are working every day at the same company where changes in technology are slow, keeping up becomes very difficult. It often becomes an extra curricular activity, outside of work. Granted there are some companies that may provide training opportunities or accounts to online tutorials (ex: Pluralsight); but there isn’t time during the day to complete them. If you are single you might have the time but if you have a spouse or a family, that free time is reallocated.

What I found most intimidating about consulting is the same thing that provides the greatest benefit. It is rare, in consulting, that you are brought in for staff augmentation. You are primarily recruited to work on a specific project, for a brief period of time and then you move on to the next client/project. Therefore you find that you are essentially “starting a new job” each time you start a new, on site, project. Some folks may find that very uncomfortable; I admit that it was probably one of my least favorite aspects of the job.

However, the fact that you change projects often is also a great way to improve your skills. Depending on the project, you may work on something that is bleeding edge. You never know where, in the plethora of technical solutions, a client might be building their product. There are some companies that want to keep up with the latest browser and mobile trends. Therefore they may be using the latest .NET or JavaScript framework (i.e. Angular, bootstrap, etc) which gives you the opportunity to work on the “latest and greatest”.

For what its worth, it isn’t necessarily a bad thing to have to work on older frameworks and solutions; keeping those skills fresh is just as crucial.

Consulting Builds Your Network

A tenant in life that I often dispense unto others is “only half of life is what you know, the other half is who you know”. As a consultant you will change clients a lot and you will get to work with a lot of different people. It isn’t just other developers/IT staff but other project managers, business analysts, line of business, etc. Whenever I started a new client, I didn’t just build rapport with the developers, but anyone I spoke to or saw on a daily basis.

If you don’t have a LinkedIn account as a consultant then you are doing it wrong. LinkedIn is your greatest tool when you are changing clients/projects a lot. I always made it a point to connect to someone via LinkedIn as I wrapped up a project. You never know when that contact might be useful for your firm or even when you need a list of references. It’s always good to build your network and consulting is a great way to do that. It is especially useful if you are moving to a new city (as was the case for me).

Pipe Bomb: After 9 Years, I am No Longer a Consultant

According to the Bureau of Labor Statistics*, as of January 2016 the average number of years an employee stays with a company is 3-4 years (in Professional Services). The fact that I was with my company for nearly a decade is quite rare. I was at my prior job for 2 1/2 years and I vowed that I would stay at my next employer longer. It’s been 9 years! I would say I succeeded in keeping that vow. However, all good things often come to an end. I have left the consulting world and returned to full-time employment.

My departure was on my own terms, which is not always the case for everyone. I just felt that it was time for a new chapter in my life. Consulting has many great benefits, especially at a professional level, as I outlined above. However, since you are rarely at the firms office it becomes difficult to form relationships with your co-workers because you rarely see them. Obviously that doesn’t mean I haven’t made a few friends over the past near-decade. Working in consulting has been instrumental to acclimate to a new city and state, not just geographically but socially as well. It’s an opportunity to make some friends with whom you will most likely share similar interests.

After nine years I have picked up a few tips for anyone who is currently a consultant or might be joining a consulting firm. I like to refer to these as:

Artifacts of wisdom:

  • Build rapport outside the team – As I mentioned earlier I always tried to chat with the people on other teams or in other departments. You never know what you might learn or who you might meet; which could benefit you in the future.
  • Never attempt to change the culture – Since I work in software development I prefer the adage “break the code but never break the culture”. You are there to help improve the product; you are not there to reorganize the team culture. Whatever team dynamic the client is using is obviously working for them; any attempts to “fix” it will only ostracize you.
  • When in Rome, do as the Romans do – You are already going to feel like an outsider because you are not included in company events/meetings, but do what you can to fit in. Take advantage of relaxed dress codes, work from home opportunities, whatever helps you feel integrated into the team. The more you ingratiate yourself the more cohesive the team will function.
  • Take verbose notes; mark dates of completion – This is a CYA (Cover Your Ass) technique. In some organizations the consultants can easily be blamed when something goes wrong or something seems doomed to fail. You need to protect yourself. Always take notes and date when you started something, when you contacted someone for help and when you completed it and marked it for testing.
  • Save important email – This goes hand-in-hand with the previous point. Any email that contains instructions on what you are working on, when you finish it, or any details someone might try to use against you, you should save it! Save it in triplicate if you need to! I have done this and I still have those messages saved securely on removable media and off-the-grid servers. You must be responsible for protecting yourself.

I was very fortunate to have the opportunity to work with a lot of great people. I have grown professionally and socially. Consulting is now the cornerstone on which my entire career is built. Perhaps, in about 30 years, I will go back to consulting as part of my retirement. It is also entirely possible that I may go back sooner; it all depends on what the future holds. If you are a former co-worker reading this, I wish you the best of luck, thank you for sharing your knowledge and I hope I reciprocated equally.

* Bureau of Labor Statistics Economic News Release

minions_icon

I could accomplish so much more if I only had minions!

 

When It’s Not Biting The Hand That Feeds You

Biting The Hand That Feeds YouEveryone knows the old idiom “Don’t Bite the Hand that Feeds You”. It is often used in the context of criticizing someone or some place that helps and/or pays you. It is also often used against me when I’m on one of my Microsoft tirades. Yes, the majority of my job requires me to use Microsoft tools and technology. I think my years of experience, however, gives credence that my rants are not “biting the hand that feeds you“. In my opinion, it’s “biting the hand that’s punching you in the face”. I am going to pick on Microsoft again to illustrate my point because they are the easiest target. However, to be fair, any of the big tech companies can just as easily serve the same purpose.

I have been working in .NET for more than 12 years. I have been developing solutions using a plethora of Microsoft products dating back to Visual Studio 2003. Since I am using Visual Studio as a point of reference to establish a time frame, I will start with that particular tool. In fact Visual Studio is a great way to start on a high note because I love Visual Studio. I don’t think there is a comparable product out there that makes developing any easier. Combining the two database management tools into one tool, i.e. SQL Server Management Studio, was brilliant and again incomparable. I loved Windows 7 and Windows 10 isn’t too bad either. So while I do have a few kind things to say about some of Microsoft’s tools, it hasn’t all been sunshine and rainbows.

The Products That Bludgeon

Yes, for someone who makes a living using Microsoft products I sure do like to pick on them … a lot. I am quite vocal on Facebook, Twitter, at work, in a store about some of the crap Microsoft has created or caused in my life. These are the times when I have had that old proverb quoted at me. After working in the industry for over a decade, I think I have earned the privilege to speak my discontent. I have been on a huge rant about Internet Explorer lately because I think that is Microsoft biggest mistake. If they had followed the same versioning model as younger browsers then perhaps IE wouldn’t be the most hated browser in the industry. The fact that I have to try to code around 8 different versions of IE but only one version of Chrome and Firefox makes me hate my life. Edge was their second biggest mistake; hello re-skinned IE. Obviously Microsoft thinks we’re all a bunch of idiots.

Internet Explorer is the worst offender and the one that lingers. The other asinine business mistakes they have made are already dead or dying. As the joke goes, every even version of Windows was total garbage (Windows 98, Windows ME, Windows Vista, Windows 8) where Windows 8 is probably the worst one to date; not only was it awful functionally but it was aesthetically disgusting. SilverLight was a complete failure. Bing, Zune and Windows Phone are complete jokes. I remember when Windows Phone was announced; I predicted its demise on Day One. What makes Windows Phone especially irksome is it took Nokia with it. Granted Nokia was already struggling but they could have gone a smarter route (like Android) to save their business.

News Flash! Microsoft Doesn’t Walk On Water!

Working with a company’s technology every day doesn’t mean I should be worshiping them like a god. Apple, Google and Microsoft are often referred to as the “Titans of IT” but not everything they make is gold. If a product is total garbage I won’t go around heralding it just because “it’s Microsoft”. If you make a dumb product or a dumb decision then I’m going to call you out on it. Pretending its great is obtuse and not only are you misleading yourself but your clients and customers. I’m not going to try to sell a client/customer/developer lead on a half-baked product when a third-party product is a better fit. For example, I’ll advocate for Slack before Microsoft Teams because its far easier to use and much more well thought out.

Furthermore, I will not advocate for a technology that is going to make my life a living hell. For example I will never suggest SilverLight to anyone! I may be a masochist but SilverLight is a steaming pile of garbage and I’d rather write VB6 for eternity then edit another XAML file. So it’s not “biting the hand that feeds you” you when that “hand” is causing you nothing but daily anguish and regret.

apple_logo-263x300“The people who are crazy enough to think they can change the world, are the ones who do”
– Steve Jobs

 

Tech Talk: Lateral Career Development

Lateral Career DevelopmentThis Tech Talk is going to be a little different than prior posts in this category. I’m not going to talk about a new gadget, technology milestone or the latest news headline. I want to know what it takes to achieve lateral career development. You can advance your career along two axes. The common route is vertical by getting a promotion, perhaps a title change and some underlings. You can also advance your career along the horizontal axis (i.e. laterally). This is most often accomplished via some form of training. When you improve a skill set or acquire new skill sets, you are a better asset.

Depending on your employer, lateral career development will not necessarily render more money. I understand for many that is the motivation behind additional training, but usually its training that isn’t very interesting. I’m talking about the kind of training that not only enhances your career but it’s also fun and interesting. There are a plethora of ways to get the training you want; Pluralsight comes to mind. However, this post isn’t about where to get your training (perhaps that can be a future post).

How Do You Transition Your Career or Integrate Your New Training?

Unfortunately this post also will not answer that question. I’m legitimately asking. In some cases integrating your new training can happen fairly naturally. For example if you are a .NET developer and you completed training on Angular development. Those two technologies are so tightly coupled, finding an opportunity to implement your new skill is going to be easy. I know that because I have done it.

On the other hand, what if you are a .NET developer and you completed training on iOS or Android? These two technologies are obviously two completely different worlds. I’m not necessarily suggesting a permanent transition. It might be for some but personally I want to increase my skills beyond .NET (and perhaps even my value to my employer). The challenge is overcoming the pigeon-hole of so much time working in one technology.

This kind of lateral career development can be stymied by various factors. Priority, budget, opportunity or even employee perception can be a factor. Of course the obvious hindrance is experience. The developers with more experience are the first to be selected for the project. It goes back to that age-old conundrum “you need experience to get the job but you need the job to get the experience“. Your expertise is more cost-effective on a project where you can be the most efficient.

How Do You Get on a Relevant Project?

Again I’m legitimately asking! Obviously this is beyond your control. I imagine certain things have to align properly. First you need people who are willing to let someone with little to no experience work on a project. Then, of course, the right opportunity has to come along. It will probably have to be something that is low risk and has a flexible timeline.

I’m curious if anyone has had any recent success expanding into other technological paradigms. Working in the same technology every day for several years starts to feel pretty stale and mundane. I understand that mundane usually means job security but it kills ambition. I found this quote by T.S. Eliot – “If you aren’t in over your head, how do you know how tall you are?” Sometimes you have to push yourself to get to the next level but it does help if there is someone willing to take a chance on you.

Perhaps that’s all it takes to make that lateral move; someone who recognizes your potential and gives you a shot. The greater the risk the greater the reward. I guess, in the meantime, you keep working on those projects at home. It will help keep your skills sharp and you have the free reign to push the envelope a little bit.

/cheers

apple_logo-263x300The people who are crazy enough to think they can change the world, are the ones who do
– Steve Jobs

Biggs On: Laptops

broken-surface-2-appleI know, why would I write an opinion post on something that has been around for 40 years??! Since the birth of the iPad technology has been trending away from the nostalgic old desktop PC. Tablets and laptops (and other forms of mobile devices) are becoming more popular by the hour. The truth is, I’m not really a fan of laptops. Sure I use a laptop for work because it’s easier as a consultant to have your trusty computer with you when you need it, but work is the only occasion where I feel like having one is warranted.

My home PC is a custom built desktop. The key word there is custom. I like knowing exactly what is in my computer and I like that I am the person that put it there. I have never bought a mass manufactured desktop PC (emphasis on PC, because I do own a Mac-Mini). I have never needed a reason to buy a laptop to use as my primary computer. Granted, I do have a laptop that I take with me on extended vacations, but when I’m home I will only use my desktop; and to be honest I think I would be just fine without one while on vacation. I typically spend more time doing touristy stuff or reading books when I’m on vacation. If I want to look something up when I’m away from the computer, I reach for my iPad and thus have never wished it were a laptop.

The two primary functions of my home computer is for gaming and programming. Honestly I just think using a desktop is the best hardware for both of these functions. Granted a laptop can be used for software development (obviously since I use one for that purpose at work), but it needs to be a fairly well specced laptop, one I definitely couldn’t afford on my own (which is why I make sure I take very good care of the one provided to me from my employer). How people use laptops for gaming (especially MMOs) is almost beyond my capacity, unless they are plugging peripherals in. They almost have to be using an unattached keyboard and mouse, I just don’t see how any other configuration would be efficient and comfortable. In fact, when I am using a laptop, I always try to plug in a keyboard and mouse if its possible because I don’t like typing on most laptop keyboards and I loathe the touch pad.

I know people make it work somehow and that’s fine, as far as I’m concerned. My desktop is like a muscle car, I like to beef it up, make it glow. I want it to have presence <insert manly Tim Taylor grunts>. But to each their own.

/cheers

[P.S. The Surface Pro laptops look awful and make laptops even less endearing; I’d rather have an Etch-a-Sketch.]

Tech Talk: JavaScript Frameworks

Web_programmerOver the past year I have had several projects at work (I feel like a real live consultant now) and I have used a few new technologies and tools on those projects. The skills that have really come a long way are my JavaScript skills.

I know what some of you might be thinking, “WTF, JavaScript?!?”

Yes. JavaScript. It’s not as cumbersome and taboo as it was back in the 90s. There are new tools and frameworks out there that have actually made JavaScript not only easier but … dare I say it … fun?! The library that has made JavaScript easier, for me, is jQuery, which I have been using for a couple years now and I won’t write any JavaScript without it. There are two frameworks that I have played around with recently that have really made JavaScript kind of fun: Knockout and AngularJS (I know these are not the only two but they are the only two I have spent any time using).

I think I have gone on before about how much I enjoy the magic behind jQuery. I even saved a few on snipplr which have had a few strangers favorite, although I could probably improve on most of them with the newer versions of jQuery. Using jQuery will definitely make your web page feel very dynamic and that seems to be the paradigm we are going for these days. A “web site” is quickly becoming a legacy term and we are evolving into developing “web apps” – which is essentially a website that functions as if it were something running on your desktop (instead of in your browser). I’m sure the evolution and massive adoptions of tablets and mobile devices has been a major catalyst.

The jQuery syntax and plethora of plugins really makes developing web apps much easier and adds a level of enjoyment to it. In fact writing your own jQuery plugin doesn’t require any additional software or new syntax, they are still js files that just use existing jQuery syntax. I have yet to write one myself, but I really want to, someday … if I can think of a worthwhile plugin to write. I have noticed a drawback about jQuery lately; the more complex you make your page the more JavaScript you have to write. I have a couple of sites where there is more JavaScript code then actual markup and trying to find a specific function to modify can be an exercise in perseverance. When JavaScript code becomes increasingly verbose, that’s when frameworks like Knockout and AngularJS come in handy.

I’d like to go on about Knockout and compare it to AngularJS but I haven’t spent a lot of time recently enough with Knockout and I have spent quite a bit of time the past couple of weeks with Angular. I mostly started looking into Angular because its one of those terms that has been mentioned quite a bit around the office. Many folks have talked a lot about using it and it has been implemented at my next assignment. I wanted to go beyond just watching the Pluralsight videos and reading the tutorial on the website. I wanted to see if I can get it working on a website. Therefore I made one of my websites the guinea pig 🙂

Angular uses “directives”, which are essentially special attributes added to HTML tags that only mean something to Angular which tell Angular where it will be applying changes or reacting to events. While you can still use jQuery to handle some of your pages events, in Angular the controller will contain the majority of the code that needs to be executed. It does add a bit of brevity to your html pages.

If you have done any development using the MVC pattern your attention may have latched onto the word “controller”. In Angular you are essentially using an MVC pattern (although you will often see it referred to as MV* when folks speak of Angular). Your controllers are still written in JavaScript but I often create a controllers.js file and keep all my controller code there. Therefore, if you need to make a change to some logic and you know its going to be in a controller, it will be easier to find the bit of code you are looking for to make your change. No more scrolling through lines of JavaScript code, or hitting Ctrl-F to find a specific function (unless you are using several controllers, in which case I would encourage you to create multiple controller files).

I’ve only really just begun to dive into Angular and I’m already enjoying its power and brevity. As I continue to witness and invoke its prowess I’m sure to be inspired to write some more, however I’ve run on enough for now but I encourage you to check out all of the things I talked about (if you haven’t already).

minion_keboard_smI could get so much more accomplished if I only had minions!

Page 1 of 4

Powered by WordPress & Theme by Anders Norén