On Weighing Job Offers…

As my apprentices are wrapping up this 12-week bootcamp, they’ve been interviewing and some are getting multiple job offers. The #1 question I get from those with multiple job offers is… How do you weigh the offers and make a decision?

What I do:

  • Write out the pros and cons of every offer.
  • Talk with my mentors about the companies and the offers to get their feedback.
  • Talk with my husband to make sure I make the right decision not just for me but also for us.

These are just some of the points that I look at and the questions I ask (not necessarily of the company but through my own research as well) when I look at offers side-by-side.  These are listed in no particular order.

Skills

What skills will I be using in this position?  Am I using the best of my skills to the best of my abilities?  Is there room for growth to hone my skills and pick up new skills?

Environment

What is my environment like?  Cubicle farm, open spaces, or something in between?  What’s team collaboration look like?  Who will be my teammates and what are their backgrounds?  Is the company involved in the community?

Location

Is the company in a location that’s right for me?  Highway accessible?  Near places that I need access to (bank, post office, grocery store, food sources in general, parks, etc.)?  What’s the traffic like between home and this location during the hours I’m commuting?  How much time am I sinking into the commute and will it be worth it?

Benefits/Perks

What benefits are offered?  Health insurance – types of coverage/costs? 401k? Profit sharing? Flex-time? Remote working?  Pair programming? Mentoring? Team building? Development/training or other opportunities to learn?

Company’s Mission and Goals

What does the company do?  Am I truly interested in what they do?  Is it creative enough of an outlet for me to stay interested?  If it’s a place where it isn’t creative enough but yet I believe in them, will I have time to do side projects to appease the creative side of me?  Is this a company that I can wake up and be happy going to?

Salary

What does this company pay for this position?  Is the pay rate comparable to similar positions industry-wide?  Are there contract stipulations tied to salary that I need to be extra-cautious of?  Are there signing bonuses that I need to be aware of?  Is there a certain salary range that I need to survive in the world and if so, does this offer fit in that range?

I Am Not a Fisherman, But I Teach Fishing…

If there’s anything I prefer to do as a mentor to people coming up in our field, it’s that I prefer to teach them how to fish rather than give them the fish.   While I can give them a fish, once they’re out on their own, I won’t be there to constantly supply fish.  So I want to make sure they know how to source their fish.  Note: No fish – carnival or otherwise – were harmed in this post.

Navigating the Search Engines

One of the things that works in my favor is that I’m old – I drop Trumpet Winsock when I want to end an age conversation with my younger peers, but I can go back further with my older peers.  I can remember life before web browsers and search engines.  This means that I also had to figure out how search engines worked once they came out.

In the early days, I would research things through Metacrawler, Altavista, Yahoo, Lycos, Infoseek, and Excite.  Depending on the topic, I found different search engines to give me different results.  If I wanted to find answers to a tech question, Altavista almost always got me what I was looking for in a short amount of time.  Now if I was looking up some of my classmates, I would use Yahoo.  The more I tried searches across the multiple search engines, the more I learned how to tailor my searches.

If you’re searching for a phrase such as referential integrity, group it in quotes so “referential integrity”. If you want your search results to include a term, then use the + before the term.  If you want your search results to  exclude a term, then use the – before the term.  So if I want to see referential integrity as it applies to MySQL and not SQL Server, I’d search for “referential integrity” +MySQL -“SQL Server”.  You can learn more about search engines and operators here.

Identifying the Right Resources

