Tag: featured

  • The Developer’s mid-life crisis – and 5 ways to overcome it

    The Developer’s mid-life crisis – and 5 ways to overcome it

    According to Wikipedia, a midlife crisis is:

    Midlife crisis is a term coined in 1965 by Elliott Jaques stating a time where adults come to realize their own mortality and how much time is left in their life.

    I particularly like this supporting thought, that during this time, “people may reassess their achievements in terms of their dreams.”

    I went to university in the late 1990s, a time when the Internet was emerging and the geek stereotype was being shaken off.  In those days, coding for a living wasn’t quite fully mainstream, but for those of us to pursued it, we had a promising and potentially lucrative career ahead of us.  Job prospects were strong, and it wasn’t unusual to have multiple opportunities to consider, with above-average pay, upon graduation.  At that time, I dreamed of being the guy who came up with new three-letter-acronyms and writing definitive works on a subject.

    A lot has changed in the past 20 years.  Coding today is mainstream, talked about in the media, promoted to children.  Tech success stories are commonplace, and we can’t possibly imagine a world without Google, Facebook, and Amazon.  And I, like many of my peers, find myself no longer on the bleeding edge of tech, but instead spending my time supporting and building run of the mill business apps.

    In this new environment, developers (I posit) have reached nearly commodity status.  There are lots of us.  The supply curve has changed, and while demand is still strong (the Bureau of Labor Statistics projects 22.8 percent employment growth for software developers between 2012 and 2022, much faster than average for all occupations. During that time period, an estimated 139,900 jobs will need to be filled) it’s harder and harder to distinguish oneself from their peer group.

    Additionally, the rise in new, more glamorous technologies such as mobile apps have pinched career developers in to choosing a path in which to invest their time, training, and focus.  Do we stick with the stable corporate job, or jump ship for the hip new startup?

    In short, we face a mid-career crisis.

    One day you wake up and suddenly feel like all the cool kids are doing fancy mobile apps and you’re stuck in the belly of the corporate beast writing TPS reports.  Or maybe you go to a Code Camp or conference and instead of getting rejuvenated you get depressed over all the tech that you’ll never be able to use in your job because the opportunities don’t present themselves.  In short, the crisis strikes, and when you reassess your achievements in terms of your dreams, you feel like you’ve come up way short.

    I know I’ve felt this way.

    And here’s how I overcome it.  It’s not quite like going out and buying a red convertible, but these things serve to give me a boost.

    Sign up to give a presentation or user group talk.

    One of the more rewarding things I have done in the past couple years is preparing talks for local user groups.  The key?  Always selecting a topic that I hardly know anything about.  In doing so, I create a condition for myself to learn with a deadline, powered by the fear of embarrassment.  This has been a great way for me to immerse myself in the tech topics I wouldn’t otherwise get to use in my day job.

    Start a side project.

    If your day job isn’t giving you the opportunities you want, then consider a hobby project that can be a sandbox for you to try things out.  For me, HomeSpot HQ is that project – and it routinely gives me a place to try and incorporate the hot new things.

    Start mentoring

    Rather than bemoan the next generation of developers and how easy they have it, why not invest in them.  Help teach them strong principles that make life as a developer better.  You know, things like SOLID and DRY. Or how to write good code comments. Many areas have tech summer camps that would love volunteers to help campers learn the ropes.

    Take a Twitter sabbatical

    The main channel by which I hear about all the things everyone else is working on is via my Twitter feed.  But sometimes there are days when having those constant reminders is downright depressing.  In that moment, fire a Ctrl-F4 or Command-W to blow that tab away, and find a moment to stop comparing yourself to everyone else.  Chances are, they have been (or will be) in the same place in their career.

    Commiserate with others

    Want to feel better about your situation?  Go talk with one of your peers and hear their story.  Again, it’s pretty likely they have been through the same crisis moments, and probably have some insight about how to cope constructively.  Or, they might have a horror story to tell that proves again the grass isn’t always greener.  Who knows, maybe that conversation will propel you to take action!

    If your achievements and your dreams aren’t matching up, remember that you can change either side of that equation.  Still, there are endless opportunities to achieve waiting out there for you. You just have to decide to go after them.

    Photo credit:https://commons.wikimedia.org/wiki/File:MX-5_Red.jpg

  • Multi-column navigation menus in SharePoint

    Multi-column navigation menus in SharePoint

    Here’s a quick tip to provide a pseudo-mega-menu in SharePoint.

    This CSS revision should work with the standard SharePoint 2010 and 2013 horizontal navigation menu that uses either Managed Navigation or Structured navigation.

    Let’s look at a normal presentation of the Global navigation menu.  You can see if I have more than 10-12 items, I have to scroll the browser to see the full menu.

    sp-menu-single-column

    By simply using CSS to render the menu using multiple columns, we can now see the whole menu above the fold of the page.

    sp-menu-multi-column

    Here’s the CSS to apply.  You’ll need to put this in to an alternate CSS file or otherwise reference it through your custom master page.

    /*two column nav dropdown - only in wide view*/
    @media (min-width: 768px) {
      #topnavbar .nav li.static > ul.dynamic {
        text-align: left !important;
        width: 550px !important;
      }
    
      #topnavbar .nav li.static > ul.dynamic > li.dynamic {
        display: inline-block;
        list-style-type: none;
        float: left !important;
        width: 49% !important;
      }
    
      #topnavbar .nav li.static > ul.dynamic > li.dynamic:nth-child(odd) {
        clear: left !important;
      }
    }
    

    A few additional comments:

    • In this specific case, I am using Bootstrap, so that is why the .nav class indicator is included in the selector.  It is also why I wrap this CSS block in a media query so that the multiple column display only is applied in the largest views of the page.
    • You’ll notice that it renders the menu items left to right, not down the first column, then up to the second column.  This is simply an easier approach since we never know how many menu elements are present.

    There are other Mega Menu approaches that incorporate images or multiple menu hierarchies.  However, if you just needing to compress the menu above the fold, this is a pretty efficient method.

  • CodeSpaces and the risk of cloud computing

    CodeSpaces and the risk of cloud computing

    I love small business.  They innovate. They drive our economy.  They offer products in an agile manner.

    I love cloud computing.  It’s convenient.  It’s flexible.  It makes things affordable that once were cost prohibitive.

    Doing business with anyone carries risk, and some may feel that doing business with small businesses carries greater risk.  But we do it anyway because we like the product or service that is offered.

    One such small business that I have done business with is CodeSpaces.  They were a startup that provided cloud-hosted Source code control such as Subversion and Git.  They had a continually improving project management dashboard oriented around agile methodologies.  They were affordable, with plans as low as $2/month.

    When I started HomeSpot HQ, I had a laptop.  I did most of my development on that laptop, but knew I needed a place for source code control.  Being familiar with Subversion, and being in need of a free or low cost solution, I researched and found CodeSpaces.  Upon registering for an account, I pushed my source files in to the cloud, ready to access them anywhere.

    CodeSpaces announced yesterday that their service had been breached by an unauthorized attacker, and that a good portion of the code, project information, and other customer data that had been willingly pushed to the cloud by their customers had been irreversibly destroyed.

    CodeSpaces issued this statement about the incident:

    Code Spaces will not be able to operate beyond this point, the cost of resolving this issue to date and the expected cost of refunding customers who have been left without the service they paid for will put Code Spaces in a irreversible position both financially and in terms of on going credibility.

    As such at this point in time we have no alternative but to cease trading and concentrate on supporting our affected customers in exporting any remaining data they have left with us.

    Thankfully for myself and for HomeSpot HQ, I had moved off of using CodeSpaces for my ongoing source control solution.  But had I not, then not only was CodeSpaces’ business compromised, but quite possibly mine would have been as well.

    I frequently receive emails from new HomeSpot HQ users that read something like this.  “I really love your product and am excited to use it.  However, what happens to my data if you disappear as a business?  Is there a way to export or extract it?”

    These users are rightfully being proactive in considering the safety and trustworthiness of the cloud.  They recognize the value of the data they would provide, and the value of the time required to provide it.  They want assurances that their effort will not be wasted because we close up shop overnight.

    CodeSpaces is the victim of a crime.  They indicate in their full statement that they have withstood previous attacks without incident.  It is unfortunate that this crime leaves the company in a state where their only option is to close.

    This story (and many like it) illustrate the risk we take when using hosted services.  It forces me as the provider of such a service to redouble my efforts to keep my customer’s data secure.  This is the world we live in.

     

    Photo credit: https://www.flickr.com/photos/carbonnyc/