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?
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.
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.
good place to start, actually. Over the last few years, it seems l’ve been asked this question a lot. Why NOT finally try to answer it? And the question is … how.
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.
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. In the end, I only seriously considered 2 offers.
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. And my title, was…
& 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”.
is what I tell the uninitiated that I do… I am a software developer. But there are so many words and titles that will be used to describe software people throughout their careers.
fact, basic automata have existed since before the 5th century BC, there have always been people who required special knowledge to “program” these devices.
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
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.
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.
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”.
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
jobs. It’s not quite “lead” and not quite “senior” but encompasses qualities of both. Principal developers or engineers are considered a cut above, and probably work with several teams, in their area of specialty
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.
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.
career paths in software where coding is a sideline. Designer is one. There are many aspects to design, and I have to admit to having only dabbled enough to get by when I don’t have a real one on staff
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
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.
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.
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.
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.
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.
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.
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
*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?
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.
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” 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
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
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.
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. After all, that’s what “agile” means.
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.
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.
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. A passion that needs to find a way out
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
book… That took about 3 years, LOL, but it was still a useful process and it taught me even more. Gawd knows, it got me a whole slough of conference invitations to talk about it. And eventually I even got back to WIMBY to actually finish the app.
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.
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.
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.
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.
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.
wanted to give back. To start to make a dent in that diversity problem. I volunteered at one of the first Rails Bridge events, teaching Ruby on Rails to absolute novices. But that was in the US, at Madison Ruby.
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.
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...
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.
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.