Sometimes, you get search results that are uncertain.  Before you copy-and-paste code you find online, make sure you understand what that code does.  When it comes to learning more about a language, I am constantly looking up tutorials for the language name (Java, C#, JavaScript, Groovy, etc.).  I like to play with a language to learn about it, and tutorials get me into playing.

Some people prefer articles on specific topics.  So if I as a web developer want to touch on web application security, I may want to find articles on OWASP’s Top 10 Risks.

If it’s a quick solution, StackOverflow or the MSDN Forums are two great sources for programming solutions.  On the SQL Server side, SQLServerCentral is also a great source.

Intellisense/IDE Cues, Help Files, JavaDocs, and More

If you’re using an IDE and have questions about code, you may find Intellisense or some other IDE hinting cues built in to offer some guidance.  Help files and language documentation such as JavaDocs are also good sources for answers if you know how to decipher them.  Of course, there’s also the old school way of solving things (besides trying things and seeing how they work) – books!  Whether you want eBooks or are a fan of printed books, books can also be a great place for finding help with coding questions.

User Groups, Conferences, and Meetups

If you’re looking for other people to talk tech, user groups, conferences, and meetups are the way to go.  Whether you’re job hunting, looking for help with a problem, or just looking for common minds, networking at these gatherings can open a variety of opportunities that you wouldn’t find otherwise.  Some of my favorite mentors are people I’ve met at user groups, conferences, and meetups.  So how do we find these gatherings?  Do a search for your locale tech user groups or even your locale dev conference to get started.  Meetup.com is great for finding meetups – group gatherings over a common interest, tech or otherwise.  Also, tech event aggregators such as Community Megaphone and Cleveland Tech Events  can also help.

 

Sample Non-Technical Interview Questions

This past week, I acquired a book on interview questions – 403 questions to be exact – put out by Growth Everywhere.  While I look at these questions, I am tempted to answer some myself.  These are just a few of what’s in the book:

Have you ever taken on an assignment without knowing how you were going to do it? What happened?

I do this frequently.  When I get assignments that I’m uncertain of how I’m going to do it, I usually take this kind of approach:

  • Hit up the search engines to gain more domain knowledge to understand what I’m working with.
  • Cross-reference the domain with technologies already available for the problem.  If there’s a solution already out there, I’d evaluate it to see if it solves the assignment I’ve been given.  If so, I can suggest it up the chain.  But if they want me to code from scratch, I’ll at least have an idea on what kind of approach to take.
  • Get to work and deliver some deliverables!

This has worked well for me so far.

Tell me about a time when you felt like a “fish out of water.”  What did you do to increase your comfort level?

I get this feeling a lot, as I’ve been a fierce introvert for most of my life – only in the past 8 or so years have I really broken out of my shell a lot.  (Yes, I may seem extroverted at times, but at the end of the day, I wind down by myself or with a very select group of people who make it easy for me to wind down.)

I’m already getting that feeling now as I prepare to attend a security conference.  I have that “fish out of water” feeling because I know few people in that community, and so it’s a sea of unknowns for me.  However, I’ve been preparing for the conference by researching the history of the local conference, who the organizers have been and are, and what sessions are presented.  I’m still nervous as I see no women speakers and few familiar names.  But my research will help me grow comfortable – and then just going to the conference and experience it will probably ease the rest of my nerves.

 

Tell me about a work situation that required you to adapt to a wide variety of people. What did you find difficult about that? What did you enjoy?

While working as a web developer, I had to be on projects where I dealt with:

  • Marketing – both at the graphic designer level and at the director level
  • IT – both at the deployment level and at the team lead level
  • Product owners
  • Fellow developers – junior web devs, managers, and service devs

The difficult part was being the middle man and listening to the “he never listens to me” and “she never hears me” complaints from various sides.  I eventually was able to show everyone that we could play nice together, while acknowledging that certain team partnerships just aren’t meant to be.

The part I enjoyed most though was being the middle man and encouraging everyone to come together to solve problem while using our strengths and domain expertise.  Even though I was in the web developer role, I’ve taken to team dynamics and relationships quite well naturally, and I find that being diplomatic and empathetic goes far in that middle man role.

Tell me about a time when you were able to turn someone’s opinion completely around. How did you convince that person?

This one time, at GiveCamp… we had a non-profit that had Joomla on their server.  Their IT guy had explicitly told their non-profit representative – absolutely, positively, without a doubt NO WORDPRESS.  Well, WordPress is a common solution that we use at Cleveland GiveCamp, as we train our non-profits on how to use it.  It’s also considerably easier to use than Joomla when it comes to non-technical users.  Having an IT background myself, I was able to convince the non-profit rep to let me talk with her IT guy. Once I got the IT guy on the phone, I told him that I was with the GiveCamp team and wanted to understand his reservations with WordPress.  Security holes – newer WordPress versus his archaic Joomla portal.. yeah.  Lots of calls – we do the training and provide links of references.  When I mentioned that a lot of what the end user needs is well-documented and that WordPress is more intuitive than Joomla (which means less support calls for the IT guy), he relented and realized it isn’t so bad.  It took a lot of patience and empathy on my end, but we got his buy-in after all.

 

Conclusion

There are a lot more questions in this book, broken out into competencies that employers look for.  These questions are thought-provoking, great for getting stories out, and overall well laid out.  If you’re in an interview situation – interviewer or even interviewee – this book is worth checking out.

The Poetic Challenge

Some of my apprentices are going through a job application process that asks them to write a poem.  One asked me if I’ve ever attempted it.  While I know about that particular company’s application process, I have no interest in working there and have never attempted the poem.  However, since an apprentice asked if I would try it for the heck of it… here it goes:

Sadukie’s Tech Career in Rhyme

How I love being in tech
Even if the app has no spec
My path so far has been quite vast
Let’s take a look into my past

My co-ops were mostly programming
Definitely not poetry slamming
Learned Visual Basic, FoxPro, and SQL
Not all the languages are considered equal

After co-ops came some time in IT
Desktop support, inventory tracking, lab stuff – fun for me!
Realized I might be exposed to porn
Remained professional – held back laughter, opted for scorn

Soon enough, I had graduation
But no time for celebration
Hit the classifieds, looking for work
Found an ISP, learning on the job – what a perk!

Phone support was my game
But soon management would be my claim
Let my employees watch a parade
In the process, a strong team was made

ISP got bought out, so away I went
Manufacturing IT, 4 years spent
Database admin, PBX
Crystal Reports, not SSRS

Foolishly thought VB to VB.NET would be easy
Stumbled through but that OO VB made me queasy
Knew that this position would be a dead end
Answered the call of a dear friend

Next 4 years, spent full time coding
Merging my IT and dev skills. data loading
Doing SQL and setting up SSRS
Learning C# – Microsoft MVP in 2 years, yes!

Company grew from small to mid-sized
Saw this growth and realized
Losing family-run feelings, getting too corporate, too fast
I knew I wouldn’t last

Stunted growth and unkept promises
Exploding career – yes, this is
Time to go on my own
Consulting and learning, with an authoritative tone

Technology is what I love to do
Let my talents help you
From database to web, REST and AJAX
Give me your problems to solve so that you can relax

Cleveland Tech Consulting is where it’s at
Though rhyming poetry is not our primary hat
Coding, training, and consultation
Those are my motivation

Bonding Over Old Code

While dealing with my apprentices this week, one of them asked me about my early days of learning languages and if I had any of my examples.  Funny thing is that I knew where my code from my college days lived – I mocked a lot of my work in this past post.  I shared my code with this apprentice, and oh the mocking and laughing!

While we were comparing stories of how we ended up getting into programming and talking of old code, I was determined to get that applet from my final project working.   So I fired up NetBeans, copied the code in, restructured files to match the old code, and after debugging a few things, I got it working.

There’s even more proof that I am not a designer and not even a pizza maker:

pizza-applet-1 pizza-applet-2pizza-applet-3

 

Those represent:

1. Pizza crust
2. Pizza crust with cheese
3. Pizza crust with cheese and pepperoni

Fun times!

Reflecting on Past Roles…

While my apprentices are embarking on their job searches for their adventures in software development, talking with them has me reflecting on my past roles and what I like about each.
Hatrack

  • Management – I love wearing the manager hat.  While I stumbled into the manager role through a rocky road, I still enjoyed being in a leadership role and collaborating with the other departments from the management role  Whether it is employee relations, crisis management, project management, resource management… I actually enjoy dealing with all of that.  Being in management really put my leadership skills to work and also challenged me to grow a lot.  It also helped me realize that I love leading from the trenches.  I come from a family of servant leaders, so it’s in my blood and nature.
  • Software Development – I started as a hobbyist programmer, writing Visual Basic 3 applications and talking to Access databases – in the middle of my high school education.  Later in high school, I picked up web development skills – Perl, HTML, CSS, and JavaScript. I eventually went for my degree that put the theory behind all of it.  All of my internships and co-op experiences in college were programming positions.  I love problem solving and debugging.  What I enjoy most about debugging is wearing that detective hat and trying to solve the issue.  I also enjoy the data architecture, infrastructure, and user experience sides of things.  Actually, I don’t think there’s a part of software development I don’t like.  External factors may be a different issue, but the process of software development from requirements to release – I’m up for an adventure!
  • IT, The Administration Side – Oh, infrastructure!  I think I enjoy these roles because there’s a degree of control involved.  I really enjoyed my courses in college on web server administration and even on network administration.  To this day, I can still build network cables if I have to – some things are just ingrained.  Database administration and web server administration are my favorite IT areas – I am apparently the Apache/IIS Whisperer when it comes to debugging problems with them, and SQL Server seems to whisper to me as well.  Sure, those whispers come from the log files.  Sure, it’s an extension of debugging. But I enjoy those things.
  • Tech Support – Phone support, desktop support… there was the quick gratification of solving a problem and seeing the end user move on happily.  Growing up in a non-technical household, I was already used to doing tech support for the non-techies, so it was a great start for me career-wise.  I have a way of creating pictures and being patient with my end users which makes it easier to get the job done.
  • Team Coaching – Whether it’s bringing Agile methodologies or helping teams understand each other and building team chemistry, I’ve found the team coach role to be a natural fit for me.  This is a role where I have a lot of conversations that lead to answers to solving problems.  It requires a lot of patience dealing with personalities who sometimes just don’t get along.  Sometimes, the team coach also deals with conflict resolution and other difficulties.  It keeps me on my toes.
  • Instructor/Mentor – Having an official title where I get to show people new things and see that lightbulb come on – that is my current happy place.  I love sharing my passion for technology with people who want to be in the classroom and want to learn these things.  Being in education, I need to stay ahead of the curve and up on technology so that I can make suggestions to keeping the program relevant and updated.  Being a programmer who has many programming language paradigms and syntaxes under her belt makes me very versatile and able to translate between languages fairly well.
  • Community Outreach/Publicity – This is purely in the technical realm, related to my work with conferences and the community.  Networking and encouraging others to get involved with the community – I really enjoy being able to help grow community and promote it.  Whether it’s a statewide conference, regional conference, or even local event, if it’s tech-related, it’s something I can almost always promote and spread through a decent channel.  I’m not afraid to hit the search engines to help identify target audiences – attendees, sponsors, speakers, or even service providers.  From something as small as single digits to something with 1500 attendees… and I’m always up for the challenge of more.

My adventure in tech has been a wild ride so far.  I am very thankful that I went into tech early on – this industry in general feels like “home” for me.  I’m looking forward to seeing where else I may go, as the roadmap ahead is wide open.  So many stories so far and hopefully a lot more to come!

Why I Like Pair (or More) Programming…

As I prepare my apprentices for their interviews, I reminded them about the possibility of pair programming interviews.  While I wasn’t exposed to pair programming early in my career, once I finally was exposed to it, I was beyond thrilled!  These are some of the reasons why I enjoy pair programming.

Learning From Others

I really enjoy learning from others.  I never know for sure who I may end up pairing with, but I go into each pairing session with an open mind.  Whether we’re talking through the problem or writing the code, we may come in with different programming styles.  However, talking with each other and compromising along the way – I actually enjoy the whole process.  I am also open to pairing with developers of various skill levels – from novice/hobbyist to advanced.  In my past experiences, I have found that the communication and patience between the pair tends to determine what makes a pair successful, moreso than skill levels.  We come from different backgrounds, and I like watching how they come together.

Writing Better Code

With multiple eyes on the code, we can spot ways to improve each other’s code, or at least talk about the different approaches we would take.  In pairing, there has to be a lot of communication about the code, which means talking through complex issues and making sure not to approach a problem blindly.  By having these conversations and clearly conveying our thoughts, we have a better chance of writing better code than if we coded by ourselves separately.

More Than Two?

As the title suggests, I have been in programming situations where we’ve been a group bigger than 2.  My fondest memories go back to working on a team of 5 devs with 1 machine that happened to be remotely located.  Each one of us had different backgrounds – web developers, firmware/hardware/low-level developers, database developers, math genius, etc.  Quinting with those 4 devs taught me how to be a better backseat driver and how to play off of each others’ strengths and personalities.  Unfortunately, it didn’t break me of my inner editor – I still would point out missing semi-colons and mismatched curly braces.

Overall, I am thankful that I’ve had the pairing (and more!) experiences I’ve had so far.  So much learning, so many more avenues to think about while writing code, and so much desire to pair with others and have fun!

Special shoutout to my friends at LeanDog for giving me solid experience quinting with such an awesome team!

LeanDog