From Secretary to Software Developer: The Hard Way
medium.com
medium.com
Back before developers were perceived as 'rich' and 'pampered' there were people who were fascinated by computers and spent all their time playing with them and were called 'nerds.' Then it became "cool" to be a developer or "you can get rich as a developer at a startup!" and then you get people who don't care at all about computers and really never have, working as developers.
My litmus test is often to ask someone when they show me a solution, "what other solutions did you consider?" If they have wandered around looking at different ways to attack the problem they are more typically 'nerd' type developers, if their response is "none, this works so I went with it, moving on." they are often just working a day job. Watching the two types of people from the late 90's to today, the people in it for the money burn out much more frequently.
I used to be snooty about this too until I had a member join one of my teams who is exactly this type of person... Treats it like a day job, and absolutely rips through well-defined coding tasks as long as I do the general solution-finding and lay the architectural groundwork ahead of time. They don't burn out either, because it's just work to them and they take regular vacations.
They're not my go-to for solving architectural-type problems (solution-finding as you call it), but I'm OK with that because their strengths lie elsewhere in terms of discipline, focus, training JR team members in coding practices, knowledge of SW project process, etc. Every team needs its brick-layers who can work hard and follow blueprints really well, and not all of those brick-layers are going to be architects. One of my biggest work-related lessons out of 2016 really.
I often use this argument in situations where people are discussing system architecture.
Where's the vacation shaming?
I also think having worked as a freelancer made me appreciate the business side a lot more, which made me consider when to be pragmatic and when innovation or more creative thinking might be worth it.
My inner nerd is as strong as ever but I don't like to waste time.
Love the inner nerd phrase. I'm 63 and love wasting time now because when I do my brain works on the problem(s) at had and I write better code or create a better architecture when I get to it.
Less is more.
Slow down to speed up. then you get people who don't care at all about computers
and really never have, working as developers
You can say this about any profession though. Just look at the medical field. Some MDs have "true passion" but a lot have chosen this path because it pays well and comes with high status. At least that's what my personal experience suggests.This was true as late as in the 1980s. Before Gates, nobody rich was also a programmer. People like Ross Perot were not programmers.
Whatevs about it "being cool". I can certainly understand being interested in computers, but ... it's hardly what the cool kids do, what with they Camaros and 6x9 speakers and 8-track tape :)
And sometimes you just have to shut up and ship.
This is great for practical people -- less theory, more real world experience. But there is a major downside: If you didn't go to high school, you are not allowed to go to university without first completing preparatory courses that can take years.
There is also an upside: If you've worked for at least 4 years, and are under 30 years old, you automatically qualify for "Selbsterhalterstipendium", which is around 700€ per month to cover your cost of living while studying at university (you don't have to pay this back, and there also is no tuition)
I got to leave school early, work the internship I had already found, develop professional skills, and get paid. The only requirements for the program (for school credit) were to log hours and write a few essays.
You likely pay taxes....
No qualitative judgment here, except against a view that conflates "no explicit costs" with "no costs".
For instance, if a worker loses their job and wants to retrain, one policy (that of the united states) forces them at the worst possible time to take on additional debt, and one (that of austria) socializes the cost so they can more easily find work in the future. I'm not an economist, so I don't know the actual effects, but I wouldn't be surprised if the austrian approach would help US rural manufacturing communities a lot to our collective benefit.
You are arguing that the costs are worth it. Great. I don't want to have that conversation online again. You have acknowledged that there are costs. We are in agreement.
I'll pull it out again: "you don't have to pay this back, and also there is no tuition"
That's all I'm responding to.
But in the 2000's sometime, our glorious politicians decided that it was "unfair" that students who chose the vocational programmes couldn't go straight to university, so they were all changed, a lot more theoretical subjects were added, such that everyone would be eligible for college.
Naturally, a complete disaster, because the kids who previously chose vocational programmes because they were really tired of school and wanted to do something else, didn't do well in the new programmes and started flunking out en-masse instead.
I hear there's talk of going back to the old model again, but that's a decade or two "lost", because of political short-sightedness.
Yes, it's better to get your population college-educated than not, but you can't force people to do it. If people want to quit studying after elementary or high-school, let them! And if they want to go back to school after a few years, take them in again!
Not everyone can go to college, and not everyone needs to. Having a well-educated population is different from having a lot of college degrees. Alas, many politicians see it as "equality" that everyone's pushed with college-type qualifications. The only possible result is that it just lowers the bar and gives us more drop-outs and frustrated people.
You have to pay it back, if you fail in your courses.
That's from their page, for me this looks like you have to pay it back if you, for example got bad grades, in fact I can ensure you, that the limit is 50%, if you screw up in more than 50% of your courses, you are done.
In general, you need to complete around 50% of your courses to continue receiving the stipend next year, but you only need to pay it back if you drop out in the first year and have completed less than 25% of the courses. (Exact numbers depend on the type of program you attend)
Details are here: https://www.stipendium.at/studienfoerderung/studienbeihilfe/... https://www.stipendium.at/studienfoerderung/studienbeihilfe/...
It's funny though, for me an education in computing was the practical thing. I have a science degree too but I had next to no intention of being a professional scientist.
It wasn't until I moved out and started paying my own bills that they realised I might have been on to something. Essentially, my parents believed computers were for video games, a tool for kids to have fun. Even when I showed interest in areas like programming or graphic design.
In the trades, there are the general contractors who submitted the lowest bids and hire nothing but the lowest bidders. Everything is rushed, and the poorly crafted McMansions are the result.
Then there are the true craftsman. The dudes who stop every few minutes on the way to their job site to point out the sloppy, incorrect work to the younger guys. And you want to talk about "code review"? These dudes would relentlessly hammer the methods you used for any task, to ensure you did it efficiently and cleanly. Most people, for instance, have no idea how to efficiently use a shovel to dig a deep hole. There is a technique to it that makes it much easier, faster, and less tiring. Abstract that up to every single task on a construction site and you can begin to understand what these folks knew.
Of course, the majority of construction jobs nowadays will have you working for one of the "quick and dirty" companies. Even if you are a true craftsman, you will be at least somewhat surrounded by sloppy workers who never learn proper technique.
It's kind of like looking at code written by the really bad outsourcing companies who hire overly specialized people who only know recipes.
This makes me suspect you haven't had much exposure to trades. Getting good... really good... at welding, or cabinetry, or stairbuilding, takes at least as much dedication and skill as getting good at programming.
Note that there are plenty of programming jobs and tasks that are boring, repetitive, easy to do, and of little impact to the underlying system, that really need to be done by human. Things along the lines of modifying a report, extracting some data on a request from other departments, or adding a button to an Android application.
Somebody still needs to do them, because they're often virtually impossible to automate away, but you don't want to waste a really good programmer on something like that, and a really good programmer usually will not want to do them either.
We are able to teach basic math to everyone, if badly at that. I doubt programming is such big of a jump.
That attitude certainly explains a fair few 'legacy' systems I've seen.
Also, no shame to work a trade job at all. Not sure where people get that idea?!
So, you've worked from Excel to GUI's to databases to web stuff. You plan on trying a new paradigm of programming or what for the next level?
Note: Also cool you did karate on the side. I got my start in DOS apps (QBASIC), doing Windows apps in VB6 in mundane, forced position, and karate on the side. Built new things in between assignments, including learning heavyweight stuff, because I was bored with VB or too lazy for some tedious task. The similarities in where we started probably added to my enjoyment of it. Also, I learned a new way to do a frown in text. I'm sure some tech project or new JS framework on HN will give me a use for it in near future. ;)
Including I think in programming when trying to solve problems or especially debugging failures that lead others' libraries you just had to use.
I worked with a guy who came through a bootcamp. Before he did it, he'd learned enough PHP to build basic sites, so he didn't come in cold. In the bootcamp, he learned Rails, and proper development habits like TDD and source control. He was a good junior developer when he started, and with two or three years of work at Pivotal Labs under his belt, he's a good journeyman developer. He taught me a lot of what i know about iOS development!
However, he mentioned that a lot of other people who came through the bootcamp with him have gone on to work at quite low-skill 'chop shop' web agencies, where they're mostly slinging HTML and CSS to match a photoshop drawing, rather than doing real programming as such. So, it doesn't work for everyone.
8 - 12 weeks spending 8 hours a day in a classroom is between 320 hours and 480 hours learning time, plus whatever additional effort the student puts in during evenings and weekends. It's plausible that a 12 week bootcamp could equate to 1000 hours of structured development time with a decent mentor. There are 3 year CS degrees that give a student far less.
But in general I agree with you that there's a big jump from enthusiastic newb to experienced veteran. It took me a couple years to figure out all the stuff that came after knowing how to code.
While it's true that a lot of organizations still put a lot of value on a traditional education, the idea that going to a bootcamp qualifies you for work "within a small agency or working in house" just seems condescending. I work for a fortune 500 company and we hire bootcamp grads all the time, many of them have gone from apprentices to junior to mid level engineers in just a couple years, they're fucking fantastic.
I strongly feel that getting relevant applicable skills is essentially to starting a career in software engineering, and that more theoretical skills can then be acquired along the way. I've seen it several times.
I ran into the same sort of thing you did re: Delphi jobs. I was pretty sad, honestly, having started in the original Delphi days (version 1!) and going to 6 I had gotten pretty good at it...
Did you consider writing a stand alone app in Delphi that you could package and sell?
I had no app idea back then, that would have been great... Now I know better, I currently code in Swift and have a few app ideas :-)
Many administrative jobs probably offer a variety of paths that could lead to this. The person working can be someone who does the job as presented to them, or they can be the person who finds out what's needed and figures out the way to do it, learning along the way. An awful lot of programs are written because someone with the skills wants to automate something they find boring.
And tbh, you can really tell the quality of candidate of code camp vs 4 year degree. We hired a code camp candidate, just to see how it played out. It didn't work that well.
This isn't a comment about the author, as much as it's about something she said.
"Today you can take a lot of programming and Computer Sciences courses online. Everyone can be developer! There are also a lot of developer bootcamps: within 8–12 weeks you can become a developer."
This is a very dangerous line of thinking. Some people have convinced themselves that they are competent developers because they went to a bootcamp. And they might have just enough domain knowledge to convince a company with poor hiring practices that they're worth hiring.
I inherited a situation like that (this dev was hired a few weeks before me). After a few weeks it was painfully obvious that this guy was a detriment to the company because of his lack of coding ability. For reasons above my paygrade, we couldn't fire him immediately, and eventually we took all responsibilities away from him. We paid someone to come in and not do work for us.
I've interviewed dozens of developers since then. The one's coming from a bootcamp (or similar situation) have no computer science skills. They also have no problem solving skills; they're unable to break through the box that they were taught in. Most companies can't afford to hire a developer who knows one thing, and one thing only.
Now, we've had 4 year university graduates with experience in the field come in from top schools with degrees in CS. A (scarily) large percentage of them are incompetent as well, though not to the degree of the bootcampers. They're typically serviceable though.
That doesn't mean software dev is any easier. And, it's great that CS has such a low barrier to entry, and hopefully open source keeps it that way. Unfortunately the same trait makes it sound like "something anyone could do". Anyone hiring in the industry knows this is not the case.
The same trait results in 80% of those calling themselves "developers" being radically incompetent. It's one thing if you're electrical engineer that works daily in Cadence doing LVS and DRC, your license alone could cost 100k a year. Contrast that with someone who's git cloned react-starter and setup a website on AWS. The barrier to entry is so low for comp sci that credentials and accomplishments mean little, and interviews are absolutely brutal as a result.
So we get to where we are now. Interviews mean everything because degrees, references, and personal accomplishments mean so little in CS. The interview is your gateway rather than a solid degree program for other engineers.
How do we fix it? Making programming less accessible is obviously not the right way. We need a solid accreditation program like longer established professions have. CS is very new relatively (the first programmers are largely still alive, which is astounding). God help you if you go to an unaccredited electrical or mechanical engineering program, but the large majority of CS programs aren't accredited at all. Employers need to know which schools are good beyond the top 20 so they can hire effectively, and engineers need to know the same to decide which program they want to attend.
It's going to be a vicious cycle until that happens. Endless "CS programs" that don't teach you anything. Borderline scam bootcamps (some are good, but who?). Shaky employers grilling the hell out of anyone that comes through the doors. It's going to suck for everyone in the space until we have some formal definition of someone thats been properly trained. Take the bar exam for instance; In most states you can take it without any schooling, but only those truly knowledgeable will pass.
Someone that passed the bar? A lawyer. Passed your boards? A doctor. Passed CS degree program at school X? Who knows.
CS degrees are math degrees. They don't address the needs of the millions of Web Dev jobs out there.
I am not a computer scientist. I am a web developer and proud.
And any web developer accreditation program needs to address the needs of web development and NOT address the needs of computer science.
That's how we end up with projects like Preact, Inferno, etc.
Now does that mean you need to read the latest papers, and be a proper computer scientist? Nope. I find that reading papers from the 70s and 80s will take you pretty far. Just rip and reapply to new circumstances.
I am a web developer.
A lot of code that I write is 'good', but its hardly clever or original---it's a simple reapplication of old practiced done 100 times in desktop GUI applications, now applied to the web.
I found that a lot of old-school GUI developers never really crossed over to the web, so a lot of that knowledge has been lost to the community at large. You can still find it in text books though :)
The fact that CS is based on mathematic principles does not make it a math degree (although that did make things challenging for me at times).
But in order for it to be a useful degree you need to have math as supporting subject. This is the same as if you want to be molecular biologist you need to know a few semesters worth of chemistry otherwise you'd be given endless hard time, which you seem to understand.
I studied math at uni but because I haven't studied enough it always is so much harder to grok all important things in programming and CS. I would argue that it is a huge roadblock for anyone wanting to become any good at CS, but then again there's programming and there's 'programming'.
My university allowed me to make a custom degree that did not include calculus and didn't take my discrete math grade into account. I'm not what you would call "well-versed" in anything math related. I understand the theory for a few things I've looked into but that's as far as it goes.
In all of my career (~10 years) I've never once found myself at a disadvantage because of it, and it's never held me back from doing or understanding something.
I'm sure there are some areas of the field I'll have difficulty with (low level graphics, etc..), but even then I find that with enough hard work and an alternative approach to understanding the problem I can get things done.
I think they'res enough basic skills in common with different flavors of development that there could be a common set of core skills and concentrations or special accreditation for the unusual stuff
This has almost nothing to do with "software engineering" in practice, except that in Canada we generally call the people who write software "developers" (or "coders" or "programmers"). If a given company calls their developers "engineers", it's code for "we're an American company (and we don't respect the law (until APEG sues us))".
Canada is not on the list so that's why I'm asking.
Look, in Canada, as in the U.S., and to the best of my knowledge in most jurisdictions, there is a concept of professional accreditation. There are "professional organizations" that have memberships, and obviously the ruling on who is and is not a member is determined by the organization, which is all pretty normal. What's interesting is that national law enshrines certain branding around that organization. For example, in most countries, calling yourself a "doctor", without any justification, is a crime. In particular, representing yourself as a medical doctor, in a way which might mislead lay people, is "practicing without a license". In Canada, representing yourself as an "engineer" has similar rules around it. Compare with e.g. the UK situation, in which the word "engineer" itself is not legally protected, but if you call yourself a "Chartered Engineer" without the permission of Engineering Council UK, that's a crime.
To learn about the education process of an engineer, perhaps read https://en.wikipedia.org/wiki/Regulation_and_licensure_in_en... , a much more useful article than what you linked.
Almost completely unrelatedly, most academic disciplines that have related professional programs, such as medicine or law, have more than one stream of post-graduation education. One stream is intended to be primary or supplementary education for working practitioners in the field, the other for academic study in the field. For example a LL.B. (a.k.a. a J.D., as title inflation is commonplace) is typically taken after some kind of bachelor's degree, but is really more like a second bachelor's degree than it is like an M.A. or M.Sc. or Ph.D. or any other academic master's degree. If you want to do such an academic track, you might take a B.A., then an LL.B./J.D., then perhaps an LL.M. or LL.D. or Ph.D. in law. That's one bachelor's degree, one professional degree, and two academic graduate degrees.
Back to Engineering, one might take a B.Sc. (or B.Ap.Sc. or whatever) in Engineering, perhaps certify to become a professional engineer, and then one might choose to take additional formal education. If one is professionally-oriented, some schools might offer a professionally-oriented Master's degree for you. That is different from an academically-oriented Master's, and each school that offers both will have some way of disambiguating them, which is probably not fully standardized from school to school, even within Canada (or any other jurisdiction). Perhaps call one a Master's of Engineering, and the other a Master's of Science in Engineering, whatever. That's what your article was alluding to. As for its list, it only (non-exhaustively) lists countries with equivalent degrees by other names.
All of this stuff about graduate degrees is irrelevant to jrm2k6's comment and my reply thereto. jrm2k6 was mentioning that regulation about the word "engineerig" is stricter in Canada, and my reply was that that's mostly not relevant to the practice of those who write software.
I don't understand fully why so many people think that about coding, but not about other fields, like cooking/building/who knows.
click is a modern Python library. argparse is not.
I also don't think you much chance, to become a good developer if you are not practicing it at a younger age. It's just like with sports and languages.
I don't know if it was substantially different in the US.
Really, about the only thing that tripped me up reading that was the German quotation marks, and that's just because I'm an American :)
Congrats on your progress, and thanks for sharing your story. Good luck in the future!
I don't really think that the article, grammar mistakes or not, add to my horizon in any significant way. I've helped people in similar positions over the last few years, and understand well what goes in to it.
I hate to go on the defensive here, but snarky comments like this need to be rebuked. It seems to me that this is the type of comment that goes unchallenged because it feels good, but underneath the surface the assumptions are rather weak.
Thanks
https://youtube.com/watch?v=KOUobuGaY7U
Working with germans where all documentation is written in English, everyday there is a "cook with you" situation for me. But as I learn more German, I understand better the documentation :)