Category Archives: Career Management
Over my career as a software something, I have had a bunch of technical interviews. Some I have done well in and some I have not.
The first part of this journey was understand something for myself. For the interviews I performed poorly in, about 50% of them I actually knew the answer, but could not get it out. Why was this?
The second part was as I led teams, I wanted to find an accurate way of assessment where a person was in their journey, whether they would stick with it, and whether they are a good fit for the rest of the team.
Here is the presentation I did to a lunch and learn group at CodeCore:
I feel many Technical Interviews fail to do their job properly. Whether the process is not well enough thought out, the people involved are not trained, whether interviewers are evaluated higher for their technical skills but not their people skills, or they really just trying to get extra “clones” of themselves. But without a doubt the worst is, there is a lack of reflection and accountability for the actual success of their chosen candidates.
Still too many questions are on topics or specifics that the interviewee will never do in their actual day to day work.
So many people conducting technical interviews fail to imagine that this is a two way process. That the “employer” is actually showing the future “employee” how they work with people.
All of that said, some are getting right and it is not from the traditional “hazing” approach, but a more collaborative approach, where the potential “employee” show a project they have worked on, where the interviews feel like a great passionate conversation..
A person, company, organization community can be judged on its actions and behaviours not its intents. Especially when the shit hits the fan. Its easy to be nice when the world is all good. Behaviours, the culture under stress shows the real capacity of the leadership.
So I looked for a tech cofounder and infact found almost three. Then a friend who was a developer said they would be happy to “play” and see what comes of it, if we paired (pair programming) as it would be fun, and if he was going to use his non-work time he wanted it to be fun. I agreed this was a better approach, building alone is hard (Thanks Phil)
A bit of context
My father was a computer engineer i.e. he fixed mainframes for Digital, DEC and than Apple II upwards. My first computer i.e. my dads was Sinclair ZX81 it had 1k of memory and used a tape cassette for storage. I learnt BASIC. My second computer (this time mine!) was a BBC Micro 32k of RAM. My first serious application was again written in a different form of BASIC and allowed you to paint and draw. My childhood was very unstable and I went to a number of foster homes and many schools (I was little too curious). Anyways eventually I got to college (16 yrs old) and did a (BTEC) Diploma in Computer Science.
It felt too easy for me and I was more curious about humans so dropped the course (even though I was one of the top performers) and took a bunch of A Levels in Psychology, Sociology, Communications and Human Biology. At this point I learnt , I was a really bad at written english (it took several years before I found out I was dyslexic). I dropped the courses and went to Northern Ireland for a year or so. I came back and tried again in one year intensive courses. Someone close to me died and I screwed up my exams.
I got enough to get into the Higher National Diploma for Computer Science at the University of Hertfordshire, UK. In the first year I was in the top 10% of my class and got moved up to a Degree program and graduated in 1996. And than than did not code again until 2013.
Becoming a coder, again..
[update] in hindsight these courses gave me confidence, but did not relate to the reality of what it is like to be a developer in a full-time job.
I wanted to learn Ruby and Rails, all along because I want to build prototypes for my startup (Professional You). Yet there were no local courses. I prefer learning with others, its good to have a peer group. So in Jan 2013, I booked myself on RailsConf 2013 and gave myself a deadline to read and complete Learn Web Development with Rails prior to the conference. I was introduced to a start-up (Thanks Jessie) and started working with them two days a week as a junior rails dev. I learned a couple things about myself, I was not good at asking questions from the lead software developer as I was worried about taking them away from their tasks (as they were under a lot of pressure from their boss) and we worked remotely, which is not ideal for a junior. I also found testing before coding was very difficult, in part because thought I needed to know rails better first. Additional good Rails book that helped in my journey were Rails 4 in action Rails Anti patterns, Peepcodes Videos on RSpec and rails casts. railscast are brilliant for an immediate problem to solve but is very out of date, Code School as a selection of rails videos as does GoRails. That said I do not find that anything I learn online or via video sticks, I seem to forget it quickly..
If I was to do it again:
- Learn Web Development with Rails there is just no better
- Build several Web Apps for yourself e.g. store all your boardgames/books, role up characters for RPG, whatever feeds into your hobbies and use rails casts to add features
- Read Rails Anti patterns
It becomes clear that Rails does so much and its BIG, but the better your Ruby knowledge, the easier working with Rails, no shit. There are times you have to build your own model without Active Record and connect to APIs. Everything becomes a little easier, your code gets tighter.
I tried the Well Grounded Rubyist book, whilst I understood all the concepts it was too much without having not built Ruby Apps first. Most of the online Ruby course were interesting such as Code Academy, but they failed to stick in my head, one exception was a course on Lynda called Ruby Essentials, which frankly was brilliant (Teaches the basics and the gets you to apply them in a Ruby App). After that I tried the Ruby Koans. The hard part about coding is trying to remember it all, understanding I think is easy but holding it all in your head is hard. One senior developer said to me you do not need to remember everything just remember you can, then Google it. The more times you use it the easier it will be to remember. His other tip was to store all of his projects on Google Drive, so he could use it has augmented memory.
Training that actual gets you to build an application, I found to be more useful and gave me extra value, rather then little bits of code. Looking at how other developers tackle the same problem is also incredibly useful. Peepcode did a bunch of Play by Play videos, which taught me a lot about how they solved the problem and I also learnt how to use different tools.
The other thing you should do is work out how to connect to your local community:
- Ruby Rogues podcast is awesome and their discussion site is worth the $10 per year
- Find the local Ruby meetup group
- Find a peer/mentor who will review your non work code
If I was to start again:
- The best beginner book for Ruby was The Book of Ruby: A Hands-On Guide for the Adventurous
- Add RubyTapas videocasts
- Then follow up with the Well Grounded Rubyist book
- Read Metaprogramming Ruby 2
Learning about software engineering/development..
There are a bunch of tools and “behaviours” (ways of working) that you have to learn, some of this comes from you just coding, but some you need to spend a bit of time working on i.e. Git (or other version control)
- BASH – Re-learning Unix i.e. Terminal on the Mac, SSH
- Text Editors – Trying out different text editors, BBEDIT, RubyMine, Sublime and finally Atom
- Version Control – Getting comfortable with version handling i.e Git, how to use GitHub, decided to use command line to embed it in my head
- Package Management – so home-brew is better than Mac Ports
- Debugging – Where to find the bugs for debugging, using irb, rails console, understanding the logs and the stack trace
- Object Orientation learn and understand all the meta language. I have yet to find a good book on this.
- Data Structures – I am comfortable with, but I have yet to find a good learning option for this
- Algorithms – The best option I found was Grokking Algorithms
- Where to find the information that will help i.e. online manual, google, stack overflow, google groups
- How to tackle the actual problem, when to step away and take a moment
- Where to ask a senior and not annoy them (still working on this one)
You are never ready, its just a matter of choosing the time, finding the courage to be vulnerable and going for it.
Its seems surprising that some of the best times in my life are when its has gone so wrong, you really discover the other people around you in that moment the good and bad. You could wait to be that perfection and never make a move. I knew that two days a week of coding after working the other five was tiring me out, but I also knew I liked to code, I love problem solving. That said I had yet to build my GitHub profile, most of my work was private, most of my student work was very specific, so not a complete web application but do this on this page. Whatever, It was time to go full-time. Lets see what happens..
The best way to get what you want is to simply ask
Just before christmas 2013, I sent out an email to the Ruby meetup group in Vancouver, BC. The discussion space often has recruiters looking for rails developers, why not flip this and advertise me! I did not expect much of a response..
Subject: Looking for a Junior Ruby on Rails job
I hope you are having a great day and not too bored..
I have computer science degree and most of an MBA. I have played and succeeded in many other careers like communications and being a politician. And I have learnt that I love to create. So I went back to school (BCIT) to refresh my computer skills and learn web applications, after two years I have done a bunch of evening courses with an average grade of 93%. For the last 6 months I have being learning/coding Rails/Ruby on my weekends for a local startup. I have also attended a bunch of Rails/Ruby conferences in the US on my own dime.
Full-time I have being working for Apple as a Genius/IST Support. I know crazy right working 7 days a week for two years.. I am now looking for a full-time software development role with an emphasis on Rails.
You will find all the good stuff in my linkedin profile -> ca.linkedin.com/in/ericbrooke/
Continue having a great day 🙂
In all I got 80 responses, over a four week period (40 within 48 hours). There were 42 real jobs going, 20 were long term contract, 8 short term contract. 10 were you are the first developer, no not good, go employ a intermediate or senior developer! Leaving me with just 17 companies to talk to, after researching each of the companies, I spoke/emailed to them and then did 14 actual interviews. After which I cut it down to five after second interviews I cut it down to two..
Finding the right team to join..
You are the apprentice and you are looking for master/mentor/teacher/coach/facilitor not a boss, not the brilliant programmer whose ego is big enough for you both.
A couple principles for me:
- Those that asked for me to do code test prior to having a first human to human conversation, I did not continue.. I am not your code bitch.. or your slave, talk to the human in me first
- How much they truly bothered to explain who they are as a company and their intended culture, mattered to me.
- You need patient senior developers who are willing to coach and that their bosses will give them the time/leeway to coach
- That you will learn a lot from developers who have different styles and roots, prefer different languages and frameworks
- I need to grow and learn fast, how are you going to help me get to intermediate?
- Seniors that have being teachers or parents tend to be better at explanation. Just a theory at the moment.
I want to work with awesome people.
Be they smart, emotional intelligent, creative or just different. The most laughter at work I have had are with teams of such diversity, with so many forms of intelligence, not just the academic kind. I am going to be spend a lot of time together, consider it a road trip, we will get angry, sad and laugh together. The culture, the people that I work with is important to us all. For these people I will have lasting loyalty, forgive and move on, push the boundaries to ensure there is a future and learn every fricking thing I need to learn, take time out of the rest of my life to make my colleagues life easier. So if you send me a coding test before, we know, we like each you can frankly go @@@@ yourself.
A good interview is a collaboration of us exploring each other.
[updated] Questions to ask –
- Have you ever had any juniors before?
- How do you review code?
- What is your test Coverage? What are you not testing?
- Do you have Introspectives? What do you do to help developers learn?
- Do you use pull requests?How do you use them?
- Do you state why the code is wrong in the pull requests?
- How will help me growth fast, so I am no longer a junior?
- Is there flexibility on which projects/teams I work?
Understanding your capability is hard and is often judged on so many irrelevant things
There are few jobs where you are ask prove you can actually do the job before you actually do it. Some tech interviews felt like you were expected to put out on the first date.
The best I had were conversations and tested practical experience, not theoretical mathematics. The actually best asked we to describe what I know and then sat me down at a computer asked me my favourite coding tool loaded up an example application. They asked where would I find a routes file, explain these routes, where do they take me, asked me to follow the whole path what was load etc. After if I want to add this to the app what would you do? “feel free you access the internet”, explain what you are thinking? The sneaking bastards even had a couple “bad” things in the code to see if I would notice. So I did not mention them until I was about to leave 😉 That was my first job offer
The worst started with theoretic problems to write pseudo code on the board… Funnily enough they started questioning my pseudo code. Some people see an interview as a way to prove their intellect not understand yours.. Have you forget who is interviewing here, you, er no both of us.
For people who did their computer science degree a long time ago or learnt on your own path; I recommend this book Think like a Programmer by V. Anton Spraul. The most stupid, abstract, non-relevant questions I have every being asked in any interview were all in technical interviews. And folks I was an elected politician.
Testing the “interviewers”
I have learnt more from people, when I have failed or needed help.
So every job interview I find something to fail at and see how the interviewer copes. I will also ask my interviewers how they will cope with my failure and how they cope with theirs. I will always ask at the end of the interview what do you like and not like about me. I learn so much from their response.
The type of organization to work for..
If I am going to work on something, I need to care..
Go for an one domain company, startup or for an agency style..
Domain companies tend to give you a position and you have to earn your right to grow, the structure tends to be more rigid, yep be a junior for three years. You get small parts of a big cog. But you would learn about scale to a higher degree. And maybe they may have systems/coaching/mentors/learning plans in place to accelerate growth of juniors. That would make sense would it not?! not one on my list.
Startup, happy to take the risk but you have to love it and I did not love any of the startup offers. Also they tend to lack the numbers of senior developers you can learn from.
I went agency i.e. build prototypes, because I wanted to work on a lot of different products in different domains, I felt I would learn more faster, and so far that is true comparing my growth to my friends. With prototypes you have to do the beginning a lot and then you finish, and then you do it again, there is opportunities to grow in each project.
The job I took
It felt like a conversation between curious people.
It started on the phone, progressed to face 2 face and then there was a take-home coding test. They were good questions that I had to think about. The whole process felt open, unstressful, they trusted me and I trusted them.
I asked my boss what does he look for?
“People with a wide life experience who can clearly show they can learn”
So far it is pretty awesome I get to work with three seniors who have different approaches and the diversity is already teaching me a lot.
So after two and half months I got laid off. They removed the Junior developer position (it affected two positions), and I was the least experienced, through out the company). Two weeks later 11 more people got laid off, then another bunch a couple weeks later.
It was also reminder whilst you can test the people you get to work with. But their bosses can(may have to) change their mind (and in fairness it may be outside of their control). So in future I will look at the leadership and their track records.
I would still make the same choices, and worked there. I learned an incredible amount and worked on 4 projects.
All of that said, I ended up in another startup mybesthelper where my first job was to get our tests over 85% and upgrade their Web App to Rails 4.1, fun 🙂
I am a workaholic (I never feel I work hard enough), there used to be a few things that make me pause and force me to reflect such as illness, love, friends, mentors, etc. Sometimes these “interruptions” are random and infrequent and may not occur for several years.
Life has taught me to occasionally pause and consider who and where I am.
Every year now I review my life, I considering all aspects and what I need to change or not. At work they would call this a performance review.
You in the end, are the only person you have to live with throughout your life, you need to stay in touch and avoid too much drift. A little drift is good because it can allow you to reflect and consider new paths.
I use the following categories to help me breakdown what is important.
These are my personal ones that have change throughout my life, you may have different ones, over time you will find that they will evolve.
Is there enough love my life in terms of relationships, friends and family? Are there people in my life that cost more then they give/gave? Am I giving enough to them? Do I Love myself? Does your “friend” spend more time talking about themselves then asking you how you are? Who helps you out when your are sick? Who calls you out on your stupidity? Of course these questions are reversible? e.g. are you a good friend to them?
Am I working or playing towards something? Am I just floating? Am I happy with my level of progress?
Am I giving back? Am I mentoring, teaching or helping others grow. Am I paying attention to politics and the communities needs?
Am I still the same person or have I evolved? Am I growing and learning? Am I pushing the boundaries of my personality, my knowledge, and my skills. Is there enough challenge in my life?
Do I have muses? Do I have people? Books? Music? Arts? Games? Food? Is there something refreshing my soul? Do I have moments to explore or simply rest?
Am I healthy? Do have the body that I want? Can it do the things I want? Do I eat as I should? Do I sleep as I should? Are you snappy with friends? Do you need time off?
Do I enjoy it? Do I have a leader who inspires me? Does the organization value me? Am I able to use my core capabilities? Is the cost of working for them matched by the value I receive? Yes I give my work a performance review – are they what I need?
Do I have enough? Do I have plans for when things go wrong? Do I have saving goals/purposes.
9. My Drivers
Over time you will start to see patterns in your behaviours, things or people you prefer to be around. It has helped me understand that I have certain drivers (some good and some not) for example I am incredibly curious, I want to know why, but do I spend too much time exploring/discovering and not acting? There are things that I sometimes find difficult to manage e.g. being a workaholic do I make sure that I have enough rest and/or vacation, is my health good?; we are all better people to others when we are refreshed.
Making it real
Often I will draw a mind map for each (1-8) and then give it an overall score between 1 and 10. If it is lower then 5 I start to consider how to improve it, by adding things that could improve the score on my mind map on the edges. I build an action plan for the next year e.g. If I do not have enough Love, should I meet new people, do I deepen the my relationships that are good for me, or do I remove people from my life. After completing all the mind maps I consider the bigger picture and the inter relationships between each mind map, e.g. could I kill two birds with one stone? Or is one so high and at the cost of others e.g. Work is at 9 but Love is at 2.
Then I will consider my drivers. Some of these drivers will clash with others, how are you managing that balance? I draw an illustration for each of my drivers and consider both the good and bad of each.
Then I again I will look at the connections between all (1-9).
This is the way I consider my life on an annual basis, you may have different things that matter, different drivers that push you. I urge you to discover who and where you are and how to make sure you are in control of your life, not too much control, but enough to be heading in the direction that you wish.
The reality for most people is you will have many jobs and careers.
My journey so far would appear to be all over the map. I started as apprentice potter, a newspaper delivery boy, a general dogsbody in a kitchen, a cook, a chef, a computer scientist, a student politician, a trainer, a charity campaigner, a political campaigner, a english teacher, a dive instructor, a politician, a cabinet member, a marketing VP, consultant, startup founder, a college professor, a tech support, and a developer.
Every job and career can teach you many things (if you are paying attention), changing either, will give you a faster track to understand the similarities and difference in different sectors and jobs. In the end by having different of jobs/careers you will see connections, innovations that others who are stuck in one role and career will rarely see.. For me I connect so many disparate things, see opportunities where others are blind and I am constantly readdressing what others see as the “truth”, common sense or the obvious. All because they are coming from one angle or a limited few angles and I am not.
Hint when you have lost your keys stand on a chair it will allow you to see the room from a different angle that you are unfamiliar with and you will pay more attention because it is new.. I am suggesting the same thing about your career..
A job and career should fit to your needs and desires at the time.. sometimes that will be simply to pay the rent, other times it should be explore another part of you. Choose a pathway of jobs and careers that will make you happy and that will teach you the things you need and desire, to help you with the next step.. consider it a pathway or a tree with many opportunities..
Plan your professional life.
So if you change your job career regularly what about loyalty to orgainsations and businesses, fair question:
- Public companies are often more loyal to their shareholders and the organisations survival then you, yes even if you are the founder or CEO.
- Private companies loyalties are determined by the power structure or family relationships or funders.
- Governments are loyal to the last electorate vote, who often vote on the last bad thing the government did, whole programs and departments are wiped out as governments change.
- Non-Profits immediate future are determined on the economic cycle
Ok a touch cynical I appreciate, but the reality is organisations are always changing even if a bit slowly. And so should you!
Here is a couple things that helped me and things I continue grow:
1. Importance of self awareness
The more context and angles you see yourself in, the more constructive feedback you get, the more you will truly understand yourself. As you experience different organisation cultures you will build an understanding in what you like and dislike. You will need to book sometime for yourself to reflect, process and understand.
Most people are not truly aware of what their dream job is, they even think they do, just do not know until you have tried it. Maybe you have be driven to this point because it was what was expected of you by your family or friends or teachers. Chill, I personally do not think you have to have a job or career for life, you are not a penguin you are a human you have choices. Sometimes having choice is part of the problem..
In my experience, there is something more powerful then the right job, its working with an awesome team. When this happens the role seems less important as long as you are contributing to the team. Being good in your role and being proactive in learning becomes natural.
Trying out a few personalities tests will also give you some slivers off your personality, remember most of this are very superficial and a snapshot in a time and a place.
2. Fear should become your friend
We all need become unafraid of changing both careers and jobs or at least manage the fear so it becomes your adrenaline, your extra boost, a source of strength, not weakness.
You can reduce fear by planning for the change, e.g. taking evening courses, internship, work seven days a week (5 in one job, 2 in the new role), get a mentor in the role you want to be in. Take a vacation and go to a conference that concentrates on that role, check out if these people are the ones you want to be surrounded by.
It is not easy to learn new skills for which you are being paid for. You will often feel “stupid” and fustrated at yourself. Understand the basics of anger management, because your mistakes will make you angry at yourself more! Ask your partner(s), friend(s) or family(s) to keep an eye on you and help you adjust, reflect and process.
3. Choose your boss carefully
It does not matter how good you are, if your boss does not like you, the rest is irrelevent. You must choose a boss who can be both your coach and mentor. You are recruiting for you. You are looking for the best match for you. Let them worry about if you are good match for them. Your interviews should be 50/50 in terms of questions, yes you asking 50%.
Questions to ask:
- How many of your staff have you coached and mentored?
- Describe to me your coaching style?
- Can you give me examples of your staff that have outgrown their roles?
- Have any of your staff ended up in senior positions to you?
- If I fail project how will you react to your colleagues and me?
4. Understand how to build a new network
You will not be here for ever, find out who the good people are. You have a strong advantage over those who stay in one job or company, your network will grow faster, this gives you more opportunities for new roles. Again match people on your personality, not power/influence. Look for the people you want to work with again. Also look for the people who are really good at, what you are not.
5. Understand how to learn and grow your skills fast
This is very important. Get to really know how you learn best and expand your learn capabilities. You should not, use one learning model to understand this, you use many models (they all see different things). It may require an investment on your part, in the end understanding this will determine in part your success in each job and career. Accept that your will occasionally make a mistake or even fail.
Here are some learning style models:
- Honey & Mumford Learning Styles Questionnaire (Activist, Reflector, Theorist and Pragmatist)
- David Kolb’s model (Accommodating, Converging, Diverging and Assimilating)
- Neil Fleming’s VAK/VARK model (visual learners, auditory learners and kinesthetic learners)
- Grasha-Reichmann Learning Style Scale (avoidant, competitive, collaborative, dependent, independent and participative)
6. Grow both your leadership and followship abilities
Whilst we have media mythology that states that leaders are more important.
Leaders only exist if they have followers.
If an organisation expects you to serve as a slave for five years before you can have some leadership responsibilities move on, go work for a smaller growing organization, who offers opportunities.That said it is also important to occasionally work for larger organisations to understand how to work in one e.g. how bureaucratic systems work, how the culture of having several tiers of management, effects innovation and the impact policy decisions from on-high effect the person on the ground floor or customer facing.
In my career I have chosen to work in leadership and then not. It has accelerated my abilities in both. But it is not easy. It has taught me humility, patience, the ability to coach upwards and let others fail if need be. Sometimes you need to reinforce your roots, other times explore a branch. Growing upwards is not always the best choice.
7. Do not burn bridges
A lesson I learned from politics. You will fail, what people really respect is how you do it with humility and style and then come back and show people why you are good. You also never know who will be your allies in the future, occasionally you will have to forgive others and move on. Sometimes you will work out in hindsight it was you creating the problems.
8. You own your future
Plan your professional life. Work out where you think may want to be. Look at the skills, knowledge and experience you will need to acquire, to achieve each step. This plan should and will change as opportunities pop up. Reflect on each job, what did you like about it and what did you not. Reflect on your bosses, what was good and not, how will this improve both your leadership and followship abilities. How specifically are you going to grow, what books, courses, conferences will you attend? Which personality tests will you pay for.
Make a plan, but stay on your toes and change as you learn.
Do not let your manager or HR “talent manage” you. They care about their needs or the organizations needs not yours. Of course listen to their advice, but check in with their motivation. Yes ask them!
Most talent management and skills databases systems are simply shit. They are limited by traditional concepts of the education you have received and the job titles you have had. They are predicting your future by looking at your past. Idiots. Just imagine if we limited the human races future on the past, so why do we do it for every individual. Your past could be a reflection of your parents, the financial place you have come from, if you were teased at school, things that as an adult you can choose to move on from.
Even currently online resumes miss the point, how limited in expression and in understanding the professional needs of a human, even from an organisation perspective they are limited in use.
This simply waste of human potential, angers me so much, it is in part why I founded Professional You and why in time I will blow this shit into the past.
This has become my flame, the thing I will build all the skills I need towards, the types of people I will hunt for to help me with this mission. And if I fail it would be for a cause I believe in.
My path is clear, I understand the full grown tree that I need to grow, in myself. This clarity took many roles, many careers, many failures and success.
I hope this post helps you find some of your tree, or helps you on your journey. Please share your learnings, so I can learn from you 🙂