Resume inflation – Welcome to the New World

In North America, there has been a lot of focus on the recent stories involving television newscasters/journalists who have “inflated” their resumes.  Brian Wiliams was the first big one, and is now facing a 6 month suspension for exaggerating claims for battlefield experiences during the Iraq conflict.  Now Bill O’Reilly is facing similar questioning of his claims of journalistic heroism during the Falkland’s war in 1982.  In both cases you see a massive outpouring of words and opinions on how these two men have lied, or embellished their experiences, in an effort to establish themselves in their profession.

The whole thing puts a small sour grin on my face.  In the technical world, we have been dealing with this for at least the last two decades.  For almost as long as I can remember, I have been talking to software vendors, software contractors, and people that I am looking to hire, and silently asking myself the same question, “Is this person telling me what they can do, or are they telling me what they think they can do?”.

In the software products field, it has become something of a game, where purchasers put the various solution vendors through a series of trials to demonstrate capability.  I have always jokingly referred to this as the “Vendor Olympics”.  The scary part is that these competitions are often decided on criteria that have little to do with technical capability, and more to do with trust.  “Can I trust this vendor to do what they tell me they are going to do?”, is often the most important question.  That type of thinking has led to organizations implementing flawed solutions, because, “nobody ever got fired for selecting IBM/Microsoft/Cisco“.  This kind of thinking leads organizations and individuals to indulge in some strange behaviors.

It leads organizations into “pushing the envelope” when looking to recruit talent.  “We’re an Agile development shop”, is a quote that you hear from almost any place looking to hire top talent.  Top talent wants to work with Agile, which emphasizes a degree of reasonable expectations on a developer.  If you go and look at the development methodologies in use at these places, you will find a mix of agile, waterfall, scrummerfall, eXtreme Programming (XP), and mass confusion.  They are telling you what they think they can be, and not really what they are.

Job seekers are just as bad.  I cannot begin to tell you how many candidates I have interviewed who claim to possess skills that they don’t really have.  I have had candidates tell me that they know Agile, and then struggle to tell me about how story points work.  These are the good candidates, because I can get to the truth with a few simple questions.  The tough ones are the people who claim to have deep technical skills with REST, HEAT, Cloud, Enterprise software, and other things that I cannot ascertain with a few simple questions.

Why do they do it?  Have you LOOKED at the job posting boards out there?  Companies are looking for “perfect” fits, advertising jobs with a laundry list of critical skills, and HR organizations are looking for keywords in applicant resumes.  Do you have experience in complex technical sales involving Cloud solutions?  I do, but not many other people do.  Many are just as qualified as I am, they just need a minimal amount of time to learn some new concepts.  So in an effort to get through the HR screening process, many job seekers “inflate” their resumes, so they can get that initial conversation with a hiring manager.  It becomes a big game.

So why bother writing about this?  Because I am growing tired of having to play this game.  Don’t inflate your experiences, just tell me what you know and how deep you know it.  Don’t tell me, “oh yeah, I know Node”.  I would much rather hear about how you are familiar with Node, haven’t done any real projects with it, but are extremely interested in learning it.  I am tired of HR finding me “perfect” fits.  I want imperfect fits.  I want people who are going to be challenged, and who like learning and stretching themselves and their skills.  I value the following qualities over all else:

  • Honesty
  • Willingness to learn
  • Ability to learn

So I am imploring my HR staff, now and in the future, to quit finding me the perfect candidate, and to stop sifting through resumes looking for keywords.  I want to build flexible teams, with high trust cultures, that can rapidly become high performing teams.  If I can’t trust you to be honest on your resume, how can I trust you to do a quality job for me?  I do NOT want a bunch of specialists, who are as busy looking for their next position as they are in working on my project.  We need to stop the inefficient hiring games, and we need to get down to the business of actually creating something of value.  We need to reestablish trust in the workplace, and it all begins in the hiring process.

So be warned – if I catch a hint of resume inflation, I will not hire you.  Even if you would have been a good fit otherwise.  My three values are listed above – if you want to impress me, then demonstrate those values to me.

New Year’s Resolutions – Must Have Skills for 2015

My 2015 goals

