Not everyone has the same understanding of just what a software engineering (or software development if you prefer) career is all about. Is it a profession? Is it a craft? Or is it your life's passion? Why not all three?
! I’m a Canadian freelance developer, trainer and mentor. I could say more, but... let’s just leave that for the moment, because I have this sneaking suspicion at the end of this talk, you all will know me better than most people.
When I was asked to keynote here at CUSEC, they said I could talk about “anything”. Ya sure. Ok, so I could retread one of my more popular talks... or... hey, I could finally give that talk I’ve pitched to about 15 conferences, and been turned down, every time.... or maybe something completely new.
I’m told that all great presentations start with… a question.
Software. That’s why we’re all here at CUSEC, right? I’ve been here, in the software biz, for my entire career, since I graduated from the University of Calgary in 1986 (yes, that’s 32 years ago for the temporal math challenged). That year, we had about 42% women in my graduating class of Computer Science. It seemed like the battle for equality of the sexes in this profession was over, and the future was bright for all of us.
Looking back, that was premature. But looking out here now, I see the promise of that future returning. I’d like to think that my being up here today helps demonstrate that it’s not just possible for a woman to have a successful software career, but it’s so much DAMN FUN to be in software today, and it’s open season. Anyone can do it. They just have to want to.
But this isn’t a talk about diversity, so… let’s carry on with the story.
Interviews As I was graduating, I interviewed with lots of companies that recruited at the university. Pro tip. If they show up to interview you, and seem surprised by anything on your resume, or not on your resume, as the case may be... you didn’t want to work there anyway.
Shell And the other was from Shell. In retrospect, seems like I made the right decision. There were times when I didn’t always think so.
So anyway, fresh out of school, I started at Shell. Seemed like a step backwards. We’d learned all the modern languages at school (C, PL/1, Simula, Prolog), but working with the engineering departments at Shell, and they were all about the Fortran.
APEGA We have APEGA - the association of professional engineers & geoscientists of Alberta.
APEGA’s primary role is to protect public interest and safety. APEGA serves the public interest by ensuring individuals and companies that practise engineering or geoscience in Alberta are competent, ethical, and professional. APEGA’s authority to regulate the professions comes from the Engineering and Geoscience Professions Act (EGP Act).
So yes, there is actually a law, that regulates the use of the word “engineer”.
but the Antikythera mechanism from the 1st century BC.
In fact, basic automata have existed since before the 5th century BC, there have always been people who required special knowledge to “program” these devices.
Analyst After I’d worked at Shell for a couple of years, I was promoted to “Analyst/Programmer”, which would seem to indicate somehow that the act of “programming” wasn’t lesser importance than the “analysing” of problems that were going to be solved by writing of programs.
As long as there are companies, there will be ladders of advancement
Junior The ladder of titles for “technical” stream people at Shell (and most large corporations) was “programmer/analyst”, “analyst/programmer”, “systems analyst”, “senior systems analyst”, “staff systems analyst” and finally “senior staff systems analyst”.
Now let’s think about that a bit…
There was an implication in these titles. The ones with “programmer” in the title were junior people.
Senior I was employed at Shell for almost 8 years, and was on the verge of “senior systems analyst” when I left. One certainly could not expect to reach the base staff level without at least 10 years of experience under ones’ hat.
Today, in smaller companies, you frequently see the bare junior/intermediate/senior, where 5 years of experience is almost always considered “senior”. I suspect this is the reason why I am constantly asked how one progresses in a software career, and how you can still BE a coder after 10, 15, 20 years, if one reaches the top “senior” after only 5.
Coder And yes, I just introduced yet another term.
Coder is a tag in far greater use today. Someone who writes code. While there doesn’t seem to be a lot of difference in the output of “coders” and “programmers”, today people prefer to be coders. “to code” seems to imply a higher pristege activity than “to program”.
Staff Staff still gets used in larger organizations. It’s a generic enough modifier that it can be applied across a wide range of professions, so that keeps it fresh.
It’s also implied that these people can “lead” a team of developers
Distinguished This is rarified territory now. You get called distinguished when your accomplishments are known far and wide, OUTSIDE your company or industry.
Fellow Fellow… is the elite of the elite. Their accomplishments have improved our industry in general. They are trusted researchers, working with full autonomy.
Ya, after Shell, I decided I’d never work for a large corporation again, so I’m never gonna be a “Fellow”. Maybe that’s a good thing.
Architect I might have missed a few titles along the way, but …there’s another way of naming used… not by a “ladder” of accomplishments, but by the kind work you perform.
Architect is one of these names, that is loaded and overloaded with meaning. Architects are regulated almost as extensively as engineers.
And of course, now there’s an implication that you no longer dirty your hands with actual coding, but simply think higher thoughts and draw lots of diagrams. ;-)
Not to worry. I was a senior architect for years, and still managed to keep my hands on the code.
DevOps DevOps. I’d argue that ops is still a separate speciality, but a good developer will have some ops expertise, just like picking up some design skills.
Systems Systems is a sub set (or is it a super set?) of Operations. Operations implies day-to-day stuff, while systems is more about crafting interrelated sets of services into a harmonious whole.
My husband (of 15 years, yesterday) is a systems and network operations guy. Thank heavens, I’ve managed to forget most of what I knew about systems. That’s why I keep him around, lol
Corporate how to scratch your way up the corporate ladder. So, we are talking about big companies. That’s how I started. Straight out of university into the multi-national oil & gas biz. It was an eye opener for sure.
Secure the thing about big corporations, is that they are fairly secure. Once you get in, get trained up in the corporate processes, they’ve invested a lot in you, as a professional.
Safe So, those big corporate jobs are pretty Safe. This means that you will often find a higher percentage of women in corporate development roles. This safety includes things like maternity leave, solid benefits, etc, that are quite appealing when you start thinking about taking a break to start a family, or need to take time to care for sick kids, aging parents, etc. These are burdens that fall, unfairly perhaps, on women more than men.
Further Education Large corporations also tend to have good programs for further education. Training budgets that need spending. They’ll sponsor you to speak at conferences, send you on job-related training, and generally level up their “professionals” with soft-skill courses like time management and public speaking.
Transition You will also find, if spending 20 or 30 years coding seems not so appealing after a few years at it, that big corp will happily transition you into new roles.
People Manager of people is the most straightforward way up the corporate ladder. You can even stay and manage some of your former team mates… this didn’t seem like something I wanted, but YMMV. It’s an easy transition for some to make from team lead to manager.
Little companies I got out of Shell, and started working for a leetle company called WNDX. You might notice I’m still working at WNDX. But the company has evolved, from a product company, to a professional services company, to my personal freelancing consultancy today.
Now with little companies, you have to start taking control of your own career, because no one will do it for you. If I wanted to be the best of the best, I’d have to start working on that myself.
Electrician I’m reasonably able to compare software with another “craft” / trade like electrician, because my brother, who was only 2 years older than I, followed this path.
Apprentice when you are talking about any craft or trade, you generally start out as an apprentice. Apprentices must put in a certain amount of time, both in real work sites, and in formal training. You must pass the courses of your formal training, and you must work for a master electrician, under the supervision of a master or journeyperson.
Now electrician takes approximately 4 years. First year apprentices aren’t allowed to do much of anything really technical, just boring stuff like pulling wires, and hooking up wall switches and outlets, which will all be supervised and inspected, but each year that goes by adds to their skills and capabilities.
Think about how that would compare to software while we continue …
I considered my time at Shell to be a more than adequate apprenticeship, in terms of on-the-job, and my degree certainly covered the formal training part.
Journeyperson So I was more than ready to act as a journeyperson.
The term of apprenticeship for an electrician is 4 years (four 12-month periods) including a minimum of 1560 hours of on-the-job training and 8 weeks of technical training in each of the first three years, and a minimum of 1440 hours of on-the-job training and 12 weeks of technical training in the fourth year.
Journeypersons are then certified to work, unsupervised. It is expected that they understand the electrical code, and why, if they perform work that isn’t up to code, they could kill someone.
Let’s continue pondering how that would compare to software
Master A master electrician must work as a journeyperson for *at least* another 3 years, and undergo an additional level of certifications. Once you have achieved master, you can pull electrical work permits…
So, it seems you need to have at least 7 years of work experience, before being in charge of electrical permit work… hmmmm.
From a software perspective, this would mean you could not bid on a software development project until you had 7 years of experience, two levels of certifications, and 36+ weeks of classroom education. Interesting, no?
Craftmaster Let us step back from our electrician metaphor, and look at a broader range of crafts, you will also find a position or title of Craftmaster.
These are the masters, who are so proficient at their craft, that they are sought out to teach, to demonstrate their craft to apprentices and journeypersons.
Masters So we look to the masters of the software craft.
And so I did. As I progressed, working for a small company, and eventually striking out on my own, I needed to “level up” in order to keep progressing (that is to say... charging people more money) in my craft
Pragmatic Programmer who, with his partner Andy Hunt, wrote the “Pragmatic Programmer” and was also the
writer of the book that brought Ruby from Japan into the West “Programming Ruby”.
For which I, personally, can never thank him enough. I encountered Ruby at a low point in my career, where I was actively seeking alternatives to coding. Ruby brought back some of the joy to my work, and I still use it today.
Anyway, Dave and Andy went on to found the Pragmatic Book Store, which has done an excellent job disrupting the traditional publishing model for technical books
Corey Haines Experienced developers, looking to hone their skills, and improve their understanding of the craft of software could do worse than to look to Corey Haines.
He literally “journeyed” around the world, looking for projects to work on and masters to learn from
Code Retreats are amazing one day events, and make coders think different, poke holes in your preconceived notions, and broaden your coding perspectives. Every year in November we have the Global Day of Code Retreat. Consider looking one up, and attending if you are feeling stale.
Agile I’ve worked on projects using one or another form of all of these, and I can safely say... there is no one true way that works for every team or every product, 100% of the time. You need to just start, and if you have a bad fit, be flexible enough to change.
Again, no one language or language form is sufficient to solve every problem. Too many developers fall victim to hammer/nail syndrome, or shiny object syndrome. Different classes of problems need to be solved differently. I’ve learned to find the right tool for my problems.
Microsoft MVP TeamB was a lot like MS MVP, but existed long before the MVP program came along. In fact, the MVP program, when it started, was based in no small part on TeamB.
Volunteer Volunteering ones’ time to help other coders. To answer the questions, and help the newbies.
One can become an expert programmer, without ever achieving true mastery. Mastery is what comes after you start teaching others. At which point you start to get a good handle on HOW MUCH YOU STILL HAVE TO LEARN.
What passion comes down to after perfecting your craft (or rather acknowledging that you will never ever perfect it, but can only keep learning and improving) is that you develop a passion for it.
WIMBY For many years, I worked on (and am still working on) an app called WIMBY. It’s gone through about 3 iterations now. Wells In My Back Yard. I’ve given MULTIPLE conference talks based on WIMBY. On what it means, and what it meant to work on, and what it taught me to work on it.
Some of the problems I needed to solve to create the WIMBY app I envisioned were quite difficult and time consuming, and it took me weeks to figure it all out, so I figured all that research I did… it would be a CRIMINAL WASTE just to file it and forget it
Teaching Now about teaching… I dabbled in teaching right from the very early days, when I was a teaching assistant at university. Over the years, I have taken many courses, some paid by my employers, but later on I educated myself.
And eventually I took that next step of mastery: to teach.
Rails Workshops Created a series of well received workshops. Rails for Real Developers, Rails 4 iOS Developers, RubyMotion for Rails Developers
I’ve taught these workshops to a local audience in my former home of Calgary, and taken them around the world, teaching at RubyConfAU, NSScotland, and RailsConf in Phoenix.
Rails for Real Developers Created a series of well received workshops. Rails for Real Developers, Rails 4 iOS Developers, RubyMotion for Rails Developers
I’ve taught these workshops to a local audience in my former home of Calgary, and taken them around the world, teaching at RubyConfAU, NSScotland, and RailsConf in Phoenix.
Rails for iOS Developers Created a series of well received workshops. Rails for Real Developers, Rails 4 iOS Developers, RubyMotion for Rails Developers
I’ve taught these workshops to a local audience in my former home of Calgary, and taken them around the world, teaching at RubyConfAU, NSScotland, and RailsConf in Phoenix.
RubyMotion for Rails Developers Created a series of well received workshops. Rails for Real Developers, Rails 4 iOS Developers, RubyMotion for Rails Developers
I’ve taught these workshops to a local audience in my former home of Calgary, and taken them around the world, teaching at RubyConfAU, NSScotland, and RailsConf in Phoenix.
Instructor Later as an instructor for the Ruby workshop, both for adults and for kids.
And if I thought I’d learned a lot, in the course of teaching other experienced developers, WOW, did I ever learn a lot more, teaching all those novices.
Chapter Lead And finally after I moved to Lethbridge, I started a chapter there. And found out that leading a chapter is a lot more like being a manager than I signed up for...
Still accepting applications for anyone who wants to take that Chapter over...
Destination Exploration The University of Lethbridge is big on outreach and fostering STEM education to girls in the community. I’ve volunteered through their DE program as an instructor at their Friday afternoon science club for middle school girls. Teaching 3d modelling and basic programming with robots.
WNDX School All of which eventually lead me to… starting my own online coding school, which I am just getting off the ground. There’s a lot of value in the CLC workshops, but they are mostly introductory. There needs to be a way forward from there. That’s what WNDX School is all about.
but my whole office was utterly enthralled with the re-freshed every 5 minutes pictures of my dog, hanging out in the living room of my townhouse, looking out the window.