(Note: My goal is pretty personal, so I have blanked out the picture here. Use your own picture, or even a cartoon, to illustrate what is important to you.

(Note: I was asked by the folks at Webucator to comment on what the most valuable workplace skill for 2015 would be.  I don’t know if I answered their question, but it did get me thinking….)

It’s a brand new year, and with the changing of the calendar, many of us take the time to make some resolutions for the new year.  For me, that means doing a couple of key things.  First, I have one big thing that I want to focus on and achieve in 2015.  I write this down in big letters, put a picture with it, and hang it up in my office.  It’s an old high school sports trick to make sure that you keep your goals in the front of your mind at all times.  I see it every day while I work, and see it up close each time I leave my office.  It’s a simple and effective way to make sure that I keep my focus on what is important to me in 2015.

The other thing that I do at the beginning of each year is to make a map of where I want my year to go,  To begin this, I take an inventory of my skills.  This is a simple list of the skills that I have, and if you keep something like this on LinkedIn (or some other social media), then most of the work is already done, because you have your list of skills from last year.  Just add the new things that you have learned.

Next think about where you would like to be in the next year or two.  This is part of your professional goal for the year.  What kinds of things do you want to be doing?  Where would you like to be?  What technologies interest you?  Take some time and think about this, because this is important.

Now we get to the heart of the matter, and we begin to look at the skills that you want to grow in 2015.  This part requires some work.  It requires some reading, and it requires some thinking.  Many people struggle with that “thinking” piece.  Most of us spend our days reacting to new events and new information, and just reacting to life in general.  For this part, you need to consume information, digest it and it’s meaning, and then reflect on what you have read.  It means that you have to slow down, and really think about things.

So where do we start doing some digging for the skills in general demand for 2015?  Start close to home and talk to your boss, your co-workers, and technical leaders that you know.  All of them have opinions and some idea of the things that will be important for the coming year.  Are you still in school?  Then ask your professors, classmates, and any technical leaders that you know.  This also helps you to network and build positive relationships in your current work environment.  People will talk to you, because everyone feels flattered that you find their ideas and opinions important.  Listen to them, and take notes.

The next thing to do is a little bit of good old-fashioned web searching.  Look for articles and blog posts (like this one) that talk about important skills for the future.  I’ve read more of these things than I care to remember, but as I read them I notice some common themes coming to the forefront.  Good places to start include Cybercoders, ComputerWorld, Infoworld, and Forbes.  Some might find my putting Forbes on the list a little strange, but the real value in software is where software can have positive business implications in the real world.  Forbes gives you a real business perspective on things, and that is important in the current software environment.

After doing all of this, I had my list of areas and skills that I think will be important in 2015.  I then matched this up against my own skills, and my long term desires.  I now have a list of areas that I think I would like to pursue, and the skills that I need to grow to be able to pursue them.  With this knowledge in hand, I can now create a second poster for my wall to remind me about the important skills and opportunities that I want to be on the lookout for in 2015.

So what skills do I have in my list?  Which skills do I think are important for 2015?  I have two big ones:

  • Cloud technology – everyone is talking about how “Cloud” makes everything better.  Not too many people can tell you WHY, and even fewer can tell you HOW.  You will want to learn more about Cloud technologies (like Bluemix, Open Stack, Cloud Foundry, AWS, Docker, Azure, and others), and make sure that you get some real hands-on experience with them.  You want to be the guy who can tell people both WHY and HOW.
  • DevOps – DevOps is another “hot” area in recent months.  There are a lot of vendors with DevOps solutions, as well as some good open source alternatives.  That’s all wonderful – but you need to understand the concepts first, and how massive automation can lead to better software development.

So now you can take my two “most important skills” for 2015 and add them to your list of sources.  Go and look at other sources, talk to people, take some time to THINK, and come up with your own personal list that fits your current skills and where you want to be.  Make sure that you write your list down and make it part of your everyday routine – reminding yourself of the big picture.  Let me know what you come up with, because I am always looking for new sources of information and new viewpoints to help me refine MY list.

What is a Learning Circle?

“An education isn’t how much you have committed to memory, or even how much you know. It’s being able to differentiate between what you know and what you don’t.” – Anatole France

Recently I was alerted to the IBM Learning Circles.  I should say that I was re-alerted, because I had known about them, but had not gone out to look at them in quite some time.  I was pleasantly surprised at what I found.

In the old days (back when the calendar year began with the numbers “19”), I used to spend a fair amount of time travelling around and delivering training classes to our customers.  The classes might focus on how to effectively use some tools, or might just be on specific software development concepts.  It was fun interacting with customers and the end users of our technology, but it didn’t really scale so well.  It also took the people being trained out of circulation for the 2-5 days that the classes were being taught.

Fast forward to today.  The customers that I deal with cannot afford to take there developers out of circulation for days at a time.  Developers don’t want to learn things in a classroom, they want “just-in-time” training, and often research answers to their problems with web searches.  The pace of life for developers has increased, and the traditional training techniques just don’t cut it anymore.  This is what the IBM Learning Circles are trying to address.

So what is a learning circle?  It is a different way to approach training and enablement.  It is a collection of reviewed content, organized so end users can consume training content in smaller pieces.  More importantly, they can control when they train, and how much they train.  They can look for topics that address their specific problems.  They have the ability to create Personal Learning Roadmaps that give them a step-by-step guide to relevant training materials.  So now the training is not only “as you need it”, it’s also “as you want it”, “when you want it”, and tailored to your specific needs.  You even become a member of a community of people from around the world who are doing the same thing (learning about a particular topic) that you are doing.  It’s pretty cool.

Right now there are a bunch of learning circles out there.  There are circles for Agile Skills, Engineering Lifecycle Management (RELM), Test Automation and Service Virtualization (think Greenhat), and UrbanCode Deploy and Release (just to name a few).  So if you are considering deploying these solutions, it would be a good idea to check into these learning circles.  What do you have to lose?

 

Bluemix gets your deployments rolling, rolling, rolling…..

I recently spent some time with some of our most knowledgeable Bluemix people.  We were helping one of our customers explore the possibilities of Bluemix for their organization.  Dan Berg and Scott Rich are two of the sharper guys I know, and they were helping us.  Dan Berg came up with a great technique that enables “Blue/Green” (or rolling) deployments on Bluemix.

You can read his developerWorks article, Automate Rolling Deployments with IDS for Bluemix , and learn how to do this.  The code samples and public Bluemix project that he provides allow anyone to be able to expose this kind of capability for their Bluemix users.  I was going to post my version of the directions for doing rolling deployments in this blog article, but Dan’s is very clear and easy to follow.  He even has links to the Bluemix project with sample code, and links to a post on Blue/Green deployment.

The “meat” of this is the deploy.sh script, but there are changes to the build script (in Ant) as well.  The build script changes that he discusses will copy your updated deploy.sh script to the archiving directory.  This is important to remember (see below).  Dan discusses the deploy shell script, and you should pay particular attention to where you would add the binding of services to your new application.  The nice thing is that you can test this out in a QA pipeline deploy, before you even attempt to do something like this for real.

Just some words of caution as you go through this.  The first is that you need to remember that your build and deployment scripts are under Git control.  This is great, because it allows you to see changes in your scripts, and gives you the ability to rollback to a previous version if necessary.  It also means that as you change your scripts, you will need to COMMIT and PUSH your script changes.  I have made the mistake of editing my scripts in the web browser editor, and then wondering why the changes I make don’t seem to do anything.  It’s because my script changes have not been pushed into the cloud yet.  Another issue is that even after you have pushed your changes into the Git repository, you still need to build the application to get them to execute.  Why?  Because the copy of the deploy.sh script to the archive directory occurs during the build, and the auto-deploy runs from the archive directory.  This isn’t an issue if you have auto-deploy turned on, since the Git commit will automatically kick off a build, which then kicks off an automatic deployment.

The scripts work great.  Ina session with one of our customers last week, the students set up a test that exercised the application being deployed.  It was a simple application, and we just changed some of the titles on a web page.  We then implemented a rolling deployment, and did a push of our changes in Bluemix.  We could then watch as the changes were built, and then auto-deployed in Bluemix.  Their tests noted no interruption of service when we deployed our changes.  It was pretty cool.

 

 

Cooking with Bluemix

One topic that is causing quite a bit of talk and controversy is BlueMix.  I am surprised by the number of people who are well aware of BlueMix, yet have no idea about the power and strategic implications of BlueMix for the long term.  For many people, it was either second hand knowledge that they had heard from somebody, or just initial reactions to the slideware that they had seen.  Many people have only seen the (now infamous) Twilio BlueMix demo.

That demo is really good at showing one thing – how can I get changes and new functionality developed and deployed into the market quickly.  It shows the raw speed with which you can use DevOps services, and composable applications, to bring functionality quickly to your customers or stakeholders.  Unfortunately, it is a short demo, and so some of the more strategic implications of the platform have not been properly presented or understood.  I have my own BlueMix demo, which I show YOU how to set up and run for yourself.  My demo is very “geek focused”, and tends to focus on the development tools and the usage by developers.  So my demo is pretty limited too.  What is really needed is some plain talk on what strategic advantages the BlueMix platform can give to an organization.

Here’s my quick list of strategic capabilities that BlueMix can give an organization:

  • The ability to rapidly build custom applications that use common services and interfaces.  The components available to a user of BlueMix for constructing their application range from a variety of development tools, from an IDE, to testing tools, to automated deployment tools.  This allows development teams to use the tools that fit the project, rather than a “one size fits none” approach to having a common development infrastructure.
  • It also allows a team to use business services, to provide an application services like location services, mobile capabilities, database storage services, “big data” services, and a host of other things.  A close look at the available services shows a mix of open source services, IBM services, and other vendor services.  These are exposed via stable API’s that an application can interact with.
    • This means that rather than selling products, capability providers will be selling metered capabilities.  You make your service available on the BlueMix platform, and the application development teams use what they want, and pay for what they use.  This is similar to water and electricity usage in a house.  You may indirectly pay for the supporting infrastructure, but you are billed based on the amount of resource that you use.  Using this analogy, our current perpetual licensing would be like charging a home owner for their first five years of electricity usage when they bought the house.
    • This will (hopefully) create an API economy, where service providers expose their API’s, and the market decides which are most useful/applicable.  It might be a good time to buy the www.apitracker.com domain name, because this space could quickly explode.
  • The ability to quickly build and deploy, in an automated manner, makes huge economic sense for some organizations.  Why?  Many development shops struggle with maintaining development, testing, and production environments.  They build out QA environments that do not match their production environments, due to the excessive hardware cost and configuration complexity.  Why buy all of that hardware when it sits idle 60, 70 or even 80% of the time?  With BlueMix, applications can be deployed to development and test environments in the cloud, scaled to appropriate levels (the cloud is elastic, you can add resources), used for testing and evaluation, and then DESTROYED.  When it is needed again, it is merely a simple automatic reprovision and redeploy in the BlueMix  environment.  You only pay for what you actually use (notice a trend here?), and the not for idle hardware.
  • You also have the ability to easily scale your deployments.  Is your app popular?  Is that popularity causing you headaches because now the server is overloaded and performance stinks?  Just twist a dial, and deploy additional server instances.  Did you over-allocate servers, or memory, or CPU resources?  Then twist a dial and scale your application down.  You only pay for the resources that you use.
  • Many organizations currently use virtualized environments to do this, but this environment is unwieldly and requires constant manual intervention.  BlueMix is based on CloudFoundry and OpenStack, which means that deployment patterns and automations are portable.  This gives customers flexibility, and avoids vendor lock in.
  • The underlying technologies are based on open standards (like OSLC, HEAT, etc.), so the entire stack is flexible, allowing you to use different technologies without having to do a large “rip and replace” effort.

BlueMix is a young product, and it’s capabilities are being expanded as we speak.  Having BlueMix as a PLATFORM (hence the whole PaaS moniker, or Platform as a Service), means that as new technologies and new business needs arise, services can be developed and then provided to the organizations running on BlueMix.  This “API Economy”, or store of services, can be compared to a kitchen.  BlueMix is the basic plumbing, electricity, and structure.  DevOps services (which provides development tooling and deployment automation) can be seen as a stove.  The basic environment in the buildpacks can be thought of as the sink.  There is the potential to buy a new stove, or change the sink.  You might choose to  use something other than DevOps services, or a different buildpack, but it will have some impact on your meal.  You look into the pantry, and choose the ingredients (services) that you will use to prepare your meal.  You may follow a recipe (the project templates), or you might just whip something up yourself (who needs a recipe for a grilled cheese sandwich?).  You then prepare your ingredients (providing the custom code to bring elements together) using utensils (the Orion IDE), and your stove and sink.  Once the whole process is complete, you have your meal (a finished application).  The only difference is that BlueMix gives you a “magic plate multiplier”, which allows you to cook for one, yet feed one hundred by scaling the size and number of deployment instances.

(Note: IBM seems obsessed with food lately, check out the Watson Food Truck.)

The analogy may not be the greatest, but it does help illustrate what BlueMix does, and it does all of this on the cloud.  Everything is done on the cloud.  No clients.  No plugins.  No extensions.  Just a browser and an active account.

Jazz Moves – Learning the basic steps

Recently I have been getting a lot of email requests from people asking if they can do something “non-standard” with Jazz.  I am going to answer your questions, but I am also gong to tell you WHY you get the answers that you do from our experts.  Here is a sanitized example of a recent email:

Hi Daniel
My name is John Doe. I saw that you wrote an article on the CLM deployment wiki 
on Jazz.net. I have a question that you may be able to help with.
A customer is deploying CLM 5.0 with Oracle and they have a standard practice 
of creating a single "temp" tablespace for a set of applications like our CLM 
suite. Will everything in the CLM suite function correctly if all four CLM apps 
use the same "temp" tablespace or is it necessary for each app to have its own 
temp tablespace as it is described in our documentation?
John Doe

Just because you might be in a rush, I will give you the answer right away.  The answer is,

"Just install it the way it is supposed to be installed.
You CANNOT have all of the CLM apps use the same tablespace."

Now let me tell you WHY you get this answer (and some other seemingly unsatisfactory answers) from our support teams and subject matter experts.

Basic Steps and Stock Answers

I can fire off this answer almost immediately because I know that we have never tested CLM in a configuration where all of the CLM applications share the same “temp” tablespace.  We have enough of a challenge in fully testing all of the various topology permutations, without looking for edge cases that customers will rarely attempt to deploy.  This leads us to the first basic law of software support

Software Support Rule 1: If we did not explicitly test the scenario in question, then we don’t support it.

We’re not trying to be mean, and we’re not trying to make your life difficult.  We just want to save you the time/frustration/energy of trying an approach, or planning on some approach, that just will not work.  So often when confronted with questions like this one, we will rely on Software Support Rule 1, and tell you that you cannot do these types of things.

Now let’s dig down a level.  I honestly don’t know if this would work from a technical perspective, but I know enough about Jazz architecture to make some technical assumptions, and do a little bit of thought on why this still may not be a good idea (even if it might be technically possible).

If I assume that the customer in question has installed the minimum of CLM products (say JTS, CM, QM, and RM), then I have four different applications all sharing the same “temp” tablespace.  Having all of these applications making transactions into this tablespace will cause some requests to this tablespace to queue up, when load becomes heavier.  This will impact the end user performance, as requests are not answered in a timely manner.  Which leads us to the second basic law of software support:

Software Support Rule 2: If it could adversely impact performance, then it is a bad idea

There are some other things that come into play here.  One of the things that we constantly worry about when architecting Jazz deployments is the ability to easily move and administer Jazz resources.  What would happen to this shared temp table during an upgrade?  The upgrade process will often manipulate data in the repositories, if the structure of the data schema has changed.  Having a shared temp tablespace could impact this.

What if I added a second CM (or RM or QM) instance to my deployment?  Would two different instances of the same application still be able to share the “temp” tablespace?  In this case, I can envision where a CM instance might ignore data in the temp tablespace that was in reference to another CLM application, but I doubt that we would have made provisions to validate the identity of  a particular CM instance associated with any of the temp data.

Software Support Rule 3: If it adversely impacts future scalability, then it is a bad idea

So given all of this information, it is much too risky to attempt something like this.  There are potential issues at a variety of different levels.  All of this thinking goes into the simply stated reply of,

Just install it the way it is supposed to be installed.  
You CANNOT have all of the CLM apps use the same tablespace.

Now What Do I Do?

So that gives us our answer, but it doesn’t answer the question of how we can move forward with this particular installation.  Here are some things to keep in mind as you determine which course to take:

  • Perhaps the DBA’s don’t understand the Jazz architecture.  They might think that this would be a more efficient use of resources, and easier to maintain.  In the case of the Jazz CLM deployment, it will not be.
  • “Standards” get broken all of the time.  Often you merely need to provide a good technical justification for why you cannot adhere to the standard.  Keep in mind the end goal here – providing a more efficient, transparent, and cohesive software development environment.  The goal is not to make the lives of DBA’s and Systems Administrators easier.  We DO want to make their jobs easier, but it is not our primary goal.

Remember that any architecture is a series of tradeoffs.  While we want to conform to existing norms and standards as much as possible, it is not always feasible.  The key here is to make sure that any Jazz CLM solution deployment has a stable and supported architecture, which balances the needs of the software development teams that use the solution.

Simple Jazz Widget Tricks – Adding a Table

This is a simple and quick post on how you can add a table to a widget on your Jazz dashboard.  It is not rocket science (in fact it is just simple HTML), but it does allow you to show data that might not normally be available in your Jazz dashboard.  If you want to learn more, and do more, with HTML widgets in your dashboards, then I strongly suggest that you visit any one of the various different websites that provide HTML for Beginners types of courses (like w3 schools, HTML.net, HTML dog, Code Academy, or any one of hundreds of other sites).

How do we do this?  First go out and create an HTML widget.  Now open the HTML widget, and type in a nice heading for your table, something like “My Cool Data in a Table”.  Now click on the icon in the upper left of the widget, this will toggle your display from visual to HTML, and you will now see you widget contents in raw HTML format.  They will look something like this:
HTMLWidgetBeforeTable Add the code below to your widget, and get rid of the <div><br><div> elements:

<table style="text-align: left; width: 200px;" border="1" 
cellpadding="1" cellspacing="1">
<tbody>
<tr> 
<td style="vertical-align: top;">1 </td>
<td style="vertical-align: top;">2 </td>
<td style="vertical-align: top;">3 </td>
</tr>
<tr>
<td style="vertical-align: top;">4 </td>
<td style="vertical-align: top;">5 </td>
<td style="vertical-align: top;">6 </td>
</tr>
<tr>
<td style="vertical-align: top;">7 </td>
<td style="vertical-align: top;">8 </td>
<td style="vertical-align: top;">9 </td>
</tr>
<tr>
<td style="vertical-align: top;">10 </td>
<td style="vertical-align: top;">11 </td>
<td style="vertical-align: top;">12 </td>
</tr>
</tbody>
</table>

HTMLWidgetWithEdits

Now click on that HTML icon again and you will be toggled back to a visual mode.  You will now see your nice pretty table within your widget!  


HTMLWidgetAfterTable

You can now go in and enter data and change the data in each of the individual cells.

What’s Next?

Here are some helpful tips when working with tables in Jazz HTML widgets:

  • This is not some Jazz specific capability, it is just simple HTML.  If you want to learn more and do more, learn HTML using some of the resources that I linked to at the top of this post.
  • To add another row of data, just add a block of HTML at the end of your table, between the last </tr> and the </tbody>.

<tr>
<td style=”vertical-align: top;”>7 </td>
<td style=”vertical-align: top;”>8 </td>
<td style=”vertical-align: top;”>9 </td>
</tr>

  • To change the width of your table (the columns will automatically resize based on the contents), just edit the WIDTH parameter in your <table> tag. I used 200px in this example (for 200 pixels). Play around with different table widths, but keep in mind that your audience will use different browsers, and may have different widths for their browsers.
  • Each block of data between <td> and </td> represents a single CELL in your table.  Each block of data between <tr> and </tr> represents a single ROW in your table.  Now you can see how the data is organized in HTML format.
  • It is easiest for me to just put in a blank table using HTML, and then go back to the visual editor to fill in the data in the table.  Do what is easiest for you, but keep in mind that you can edit the contents of the widget in either mode (visual or HTML).

No Nonsense Tech Talk Member

These are my PERSONAL views and observations

The postings on this site are my own and don't necessarily represent IBM's position, strategies or opinions. Anyone is free to use, copy, distribute, modify or sell the source code and other materials directly linked from dtoczala.wordpress.com and is provided "as is" without warranties. I am not responsible for any harm or damage caused to your computer, software or anything else caused by the material.

Recent Twitter Traffic


Follow

Get every new post delivered to your Inbox.

Join 255 other followers

%d bloggers like this: